Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • startuplab/courses/tjts5901-continuous-software-engineering/TJTS5901-K23_template
  • planet-of-the-apes/tjts-5901-apeuction
  • uunot-yliopiston-leivissa/tjts-5901-uunot
  • contain-the-cry/tjts-5901-auction-system
  • avengers/avengers
  • cse6/cse-6
  • 13th/13-sins-of-gitlab
  • fast-and-furious/fast-and-furious
  • back-to-the-future/delorean-auction
  • monty-pythons-the-meaning-of-life/the-meaning-of-life
  • team-atlantis/the-empire
  • code-with-the-wind/auction-project
  • the-pirates/the-pirates
  • do-the-right-thing/do-the-right-thing
  • inception/inception
  • the-social-network-syndicate/the-social-auction-network
  • team-the-hunt-for-red-october/tjts-5901-k-23-red-october
  • good-on-paper/good-paper-project
  • desperados/desperados
19 results
Show changes
Showing
with 2092 additions and 63 deletions
src/tjts5901/static/flags/fi_FI.png

5.77 KiB

src/tjts5901/static/flags/sv_SE.png

6.34 KiB

src/tjts5901/static/flags/tlh.png

7.75 KiB

File added
src/tjts5901/static/img/default-profile.png

77.1 KiB

/**
* Display message
*/
function showMessage(message, category="message", created_at=Date.now()) {
// Insert new toast
const html = document.querySelector("#message-toast").content.cloneNode(true);
html.classList += " " + category;
html.querySelector(".message").innerHTML = message;
html.querySelector("time.created-at").setAttribute("datetime", created_at);
ago = moment(created_at).fromNow();
html.querySelector("time.created-at").append(ago);
document.querySelector("#messages").append(html);
// Get the last inserted toast - the one we just appended
// and show it with bootsrap api
const toasts = document.querySelectorAll("#messages .toast");
const element = toasts[toasts.length-1];
let toast_options = {
'delay': 10000,
'autohide': false,
};
// Handle toast differenlty depending on category
switch(category) {
case "error":
element.classList += " bg-danger text-white"
toast_options['autohide'] = false;
break;
case "success":
element.classList += " bg-success text-white"
toast_options['autohide'] = true;
default:
break;
}
const toast = new bootstrap.Toast(element, toast_options);
toast.show();
}
/**
* When page is loaded, display notifications.
*/
window.addEventListener('load', function() {
// Populate notifications from the page first
let delay = 0;
notifications.forEach(msg => {
// Use delay as timeout to make them appear neatly.
setTimeout(() => showMessage(msg.message, msg.category, msg.created_at), delay += 150);
});
// Start timed loop to fetch new notifications from backend
setInterval(() => {
delay = 0;
// Fetch notifications from backend
fetch(NOTIFICATION_URL)
.then(response => response.json())
.then(data => {
data['notifications'].forEach(msg => {
setTimeout(() => showMessage(msg.message, msg.category, msg.created_at), delay += 150);
});
});
}, NOTIFICATION_WAIT_TIME);
})
/** Add style here **/
@font-face {
font-family: "Klingon";
src: url("fonts/klingon.ttf");
}
#locale-selector a {
background-repeat: no-repeat;
background-position: 2px 50%;
background-size: 18px 12px;
padding-left: 24px;
image-rendering: crisp-edges;
}
#locale-selector a[href$="locale=en_GB"] {
background-image: url('flags/en_GB.png');
}
#locale-selector a[href$="locale=fi_FI"] {
background-image: url('flags/fi_FI.png');
}
#locale-selector a[href$="locale=sv_SE"] {
background-image: url('flags/sv_SE.png');
}
#locale-selector a[href$="locale=tlh"] {
background-image: url('flags/tlh.png');
}
html[lang="tlh"] *, *[lang="tlh"] {
font-family: "Klingon", sans-serif !important;
}
......@@ -18,48 +18,82 @@
<section class="min-vh-100 d-flex align-items-center bg-secondary">
<div class="container">
<div class="row justify-content-center">
<div class="col-12 d-flex align-items-center justify-content-center">
<div class="card card-tertiary w-100 fmxw-400">
<div class="row">
<div class="col-3">
<h5>Testing?</h5>
<hr />
<p class="lead">
<style>
@keyframes eighty-eight-mph {
0% {
margin-right: -90%;
}
100% {
margin-right: 90%;
}
}
#test-login::after {
content: "🚗";
font-size: 2em;
margin-right: -90%;
right: 0;
animation-duration: 2s;
}
#test-login:active::after,
#test-login:focus::after {
animation-name: eighty-eight-mph;
margin-right: 90%;
}
</style>
Use <code class="bg-white lead">doc@ebrownindustries.org</code> and <code class="bg-white lead">greatscott</code> to log in with account that has performed purchases and sales.
<form action="{{ url_for('auth.login') }}" class="mt-4" method="POST">
<input type="hidden" name="email" value="doc@ebrownindustries.org">
<input type="hidden" name="password" value="greatscott">
<button id="test-login" type="submit" class="btn btn-block btn-primary" title="It's back to the future reference, not nazi reference. Fucking nazis.">Hit 88 mph</button>
</form>
</p>
</div>
<div class="col-6">
<div class="card card-tertiary w-100">
<div class="card-header text-center">
<span>Sign in to our platform</span>
<span>{{ _("Sign in to our platform") }}</span>
</div>
<div class="login-dialog-img"></div>
<div class="card-body">
<form action="{{ url_for('auth.login') }}" class="mt-4" method="POST">
<div class="form-group">
<label for="email" class="mb-2">Email</label>
<input name="email" id="email" type="email" class="form-control" placeholder="Your email"
<label for="email" class="mb-2">{{ _("Email") }}</label>
<input name="email" id="email" type="email" class="form-control" placeholder="{{_("Your email")}}"
required="">
</div>
<div class="form-group">
<div class="form-group">
<label for="password" class="mb-2">Password</label>
<label for="password" class="mb-2">{{ _("Password") }}</label>
<input name="password" id="password" type="password" class="form-control"
placeholder="Your password" required="">
placeholder="{{ _("Your password") }}" required="">
</div>
<div class="d-flex justify-content-between align-items-center mb-4">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox">
<input name="remember-me" class="form-check-input" type="checkbox">
<span class="form-check-x"></span>
<span class="form-check-sign"></span>
Remember me
{{ _("Remember me") }}
</label>
</div>
<p class="m-0"><a href="#" class="text-right">Lost password?</a></p>
<p class="m-0"><a href="#" class="text-right">{{_("Lost password?")}}</a></p>
</div>
</div>
<button type="submit" class="btn btn-block btn-primary">Login</button>
<button type="submit" class="btn btn-block btn-primary">{{_("Login")}}</button>
</form>
<div class="d-block d-sm-flex justify-content-center align-items-center mt-4">
<p class="font-weight-normal">
Not registered?
<a href="{{ url_for('auth.register') }}" class="font-weight-bold">Create an account</a>
{{_("Not registered?") }}
<a href="{{ url_for('auth.register') }}" class="font-weight-bold">{{ _("Create an account") }}</a>
</p>
</div>
</div>
......
{% extends 'base.html' %}
{% block header %}
<div class="container">
<h1>{% block title %}{{user|striptags}}'s' Profile Page{% endblock %}</h1>
</div>
{% endblock %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-sm-2 offset-sm-2">
<img src="{{ user.image_url }}" class="img-fluid" alt="{{_("Profile image for %(email)s", email=user.email)|e}}" style="max-width: 100%">
</div>
<div class="col-sm-6 profile-section">
<div class="card card-secondary">
<div class="card-header text-center">
{{ user }}
</div>
<div class="card-body">
<div class="form-group d-flex align-items-center justify-content-between">
<label for="default" class="mr-3">Email:</label>
<input id="default" type="text" class="form-control w-75" value="{{ user.email }}" readonly>
</div>
</div>
<div class="card-footer">
{% if current_user == user %}
<div class="btn-group" role="group">
<ahref="{{ url_for('items.sell') }}" class="btn btn-primary">{{ _("Sell an Item") }}</a>
</div>
<div class="btn-group" role="group">
{# Notice: I have omited the email -attribute here, and made "me" as default in auth.py for tokens page. #}
<a href="{{ url_for('auth.user_access_tokens') }}" class="btn btn-primary">{{ _("Tokens") }}</a>
</div>
<div class="btn-group" role="group">
<a href="{{ url_for('auth.logout') }}" class="btn btn-danger">{{ _("Logout") }} </a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<section class="row">
<div class="col-md-10 offset-md-1 purchases">
<h3> {{ _("My items") }} </h3>
<div class="container">
<div class="card">
{% for item in won_items %}
<article>
<header class="card-header">
<div class="row">
<div class="col-sm-3">
<h6>{{ _("Purchase date") }}</h5>
<p>{{ item.winning_bid.created_at|dateformat }}</p>
</div>
<div class="col-sm-3">
<h6>{{ _("Item ID") }}</h5>
<p class="text-truncate">{{ item.id }}</p>
</div>
<div class="col-md-2">
<h6>{{ _("Seller") }}</h5>
<p><a href="{{ url_for('auth.profile', email=item.seller.email) }}">{{ item.seller }}</a></p>
</div>
</header>
<main class="card-body">
<div class="row">
<div class="col-sm-2">
<img src="{{ item.image_url }}" class="img-fluid" alt="{{_("Product image for %(title)s", title=item.title)|e}}">
</div>
<div class="col-sm-6">
<h5>{{ item.title }}</h5>
<p>{{ item.description|truncate(1000) }}</p>
</div>
<div class="col-sm-1 text-nowrap ">
<h6>{{ _("Price") }}</h5>
<p>${{ item.winning_bid.amount|localcurrency }}</p>
</div>
<div class="col-sm-3 actions">
<form>
<div>
<button type="submit" class="btn btn-primary border-dark btn-block">{{_("Pay")}}</button>
</div>
<div>
<a href="{{ url_for('items.view', id=item.id) }}" class="btn btn-outline btn-block">{{_("View item")}}</a>
</div>
</form>
</div>
</main>
</article>
{% endfor %}
</div>
</div>
</div>
</section>
<div class="row">
<div class="col-sm-3"></div>
<div class="col-sm-6 auction-section">
<h3>Recent Auctions</h3>
<div class="card-deck">
{% for auction in items %}
<div class="card">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">{{ auction.title }}</h5>
<p class="card-text">{{ auction.description }}</p>
<p class="card-text">Starting Bid: ${{ auction.starting_bid }}</p>
</div>
<div class="card-footer">
{% if auction.is_open %}
{% if current_user == auction.seller %}
<a href="{{ url_for('items.update', id=auction.id) }}" class="btn btn-primary">Update</a>
{% else %}
<a href="{{ url_for('items.bid', id=auction.id) }}" class="btn btn-primary">Place a bid</a>
{% endif %}
{% else %}
<div class="text-muted">Auction is Closed</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>
<div class="col-sm-3"></div>
</div>
</div>
{% endblock %}
\ No newline at end of file
......@@ -21,25 +21,34 @@
<div class="col-12 d-flex align-items-center justify-content-center">
<div class="card card-tertiary w-100 fmxw-400">
<div class="card-header text-center">
<span>Register on our platform</span>
<span>{{ _("Register on our platform") }}</span>
</div>
<div class="login-dialog-img"></div>
<div class="card-body">
<form action="{{ url_for('auth.register') }}" method="POST" class="mt-4">
<input type="hidden" name="timezone" id="timezone">
<script>
function getTimezone() {
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone
document.getElementById('timezone').value = tz;
}
getTimezone();
</script>
<div class="form-group">
<label for="email" class="mb-2">Email</label>
<label for="email" class="mb-2">{{ _("Email") }}</label>
<input name="email" id="email" type="email" class="form-control" placeholder="Your email" required="">
</div>
<div class="form-group">
<div class="form-group">
<label for="password" class="mb-2">Password</label>
<label for="password" class="mb-2">{{ _("Password") }}</label>
<input name="password" id="password" type="password" class="form-control" placeholder="Your password" required="">
</div>
<div class="form-group">
<label for="confirmPassword" class="mb-2">Confirm password</label>
<label for="confirmPassword" class="mb-2">{{ _("Confirm password") }}</label>
<input name="password2" id="confirmPassword" type="password" class="form-control" placeholder="Confirm password"
required="">
</div>
......@@ -50,17 +59,17 @@
<input name="terms" class="form-check-input" type="checkbox">
<span class="form-check-x"></span>
<span class="form-check-sign"></span>
I agree to the <a href="#">terms and conditions</a>
{{ _("I agree to the %(terms)s", terms="<a href=\"#\">"|safe+_("terms and conditions")+"</a>"|safe) }}.
</label>
</div>
</div>
</div>
<button type="submit" class="btn btn-block btn-primary">Register account</button>
<button type="submit" class="btn btn-block btn-primary">{{ _("Register account") }}</button>
</form>
<div class="d-block d-sm-flex justify-content-center align-items-center mt-4">
<p class="font-weight-normal">
Already have an account?
<a href="./login.html" class="font-weight-bold">Login here</a>
{{ _("Already have an account?") }}
<a href="./login.html" class="font-weight-bold">{{ _("Login here") }}</a>
</p>
</div>
</div>
......
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Access tokens{% endblock %}</h1>
{% endblock %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-4">
<h4>{{_("Personal Access Tokens")}}</h4>
<p>
{%trans%}Personal access tokens allow third-party services to authenticate with our application on your behalf.{%endtrans%}
</p>
</div>
<div class="col-md-8">
{% if token %}
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">{{_("Your new personal access token")}}</h4>
<p>
{%trans%}Your new personal access token is shown below. You may now use this token to make API requests.{%endtrans%}
</p>
<div class="input-group mb-3">
<input type="text" class="form-control" id="token" value="{{ token.token }}" readonly>
<button class="btn btn-outline-secondary" type="button" id="copy-token" onclick="copyToken()">{{_("Copy")}}</button>
<script>
function copyToken() {
var copyText = document.getElementById("token");
copyText.select();
copyText.setSelectionRange(0, 99999);
document.execCommand("copy");
}
</script>
</div>
<small class="form-text text-muted">{{ _("Make sure to copy your new token now. You won't be able to see it again!") }}</small>
<hr>
</div>
{% endif %}
<div class="card">
<div class="card-header">
<div class="text-center">{{ _("Create access token") }}</div>
</div>
<form action="{{url_for('auth.user_access_tokens', email='me')}}" method="post" class="card-body">
<div class="form-group">
<label for="name">{{ _("Name") }}</label>
<input type="text" class="form-control" name="name" id="name" placeholder="{{ _(" Enter token name") }}">
<div class="form-text text-muted">{{ _("Give your token a descriptive name so you can easily identify it in the future.") }}</div>
</div>
<div class="form-group">
<label class="form-check-label" for="expires">{{ _("Expires at") }}</label>
<input type="date" class="form-control" name="expires" id="expires">
<div class="form-text text-muted">{{ _("Leave blank to never expire.") }}</div>
</div>
<button type="submit" class="btn btn-primary">{{ _("Create access token") }}</button>
</form>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-8 offset-md-4">
<h2 class="text-center mb-4">{{ _("Active Access Tokens") }}</h2>
<table class="table table-striped">
<thead>
<tr>
<th>{{ _("Token name") }}</th>
<th>{{ _("Created") }}</th>
<th>{{ _("Last used") }}</th>
<th>{{ _("Expires") }}</th>
<th>{{ _("Actions") }}</th>
</tr>
</thead>
<tbody>
{% for access_token in tokens %}
<tr>
<td>{{ access_token.name }}</td>
<td>{{ access_token.created_at|dateformat }}</td>
<td>
{% if access_token.last_used_at %}
{{ access_token.last_used_at|dateformat }}
{% else %}{{ _("Never") }}
{% endif %}
</td>
<td>
{% if access_token.expires_at %}
{{ access_token.expires_at|dateformat }}
{% else %}{{ _("Never") }}
{% endif %}
</td>
<td>
<form action="{{ url_for('auth.delete_user_access_token', email='me', id=access_token.id) }}"
method="post">
<button type="submit" class="btn btn-danger">{{ _("Delete") }}</button>
</form>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
<!doctype html>
<html lang="en">
<html lang="{{get_locale()}}">
<head>
<title>{% block title %}{% endblock %} - {{ config['BRAND'] }}</title>
<!-- Required meta tags -->
......@@ -45,27 +45,39 @@
<div class="collapse navbar-collapse" id="navbarTogglerDemo03">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="{{ url_for('items.index') }}">Home</a>
<a class="nav-link" href="{{ url_for('items.index') }}">{{_("Home")}}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('items.sell') }}">Sell</a>
<a class="nav-link" href="{{ url_for('items.sell') }}">{{_("Sell")}}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">About</a>
<a class="nav-link" href="#">{{_("About")}}</a>
</li>
</ul>
<ul class="navbar-nav">
{% if g.user %}
<li class="nav-item"><span>{{ g.user['username'] }}</span></li>
<li class="nav-item"><a href="{{ url_for('auth.logout') }}" class="nav-link">Log Out</a></li>
<li class="nav-item">
<div class="dropdown">
<button class="btn nav-link dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">
{{_("Language")}}
</button>
<div class="dropdown-menu" id="locale-selector">
{% for _, lang in locales.items() %}
<a class="dropdown-item {% if lang|lower == get_locale()|lower %}active{% endif %}" href="{{ url_for(request.endpoint, **dict(request.view_args, locale=lang)) }}">{{lang.display_name}}</a>
{% endfor %}
</div>
</div>
</li>
{% if current_user.is_authenticated %}
<li class="nav-item"><a href="{{ url_for('auth.profile', email="me") }}" class="nav-link">{{ current_user['email'] }}</a></li>
<li class="nav-item"><a href="{{ url_for('auth.logout') }}" class="nav-link">{{_("Log Out")}}</a></li>
{% else %}
<li class="nav-item"><a href="{{ url_for('auth.register') }}" class="nav-link">Register</a>
<li class="nav-item"><a href="{{ url_for('auth.login') }}" class="nav-link">Log In</a>
<li class="nav-item"><a href="{{ url_for('auth.register') }}" class="nav-link">{{_("Register")}}</a>
<li class="nav-item"><a href="{{ url_for('auth.login') }}" class="nav-link">{{_("Log In")}}</a>
{% endif %}
</ul>
<form class="form-inline">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-info my-2 my-sm-0" type="submit">Search</button>
<button class="btn btn-outline-info my-2 my-sm-0" type="submit">{{_("Search")}}</button>
</form>
</div>
</nav>
......@@ -76,17 +88,44 @@
{% endblock %}
</header>
<main class="content">
{% for message in get_flashed_messages() %}
<div class="container">
<div class="flash alert alert-primary">{{ message }}</div>
</div>
{% endfor %}
{% block content %}
<!-- MAIN CONTENT BLOCK MISSING -->
{% endblock %}
</main>
{# Flash messages #}
<div class="position-fixed top-0 right-0 p-3 m-5">
<div class="container toast-container" id="messages">
<template id="message-toast">
<!-- Template for flahed messages -->
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<strong class="mr-auto">{{ _("Message") }}</strong>
<small><time class="created-at"></time></small>
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="{{_("Close")}}">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body">
<span class="message"></span>
</div>
</div>
<div class="clearfix"></div>
</template>
</div>
</div>
<script>
// Timout is in milliseconds
const NOTIFICATION_WAIT_TIME = 30 * 1000;
const NOTIFICATION_URL = {{ url_for('notification.user_notifications')|tojson }};
var notifications = {{ get_notifications()|tojson }};
</script>
<script src="{{url_for('static', filename='notifications.js')}}"></script>
<!-- Moment library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<!-- Option 1: jQuery and Bootstrap Bundle (includes Popper) -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
......
......@@ -17,7 +17,7 @@
}
</style>
<div id="header-img" class="d-flex container-flex align-items-center justify-content-center">
<h1>{% block title %}Items on sale{% endblock %}</h1>
<h1>{% block title %}{{_("Items on sale")}}{% endblock %}</h1>
</div>
{% endblock %}
......@@ -28,28 +28,28 @@
<table class="table">
<thead class="thead-light">
<tr>
<th>Title</th>
<th>Description</th>
<th>Starting Bid</th>
<th>Seller</th>
<th>Created At</th>
<th>Closes At</th>
<th>{{ _("Title") }}</th>
<th>{{ _("Description") }}</th>
<th>{{ _("Starting Bid") }}</th>
<th>{{ _("Seller") }}</th>
<th>{{ _("Created At") }}</th>
<th>{{ _("Closes At") }}</th>
</tr>
</thead>
<tbody>
{% for item in items.items %}
<tr>
<td>
{{ item.title }}
{% if g.user == item.seller %}
<a href="{{ url_for('items.view', id=item.id)}}">{{ item.title }}</a>
{% if current_user == item.seller %}
<a class="action btn btn-primary" href="{{ url_for('items.update', id=item['id']) }}">Edit</a>
{% endif %}
</td>
<td>{{ item.description }}</td>
<td>{{ item.starting_bid }}</td>
<td>{{ item.starting_bid|localcurrency }}</td>
<td>{{ item.seller.email }}</td>
<td>{{ item.created_at }}</td>
<td>{{ item.closes_at }}</td>
<td>{{ item.created_at|datetimeformat }}</td>
<td>{{ item.closes_at|datetimeformat }}</td>
</tr>
{% endfor %}
</tbody>
......@@ -70,4 +70,4 @@
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
{% endblock %}
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Sell an Item{% endblock %}</h1>
<h1>{% block title %}{{ _("Sell an Item")}}{% endblock %}</h1>
{% endblock %}
{% block content %}
......@@ -9,22 +9,41 @@
<div class="row">
<div class="col-md-6 offset-md-3">
<div class="card p-4">
<h3 class="text-center mb-4">Add Item</h3>
<h3 class="text-center mb-4">{{ _("Add Item") }}</h3>
<form method="post" action="{{ url_for('items.sell') }}">
<div class="form-group">
<label for="title">Title</label>
<label for="title">{{ _("Title") }}</label>
<input type="text" name="title" id="title" class="form-control" value="{{ request.form['title'] }}">
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{ _("Description") }}</label>
<textarea name="description" id="description" class="form-control">{{ request.form['body'] }}</textarea>
</div>
<div class="row">
<div class="form-group col-8">
<label for="starting_bid">{{ _("Starting Bid") }}</label>
<input type="number" name="starting_bid" id="starting_bid" min="0" class="form-control">
</div>
<div class="form-group col-4">
<label for="starting_bid">{{ _("Currency") }}</label>
<select name="currency" id="currency" class="form-control">
{% for code, name in currencies.items() %}
<option value="{{ code }}" {% if code == default_currency %}selected{% endif %}>{{ name }}</option>
{% endfor %}
</select>
</div>
</div>
{% if config['DEBUG'] %}
<div class="form-group">
<label for="starting_bid">Starting Bid</label>
<input type="number" name="starting_bid" id="starting_bid" min="0" class="form-control">
<input name="flash-sale" type="checkbox" id="flash-sale">
<label class="form-check-label" for="flash-sale">
{{_("Flash sale!")}}
</label>
</div>
{% endif %}
<div class="form-group">
<button class="btn btn-primary btn-block">Add to listing</button>
<button class="btn btn-primary btn-block">{{ _("Add to listing") }}</button>
</div>
</form>
</div>
......
......@@ -14,21 +14,21 @@
<form method="post" id="delete-form" action="{{ url_for('items.delete', id=item.id) }}"></form>
<form method="post" id="update-form" action="{{ url_for('items.update', id=item.id) }}">
<div class="form-group">
<label for="title">Title</label>
<label for="title">{{ _("Title") }}</label>
<input type="text" name="title" id="title" class="form-control" value="{{item.title}}">
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{ _("Description") }}</label>
<textarea name="description" id="description" class="form-control">{{item.description}}</textarea>
</div>
<div class="form-group">
<label for="starting_price">Starting Price</label>
<label for="starting_price">{{ _("Starting Price") }}</label>
<input type="number" name="starting_bid" readonly id="starting_bid" min="0" class="form-control" value={{item.starting_bid}}>
</div>
<div class="form-group">
<div class="d-flex justify-content-end">
<button name="action" value="update" class="btn btn-primary border-dark">Update listing</button>
<button name="action" form="delete-form" value="delete" class="btn btn-danger" onclick="return confirm('Are you sure?');">Delete</button>
<button name="action" value="update" class="btn btn-primary border-dark">{{ _("Update listing") }}</button>
<button name="action" form="delete-form" value="delete" class="btn btn-danger" onclick="return confirm({{ _("Are you sure?")|tojson }});">{{ _("Delete") }}</button>
</div>
</div>
</form>
......
{% extends 'base.html' %}
{% block header %}
<div class="container">
<div class="d-flex align-items-center">
<h1 class="mr-auto">{% block title %}{{item.title}}{% endblock %}</h1>
</div>
</div>
{% endblock %}
{% block content %}
<div class="container">
<div class="card mb-3">
<div class="row no-gutters">
<div class="col-md-4">
{# Maybe on future we'll have image support. Feels like an important feature to have. #}
<img src="#" alt="...">
</div>
<div class="col-md-8">
<div class="card-body border-0">
<h5 class="card-title">{{ _("%(item)s by %(seller)s", item=item.title, seller=item.seller.email)}}</h5>
<p class="card-text">
{% if item.is_open %}
<div class="form-group row">
<div class="col-sm-4 col-form-label">
{# TODO: Follow dark patterns and change this to "time left" #}
{{ _("Closes at") }}
</div>
<div class="col-sm-8">
<time datetime="{{ item.closes_at.isoformat() }}">{{ item.closes_at|datetimeformat }}</time>
</div>
</div>
<div class="form-group row">
<div class="col-sm-4 col-form-label">
{{ _("Added at") }}
</div>
<div class="col-sm-8">
<time datetime="{{ item.created_at.isoformat() }}">{{ item.created_at|datetimeformat }}</time>
</div>
</div>
<hr /><!-- ------------------------------------------------ -->
<div class="form-group row">
<div class="col-sm-4 col-form-label">
{# TODO: Follow dark patterns and change this to "time left" #}
{{ _("Starting bid") }}
</div>
<div class="col-sm-8">
<strong>{{ min_bid|localcurrency }}</strong>
</div>
</div>
<form action="{{ url_for('items.bid', id=item.id)}}" method="post">
<input type="hidden" name="currency" value="{{ local_currency }}">
<div class="form-group row">
<label for="bid" class="col-sm-3 col-form-label">Your bid</label>
<div class="col-sm-6">
<label class="sr-only" for="bid">{{_("Bid amount")}}</label>
<div class="input-group">
<input type="number" name="amount" class="" id="bid" placeholder="Bid amount" required step="0.01">
</div>
<small class="form-text text-muted">
{{ _("Minimum bid is %(min_bid)s", min_bid=min_bid|localcurrency) }}
</small>
</div>
<div class="col-sm-3">
<button type="submit" class="btn btn-info btn-lg btn-block border-dark">{{_("Bid")}}</button>
</div>
</div>
</form>
{% elif item.closed and item.winning_bid.bidder == current_user %}
<div class="alert alert-success">
<strong>{{_("Congratulations!")}}</strong> {{ _("You won the bid!")}}
</div>
<form action="#" method="post">
<input type="hidden" name="id" value="{{ item.id }}">
<div class="row">
<div class="col-sm-6">
<div class="">
<h5 class="lead">{{_("Final price")}}</h5>
<p class="h4">{{ item.winning_bid.amount|localcurrency }}</p>
<div>
<small class="form-text text-muted">
{{ _("You won this item at %(closes_at)s", closes_at=item.winning_bid.created_at|datetimeformat) }}
</small>
</div>
</div>
</div>
<div class="col-sm-3">
<button type="submit" class="btn btn-info btn-lg btn-block border-dark">{{_("Pay")}}</button>
</div>
</div>
</form>
{% else %}
<div class="alert alert-info">
<strong>{{_("Item is no longer at sale.")}}</strong> {{ _("Next time, act faster!")}}
</div>
{% endif %}
</p>
<hr />
{# Contact seller buttons #}
<div class="row">
<div class="col">
<a href="mailto:{{item.seller.email}}" class="btn btn-primary btn-sm">{{_("%(icon)s Contact seller", icon="💌") }}</a>
<a href="tel:{{item.seller.phone}}" class="btn btn-primary btn-sm">{{_("%(icon)s Call seller", icon="☎️")}}</a>
</div>
</div>
</div>
</div>
<div clas="row">
<div class="col-md-12">
<p>{{item.description}}</p>
</div>
</div>
</div>
<div class="row justify-content-md-center">
<div class="col-md-auto">
<a href="https://twitter.com/intent/tweet?url={{ url_for('items.view', id=item.id, _external=True) | urlencode }}&text={{ "Check out this awesome and cheap item." | urlencode }}" class="btn btn-twitter" target="_blank" style="background-color: #1DA1F2; color:#fff;">
🐦
{{ _("Elon-senpai notice me!") }}
</a>
<a href="https://www.facebook.com/sharer.php?u={{ url_for('items.view', id=item.id, _external=True) | urlencode }}" target="_blank" class="btn btn-twitter" target="_blank" style="background-color: #4267B2; color:#fff;">
🌙
{{ _("Zuckdaddy, you so alpha!") }}
</a>
<a href="mailto:?subject={{ item.title | urlencode }}&body={{ url_for('items.view', id=item.id, _external=True) | urlencode }}" target="_blank" class="btn btn-primary" target="_blank">
📧
{{ _("Email to a friend") }}
</a>
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
<span title="{{ base_amount|e }}">{{ local_amount }}</span>
msgid ""
msgstr ""
"Project-Id-Version: TJTS5901-K23\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-02-19 12:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: fi\n"
"Language-Team: fi <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.11.0\n"
#: src/tjts5901/app.py:42
msgid "Hill Valley DMC dealership"
msgstr "Hill Valley DMC -liike"
#: src/tjts5901/app.py:78 tests/test_i18n.py:79 tests/test_i18n.py:103
msgid "Hello, World!"
msgstr "Hei Maailma!"
#: src/tjts5901/auth.py:255
msgid "Required field missing"
msgstr "Pakollinen kenttä puuttuu"
#: src/tjts5901/auth.py:258
#, python-format
msgid "Error creating token: %s"
msgstr "Virhe luotaessa tunnistetta: %s"
#: src/tjts5901/auth.py:260
#, python-format
msgid "Created token: %s"
msgstr "Luotu tunniste: %s"
#: src/tjts5901/items.py:187
#, python-format
msgid "Starting bid must be greater than %(amount)s."
msgstr "Huudon tulee olla vähintään %(amount)s"
#: src/tjts5901/items.py:203
msgid "Item listed successfully!"
msgstr "Tuote lisätty onnistuneesti!"
#: src/tjts5901/items.py:206
#, python-format
msgid "Error creating item: %(exc)s"
msgstr "Virhe luotaessa tuotetta: %(exc)s"
#: src/tjts5901/items.py:251
msgid "Congratulations! You won the auction!"
msgstr "Onnittelut! Voitit huutokaupan!"
#: src/tjts5901/items.py:253 src/tjts5901/items.py:423
msgid "This item is no longer on sale."
msgstr "Tämä tuote ei ole enää myynnissä"
#: src/tjts5901/items.py:256
msgid "This item is closing soon! Act now! Now! Now!"
msgstr "Tämä tuote sulkeutuu pian! Toimi nyt! Heti! Nyt!"
#: src/tjts5901/items.py:275
msgid "Title is required."
msgstr "Otsikko on pakollinen."
#: src/tjts5901/items.py:282
#, python-format
msgid "Error updating item: %(exc)s"
msgstr "Virhe päivitettäessä tuotetta: %(exc)s"
#: src/tjts5901/items.py:287
msgid "Item updated successfully!"
msgstr "Tuote päivitetty onnistuneesti!"
#: src/tjts5901/items.py:306
#, python-format
msgid "Error deleting item: %(exc)s"
msgstr "Virhe poistaessa tuotetta: %(exc)s"
#: src/tjts5901/items.py:308
msgid "Item deleted successfully!"
msgstr "Tuote poistettu onnistuneesti!"
#: src/tjts5901/items.py:334 src/tjts5901/items.py:417
#, python-format
msgid "Bid must be at least %(min_amount)s"
msgstr "Huudon tulee olla vähintään %(min_amount)s"
#: src/tjts5901/items.py:351 src/tjts5901/items.py:442
#, python-format
msgid "Error placing bid: %(exc)s"
msgstr "Virhe asettaessa huutoa: %(exc)s"
#: src/tjts5901/items.py:353
msgid "Bid placed successfully!"
msgstr "Huuto asetettu onnistuneesti!"
#: src/tjts5901/items.py:401
#, python-format
msgid "Missing required argument %(argname)s"
msgstr "Tarvittava argumentti %(argname)s puuttuu"
#: src/tjts5901/items.py:406
#, python-format
msgid "Invalid value for argument %(argname)s"
msgstr "Virheellinen arvo argumentille %(argname)s"
#: src/tjts5901/items.py:411
#, python-format
msgid "Error parsing argument %(argname)s: %(exc)s"
msgstr "Virhe käsiteltäessä argumenttia %(argname)s: %(exc)s"
#: src/tjts5901/templates/base.html:48
msgid "Home"
msgstr "Etusivu"
#: src/tjts5901/templates/base.html:51
msgid "Sell"
msgstr "Myy"
#: src/tjts5901/templates/base.html:54
msgid "About"
msgstr "Tietoa"
#: src/tjts5901/templates/base.html:61
msgid "Language"
msgstr "Kieli"
#: src/tjts5901/templates/base.html:72
msgid "Log Out"
msgstr "Kirjaudu ulos"
#: src/tjts5901/templates/base.html:74
msgid "Register"
msgstr "Rekisteröidy"
#: src/tjts5901/templates/base.html:75
msgid "Log In"
msgstr "Kirjaudu sisään"
#: src/tjts5901/templates/base.html:80
msgid "Search"
msgstr "Etsi"
#: src/tjts5901/templates/base.html:103
msgid "Message"
msgstr "Viesti"
#: src/tjts5901/templates/base.html:105
msgid "Close"
msgstr "Sulje"
#: src/tjts5901/templates/auth/login.html:25
msgid "Sign in to our platform"
msgstr "Kirjaudu palveluun"
#: src/tjts5901/templates/auth/login.html:32
#: src/tjts5901/templates/auth/register.html:31
msgid "Email"
msgstr "Sähköposti"
#: src/tjts5901/templates/auth/login.html:33
msgid "Your email"
msgstr "Sähköpostisi"
#: src/tjts5901/templates/auth/login.html:40
#: src/tjts5901/templates/auth/register.html:38
msgid "Password"
msgstr "Salasana"
#: src/tjts5901/templates/auth/login.html:42
msgid "Your password"
msgstr "Salasanasi"
#: src/tjts5901/templates/auth/login.html:51
msgid "Remember me"
msgstr "Muista minut"
#: src/tjts5901/templates/auth/login.html:54
msgid "Lost password?"
msgstr "Salasana unohtunut?"
#: src/tjts5901/templates/auth/login.html:57
msgid "Login"
msgstr "Kirjaudu"
#: src/tjts5901/templates/auth/login.html:61
msgid "Not registered?"
msgstr "Ei vielä tunnuksia?"
#: src/tjts5901/templates/auth/login.html:62
msgid "Create an account"
msgstr "Luo tunnus"
#: src/tjts5901/templates/auth/profile.html:37
msgid "My items"
msgstr ""
#: src/tjts5901/templates/auth/profile.html:44
msgid "Purchase date"
msgstr ""
#: src/tjts5901/templates/auth/profile.html:49
msgid "Item ID"
msgstr ""
#: src/tjts5901/templates/auth/profile.html:53
#: src/tjts5901/templates/items/index.html:34
msgid "Seller"
msgstr "Myyjä"
#: src/tjts5901/templates/auth/profile.html:59
#, python-format
msgid "Product image for %(title)s"
msgstr ""
#: src/tjts5901/templates/auth/register.html:24
msgid "Register on our platform"
msgstr "Rekisteröidy palveluun"
#: src/tjts5901/templates/auth/register.html:42
msgid "Confirm password"
msgstr "Vahvista salasana"
#: src/tjts5901/templates/auth/register.html:53
#, python-format
msgid "I agree to the %(terms)s"
msgstr "Hyväksyn %(terms)s"
#: src/tjts5901/templates/auth/register.html:53
msgid "terms and conditions"
msgstr "käyttöehdot"
#: src/tjts5901/templates/auth/register.html:58
msgid "Register account"
msgstr "Rekisteröi tunnus"
#: src/tjts5901/templates/auth/register.html:62
msgid "Already have an account?"
msgstr "Onko sinulla jo tunnus?"
#: src/tjts5901/templates/auth/register.html:63
msgid "Login here"
msgstr "Kirjaudu tästä"
#: src/tjts5901/templates/auth/tokens.html:11
msgid "Personal Access Tokens"
msgstr "Henkilökohtaiset poletit"
#: src/tjts5901/templates/auth/tokens.html:13
msgid ""
"Personal access tokens allow third-party services to authenticate with "
"our application on your behalf."
msgstr ""
"Henkilökohtaiset poletit mahdollistavat kolmannen osapuolen "
"palveluidenautentikoinnin sovelluksen puolesta."
#: src/tjts5901/templates/auth/tokens.html:19
msgid "Your new personal access token"
msgstr "Uusi henkilökohtainen poletti"
#: src/tjts5901/templates/auth/tokens.html:21
msgid ""
"Your new personal access token is shown below. You may now use this token"
" to make API requests."
msgstr ""
"Uusi henkilökohtainen poletti näkyy alla. Voit nyt käyttää tätä "
"polettiaAPI-pyyntöihin."
#: src/tjts5901/templates/auth/tokens.html:25
msgid "Copy"
msgstr "Kopioi"
#: src/tjts5901/templates/auth/tokens.html:35
msgid "Make sure to copy your new token now. You won't be able to see it again!"
msgstr "Varmista, että kopioit uuden poletin. Et voi nähdä sitä uudelleen!"
#: src/tjts5901/templates/auth/tokens.html:41
#: src/tjts5901/templates/auth/tokens.html:54
msgid "Create access token"
msgstr "Luo poletti"
#: src/tjts5901/templates/auth/tokens.html:45
msgid "Name"
msgstr "Nimi"
#: src/tjts5901/templates/auth/tokens.html:46
msgid " Enter token name"
msgstr "Anna poletin nimi"
#: src/tjts5901/templates/auth/tokens.html:47
msgid ""
"Give your token a descriptive name so you can easily identify it in the "
"future."
msgstr ""
"Anna poletille kuvaava nimi, jotta voit helposti tunnistaa sen "
"tulevaisuudessa."
#: src/tjts5901/templates/auth/tokens.html:50
msgid "Expires at"
msgstr "Vanhenee"
#: src/tjts5901/templates/auth/tokens.html:52
msgid "Leave blank to never expire."
msgstr "Jätä tyhjäksi, jos et halua poletin vanhentuman."
#: src/tjts5901/templates/auth/tokens.html:64
msgid "Active Access Tokens"
msgstr "Aktiiviset poletit"
#: src/tjts5901/templates/auth/tokens.html:68
msgid "Token name"
msgstr "Poletin nimi"
#: src/tjts5901/templates/auth/tokens.html:69
msgid "Created"
msgstr "Luotu"
#: src/tjts5901/templates/auth/tokens.html:70
msgid "Last used"
msgstr "Viimeksi käytetty"
#: src/tjts5901/templates/auth/tokens.html:71
msgid "Expires"
msgstr "Vanhenee"
#: src/tjts5901/templates/auth/tokens.html:72
msgid "Actions"
msgstr "Toiminnot"
#: src/tjts5901/templates/auth/tokens.html:83
#: src/tjts5901/templates/auth/tokens.html:89
msgid "Never"
msgstr "Ei koskaan"
#: src/tjts5901/templates/auth/tokens.html:95
#: src/tjts5901/templates/items/update.html:31
msgid "Delete"
msgstr "Poista"
#: src/tjts5901/templates/items/index.html:20
msgid "Items on sale"
msgstr "Myynnissä olevat tuotteet"
#: src/tjts5901/templates/items/index.html:31
#: src/tjts5901/templates/items/sell.html:15
#: src/tjts5901/templates/items/update.html:17
msgid "Title"
msgstr "Otsikko"
#: src/tjts5901/templates/items/index.html:32
#: src/tjts5901/templates/items/sell.html:19
#: src/tjts5901/templates/items/update.html:21
msgid "Description"
msgstr "Kuvaus"
#: src/tjts5901/templates/items/index.html:33
#: src/tjts5901/templates/items/sell.html:24
msgid "Starting Bid"
msgstr "Aloitushinta"
#: src/tjts5901/templates/items/index.html:35
msgid "Created At"
msgstr "Luotu"
#: src/tjts5901/templates/items/index.html:36
msgid "Closes At"
msgstr "Sulkeutuu"
#: src/tjts5901/templates/items/sell.html:4
msgid "Sell an Item"
msgstr "Lisää tuote myyntiin"
#: src/tjts5901/templates/items/sell.html:12
msgid "Add Item"
msgstr "Lisää tuote"
#: src/tjts5901/templates/items/sell.html:28
msgid "Currency"
msgstr "Valuutta"
#: src/tjts5901/templates/items/sell.html:40
msgid "Flash sale!"
msgstr "Salamakauppa!"
#: src/tjts5901/templates/items/sell.html:46
msgid "Add to listing"
msgstr "Lisää myyntiin"
#: src/tjts5901/templates/items/update.html:25
msgid "Starting Price"
msgstr "Aloitushinta"
#: src/tjts5901/templates/items/update.html:30
msgid "Update listing"
msgstr "Päivitä myynti-ilmoitus"
#: src/tjts5901/templates/items/update.html:31
msgid "Are you sure?"
msgstr "Oletko varma?"
#: src/tjts5901/templates/items/view.html:21
#, python-format
msgid "%(item)s by %(seller)s"
msgstr "%(item)s, myyjänä %(seller)s"
#: src/tjts5901/templates/items/view.html:27
msgid "Closes at"
msgstr "Sulkeutuu"
#: src/tjts5901/templates/items/view.html:35
msgid "Added at"
msgstr "Lisätty"
#: src/tjts5901/templates/items/view.html:45
msgid "Starting bid"
msgstr "Aloitushinta"
#: src/tjts5901/templates/items/view.html:56
msgid "Bid amount"
msgstr "Tarjous"
#: src/tjts5901/templates/items/view.html:62
#, python-format
msgid "Minimum bid is %(min_bid)s"
msgstr "Vähimmäistarjous on %(min_bid)s"
#: src/tjts5901/templates/items/view.html:66
msgid "Bid"
msgstr "Tarjoa"
#: src/tjts5901/templates/items/view.html:72
msgid "Congratulations!"
msgstr "Onnittelut!"
#: src/tjts5901/templates/items/view.html:72
msgid "You won the bid!"
msgstr "Voitit huutokisan!"
#: src/tjts5901/templates/items/view.html:80
msgid "Final price"
msgstr "Lopullinen hinta"
#: src/tjts5901/templates/items/view.html:84
#, python-format
msgid "You won this item at %(closes_at)s"
msgstr "Voitit tämän tuotteen %(closes_at)s"
#: src/tjts5901/templates/items/view.html:90
msgid "Pay"
msgstr "Maksa"
#: src/tjts5901/templates/items/view.html:97
msgid "Item is no longer at sale."
msgstr "Myynti on päättynyt."
#: src/tjts5901/templates/items/view.html:97
msgid "Next time, act faster!"
msgstr "Jatkossa toimi nopeammin!"
#: src/tjts5901/templates/items/view.html:105
#, python-format
msgid "%(icon)s Contact seller"
msgstr "%(icon)s Ota yhteyttä myyjään"
#: src/tjts5901/templates/items/view.html:106
#, python-format
msgid "%(icon)s Call seller"
msgstr "%(icon)s Soita myyjälle"
#: src/tjts5901/templates/items/view.html:121
msgid "Elon-senpai notice me!"
msgstr "Elon-senpai huomioi minut!"
#: src/tjts5901/templates/items/view.html:125
msgid "Zuckdaddy, you so alpha!"
msgstr "Zuckdaddy, olet niin alpha!"
#: src/tjts5901/templates/items/view.html:129
msgid "Email to a friend"
msgstr "Lähetä ystävälle"
#~ msgid "Your item was not sold"
#~ msgstr "Tuotetteesi ei käynyt kaupaksi"
#~ msgid "Your item <a href=\"%(url)s\">%(title)s</a> was not sold."
#~ msgstr "Tuotteesi <a href=\"%(url)s\">%(title)s</a> ei käynyt kaupaksi."
msgid ""
msgstr ""
"Project-Id-Version: TJTS5901-K23\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-02-19 12:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: sv\n"
"Language-Team: sv <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.11.0\n"
#: src/tjts5901/app.py:42
msgid "Hill Valley DMC dealership"
msgstr "Hill Valley DMC återförsäljare"
#: src/tjts5901/app.py:78 tests/test_i18n.py:79 tests/test_i18n.py:103
msgid "Hello, World!"
msgstr "Hej världen!"
#: src/tjts5901/auth.py:255
msgid "Required field missing"
msgstr "Obligatoriskt fält saknas"
#: src/tjts5901/auth.py:258
#, python-format
msgid "Error creating token: %s"
msgstr "Fel vid skapande av token: %s"
#: src/tjts5901/auth.py:260
#, python-format
msgid "Created token: %s"
msgstr "Skapad token: %s"
#: src/tjts5901/items.py:187
#, python-format
msgid "Starting bid must be greater than %(amount)s."
msgstr "Budet måste vara minst %(amount)s"
#: src/tjts5901/items.py:203
msgid "Item listed successfully!"
msgstr "Objektet listades framgångsrikt!"
#: src/tjts5901/items.py:206
#, python-format
msgid "Error creating item: %(exc)s"
msgstr "Fel vid skapandet av objektet: %(exc)s"
#: src/tjts5901/items.py:251
msgid "Congratulations! You won the auction!"
msgstr "Grattis! Du har vunnit auktionen!"
#: src/tjts5901/items.py:253 src/tjts5901/items.py:423
msgid "This item is no longer on sale."
msgstr "Denna vara är inte längre till rea."
#: src/tjts5901/items.py:256
msgid "This item is closing soon! Act now! Now! Now!"
msgstr "Detta objekt stänger snart! Handla nu! Nu! Nu!"
#: src/tjts5901/items.py:275
msgid "Title is required."
msgstr "Titel krävs."
#: src/tjts5901/items.py:282
#, python-format
msgid "Error updating item: %(exc)s"
msgstr "Fel vid uppdatering av objekt: %(exc)s"
#: src/tjts5901/items.py:287
msgid "Item updated successfully!"
msgstr "Artikeln har uppdaterats framgångsrikt!"
#: src/tjts5901/items.py:306
#, python-format
msgid "Error deleting item: %(exc)s"
msgstr "Fel vid radering av objekt: %(exc)s"
#: src/tjts5901/items.py:308
msgid "Item deleted successfully!"
msgstr "Föremålet har tagits bort framgångsrikt!"
#: src/tjts5901/items.py:334 src/tjts5901/items.py:417
#, python-format
msgid "Bid must be at least %(min_amount)s"
msgstr "Budet måste vara minst %(min_amount)s"
#: src/tjts5901/items.py:351 src/tjts5901/items.py:442
#, python-format
msgid "Error placing bid: %(exc)s"
msgstr "Fel i budgivningen: %(exc)s"
#: src/tjts5901/items.py:353
msgid "Bid placed successfully!"
msgstr "Budet har placerats framgångsrikt!"
#: src/tjts5901/items.py:401
#, python-format
msgid "Missing required argument %(argname)s"
msgstr "Det obligatoriska argumentet %(argname)s saknas"
#: src/tjts5901/items.py:406
#, python-format
msgid "Invalid value for argument %(argname)s"
msgstr "Ogiltigt värde för argument %(argname)s"
#: src/tjts5901/items.py:411
#, python-format
msgid "Error parsing argument %(argname)s: %(exc)s"
msgstr "Fel vid analys av argument %(argname)s: %(exc)s"
#: src/tjts5901/templates/base.html:48
msgid "Home"
msgstr "Hem"
#: src/tjts5901/templates/base.html:51
msgid "Sell"
msgstr "Sälja"
#: src/tjts5901/templates/base.html:54
msgid "About"
msgstr "Handla om"
#: src/tjts5901/templates/base.html:61
msgid "Language"
msgstr "Språk"
#: src/tjts5901/templates/base.html:72
msgid "Log Out"
msgstr "Logga ut"
#: src/tjts5901/templates/base.html:74
msgid "Register"
msgstr "Registrera"
#: src/tjts5901/templates/base.html:75
msgid "Log In"
msgstr "Logga in"
#: src/tjts5901/templates/base.html:80
msgid "Search"
msgstr "Sök"
#: src/tjts5901/templates/base.html:103
msgid "Message"
msgstr "Meddelande"
#: src/tjts5901/templates/base.html:105
msgid "Close"
msgstr "Stänga"
#: src/tjts5901/templates/auth/login.html:25
msgid "Sign in to our platform"
msgstr "Logga in på vår plattform"
#: src/tjts5901/templates/auth/login.html:32
#: src/tjts5901/templates/auth/register.html:31
msgid "Email"
msgstr "E-post"
#: src/tjts5901/templates/auth/login.html:33
msgid "Your email"
msgstr "Din email"
#: src/tjts5901/templates/auth/login.html:40
#: src/tjts5901/templates/auth/register.html:38
msgid "Password"
msgstr "Lösenord"
#: src/tjts5901/templates/auth/login.html:42
msgid "Your password"
msgstr "Ditt lösenord"
#: src/tjts5901/templates/auth/login.html:51
msgid "Remember me"
msgstr "Kom ihåg mig"
#: src/tjts5901/templates/auth/login.html:54
msgid "Lost password?"
msgstr "Glömt lösenord?"
#: src/tjts5901/templates/auth/login.html:57
msgid "Login"
msgstr "Logga in"
#: src/tjts5901/templates/auth/login.html:61
msgid "Not registered?"
msgstr "Inte registrerad?"
#: src/tjts5901/templates/auth/login.html:62
msgid "Create an account"
msgstr "Skapa ett konto"
#: src/tjts5901/templates/auth/profile.html:37
msgid "My items"
msgstr ""
#: src/tjts5901/templates/auth/profile.html:44
msgid "Purchase date"
msgstr ""
#: src/tjts5901/templates/auth/profile.html:49
msgid "Item ID"
msgstr ""
#: src/tjts5901/templates/auth/profile.html:53
#: src/tjts5901/templates/items/index.html:34
msgid "Seller"
msgstr "Säljare"
#: src/tjts5901/templates/auth/profile.html:59
#, python-format
msgid "Product image for %(title)s"
msgstr ""
#: src/tjts5901/templates/auth/register.html:24
msgid "Register on our platform"
msgstr "Registrera dig på vår plattform"
#: src/tjts5901/templates/auth/register.html:42
msgid "Confirm password"
msgstr "Bekräfta lösenord"
#: src/tjts5901/templates/auth/register.html:53
#, python-format
msgid "I agree to the %(terms)s"
msgstr "Jag godkänner %(terms)s"
#: src/tjts5901/templates/auth/register.html:53
msgid "terms and conditions"
msgstr "Villkor"
#: src/tjts5901/templates/auth/register.html:58
msgid "Register account"
msgstr "Registrera konto"
#: src/tjts5901/templates/auth/register.html:62
msgid "Already have an account?"
msgstr "Har du redan ett konto?"
#: src/tjts5901/templates/auth/register.html:63
msgid "Login here"
msgstr "Logga in här"
#: src/tjts5901/templates/auth/tokens.html:11
msgid "Personal Access Tokens"
msgstr "Personliga åtkomsttokens"
#: src/tjts5901/templates/auth/tokens.html:13
msgid ""
"Personal access tokens allow third-party services to authenticate with "
"our application on your behalf."
msgstr ""
"Personliga åtkomsttokens tillåter tredjepartstjänster att autentisera med"
" vår applikation å dina vägnar."
#: src/tjts5901/templates/auth/tokens.html:19
msgid "Your new personal access token"
msgstr "Din nya personliga åtkomsttoken"
#: src/tjts5901/templates/auth/tokens.html:21
msgid ""
"Your new personal access token is shown below. You may now use this token"
" to make API requests."
msgstr ""
"Din nya personliga åtkomsttoken visas nedan. Du kan nu använda denna "
"token för att göra API-förfrågningar."
#: src/tjts5901/templates/auth/tokens.html:25
msgid "Copy"
msgstr "Kopiera"
#: src/tjts5901/templates/auth/tokens.html:35
msgid "Make sure to copy your new token now. You won't be able to see it again!"
msgstr ""
"Se till att kopiera din nya token nu. Du kommer inte att kunna se den "
"igen!"
#: src/tjts5901/templates/auth/tokens.html:41
#: src/tjts5901/templates/auth/tokens.html:54
msgid "Create access token"
msgstr "Skapa åtkomsttoken"
#: src/tjts5901/templates/auth/tokens.html:45
msgid "Name"
msgstr "namn"
#: src/tjts5901/templates/auth/tokens.html:46
msgid " Enter token name"
msgstr " Ange tokennamn"
#: src/tjts5901/templates/auth/tokens.html:47
msgid ""
"Give your token a descriptive name so you can easily identify it in the "
"future."
msgstr ""
"Ge din token ett beskrivande namn så att du enkelt kan identifiera den i "
"framtiden."
#: src/tjts5901/templates/auth/tokens.html:50
msgid "Expires at"
msgstr "Går ut kl"
#: src/tjts5901/templates/auth/tokens.html:52
msgid "Leave blank to never expire."
msgstr "Lämna tomt för att aldrig upphöra."
#: src/tjts5901/templates/auth/tokens.html:64
msgid "Active Access Tokens"
msgstr "Active Access Tokens"
#: src/tjts5901/templates/auth/tokens.html:68
msgid "Token name"
msgstr "Tokennamn"
#: src/tjts5901/templates/auth/tokens.html:69
msgid "Created"
msgstr "Skapad"
#: src/tjts5901/templates/auth/tokens.html:70
msgid "Last used"
msgstr "Senast använd"
#: src/tjts5901/templates/auth/tokens.html:71
msgid "Expires"
msgstr "Upphör att gälla"
#: src/tjts5901/templates/auth/tokens.html:72
msgid "Actions"
msgstr "Handlingar"
#: src/tjts5901/templates/auth/tokens.html:83
#: src/tjts5901/templates/auth/tokens.html:89
msgid "Never"
msgstr "Aldrig"
#: src/tjts5901/templates/auth/tokens.html:95
#: src/tjts5901/templates/items/update.html:31
msgid "Delete"
msgstr "Radera"
#: src/tjts5901/templates/items/index.html:20
msgid "Items on sale"
msgstr "Föremål till försäljning"
#: src/tjts5901/templates/items/index.html:31
#: src/tjts5901/templates/items/sell.html:15
#: src/tjts5901/templates/items/update.html:17
msgid "Title"
msgstr "Titel"
#: src/tjts5901/templates/items/index.html:32
#: src/tjts5901/templates/items/sell.html:19
#: src/tjts5901/templates/items/update.html:21
msgid "Description"
msgstr "Beskrivning"
#: src/tjts5901/templates/items/index.html:33
#: src/tjts5901/templates/items/sell.html:24
msgid "Starting Bid"
msgstr "Startbud"
#: src/tjts5901/templates/items/index.html:35
msgid "Created At"
msgstr "Skapad vid"
#: src/tjts5901/templates/items/index.html:36
msgid "Closes At"
msgstr "Stänger kl"
#: src/tjts5901/templates/items/sell.html:4
msgid "Sell an Item"
msgstr "Sälja ett föremål"
#: src/tjts5901/templates/items/sell.html:12
msgid "Add Item"
msgstr "Lägg till vara"
#: src/tjts5901/templates/items/sell.html:28
msgid "Currency"
msgstr "Valuta"
#: src/tjts5901/templates/items/sell.html:40
msgid "Flash sale!"
msgstr "Flash rea!"
#: src/tjts5901/templates/items/sell.html:46
msgid "Add to listing"
msgstr "Lägg till i annonsen"
#: src/tjts5901/templates/items/update.html:25
msgid "Starting Price"
msgstr "Startpris"
#: src/tjts5901/templates/items/update.html:30
msgid "Update listing"
msgstr "Uppdatera lista"
#: src/tjts5901/templates/items/update.html:31
msgid "Are you sure?"
msgstr "Är du säker?"
#: src/tjts5901/templates/items/view.html:21
#, python-format
msgid "%(item)s by %(seller)s"
msgstr "%(item)s av %(seller)s"
#: src/tjts5901/templates/items/view.html:27
msgid "Closes at"
msgstr "Stänger kl."
#: src/tjts5901/templates/items/view.html:35
msgid "Added at"
msgstr "Tillagd på"
#: src/tjts5901/templates/items/view.html:45
msgid "Starting bid"
msgstr "Startbud"
#: src/tjts5901/templates/items/view.html:56
msgid "Bid amount"
msgstr "Budbelopp"
#: src/tjts5901/templates/items/view.html:62
#, python-format
msgid "Minimum bid is %(min_bid)s"
msgstr "Minsta bud är %(min_bid)s"
#: src/tjts5901/templates/items/view.html:66
msgid "Bid"
msgstr "Anbud"
#: src/tjts5901/templates/items/view.html:72
msgid "Congratulations!"
msgstr "Grattis!"
#: src/tjts5901/templates/items/view.html:72
msgid "You won the bid!"
msgstr "Du vann budet!"
#: src/tjts5901/templates/items/view.html:80
msgid "Final price"
msgstr "Slutgiltigt pris"
#: src/tjts5901/templates/items/view.html:84
#, python-format
msgid "You won this item at %(closes_at)s"
msgstr "Du vann detta föremål på %(closes_at)s"
#: src/tjts5901/templates/items/view.html:90
msgid "Pay"
msgstr "Betala"
#: src/tjts5901/templates/items/view.html:97
msgid "Item is no longer at sale."
msgstr "Föremålet är inte längre till salu."
#: src/tjts5901/templates/items/view.html:97
msgid "Next time, act faster!"
msgstr "Nästa gång, agera snabbare!"
#: src/tjts5901/templates/items/view.html:105
#, python-format
msgid "%(icon)s Contact seller"
msgstr "%(icon)s Kontakta säljaren"
#: src/tjts5901/templates/items/view.html:106
#, python-format
msgid "%(icon)s Call seller"
msgstr "%(icon)s Ring till säljaren"
#: src/tjts5901/templates/items/view.html:121
msgid "Elon-senpai notice me!"
msgstr "Elon-senpai lägger märke till mig!"
#: src/tjts5901/templates/items/view.html:125
msgid "Zuckdaddy, you so alpha!"
msgstr "Zuckdaddy, du är så alfa!"
#: src/tjts5901/templates/items/view.html:129
msgid "Email to a friend"
msgstr "Skicka e-post till en vän"
#~ msgid "Your item was not sold"
#~ msgstr "Din vara såldes inte"
#~ msgid "Your item <a href=\"%(url)s\">%(title)s</a> was not sold."
#~ msgstr "Din vara <a href=\"%(url)s\">%(title)s</a> såldes inte."
msgid ""
msgstr ""
"Project-Id-Version: tjts5901-k23\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-02-19 12:49+0000\n"
"PO-Revision-Date: 2023-02-20 11:30\n"
"Last-Translator: \n"
"Language-Team: Klingon\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.11.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: tjts5901-k23\n"
"X-Crowdin-Project-ID: 569091\n"
"X-Crowdin-Language: tlh-AA\n"
"X-Crowdin-File: messages.pot\n"
"X-Crowdin-File-ID: 3\n"
"Language: tlh_AA\n"
#: src/tjts5901/app.py:42
msgid "Hill Valley DMC dealership"
msgstr "qeylIS wo'"
#: src/tjts5901/app.py:78 tests/test_i18n.py:79 tests/test_i18n.py:103
msgid "Hello, World!"
msgstr "qo' vIvan!"
#: src/tjts5901/auth.py:255
msgid "Required field missing"
msgstr "qo'Daq ja'choH"
#: src/tjts5901/auth.py:258
#, python-format
msgid "Error creating token: %s"
msgstr "chenmoHwI'pu' %s"
#: src/tjts5901/auth.py:260
#, python-format
msgid "Created token: %s"
msgstr "ghojwI' vIHechtaHvIS. %s"
#: src/tjts5901/items.py:187
#, python-format
msgid "Starting bid must be greater than %(amount)s."
msgstr "vaj bIHvaD Hoch taqlu' %(amount)s."
#: src/tjts5901/items.py:203
msgid "Item listed successfully!"
msgstr "toH, chIch buSqu'!"
#: src/tjts5901/items.py:206
#, python-format
msgid "Error creating item: %(exc)s"
msgstr "jachtaHvIS. %(exc)s"
#: src/tjts5901/items.py:251
msgid "Congratulations! You won the auction!"
msgstr "tlhochqu' 'urmang! naDev Data'!"
#: src/tjts5901/items.py:253 src/tjts5901/items.py:423
msgid "This item is no longer on sale."
msgstr "muSHa'ghach'e' neH ghaH."
#: src/tjts5901/items.py:256
msgid "This item is closing soon! Act now! Now! Now!"
msgstr "QI'yaH, mIwvam! DaH yIvang! DaH! DaH!"
#: src/tjts5901/items.py:275
msgid "Title is required."
msgstr "Dochvetlh 'oH ghu'vam."
#: src/tjts5901/items.py:282
#, python-format
msgid "Error updating item: %(exc)s"
msgstr "'elpu'bogh. %(exc)s"
#: src/tjts5901/items.py:287
msgid "Item updated successfully!"
msgstr "DujtaHvIS chenpu'!"
#: src/tjts5901/items.py:306
#, python-format
msgid "Error deleting item: %(exc)s"
msgstr "'e' vIqaSmoHbej, %(exc)s"
#: src/tjts5901/items.py:308
msgid "Item deleted successfully!"
msgstr "chIch chavvam mIghqu'!"
#: src/tjts5901/items.py:334 src/tjts5901/items.py:417
#, python-format
msgid "Bid must be at least %(min_amount)s"
msgstr "vaj choq %(min_amount)s"
#: src/tjts5901/items.py:351 src/tjts5901/items.py:442
#, python-format
msgid "Error placing bid: %(exc)s"
msgstr "'ach ngeb tu'lu'bej. %(exc)s"
#: src/tjts5901/items.py:353
msgid "Bid placed successfully!"
msgstr "QI'yaH!"
#: src/tjts5901/items.py:401
#, python-format
msgid "Missing required argument %(argname)s"
msgstr "jav %(argname)s"
#: src/tjts5901/items.py:406
#, python-format
msgid "Invalid value for argument %(argname)s"
msgstr "ghe'orDaq QongDaq yInlu' %(argname)s"
#: src/tjts5901/items.py:411
#, python-format
msgid "Error parsing argument %(argname)s: %(exc)s"
msgstr "'orghenya'nganpu' %(argname)s: %(exc)s"
#: src/tjts5901/templates/base.html:48
msgid "Home"
msgstr "juH"
#: src/tjts5901/templates/base.html:51
msgid "Sell"
msgstr "ngev"
#: src/tjts5901/templates/base.html:54
msgid "About"
msgstr "'antu'"
#: src/tjts5901/templates/base.html:61
msgid "Language"
msgstr "Hol"
#: src/tjts5901/templates/base.html:72
msgid "Log Out"
msgstr "Qo'noS"
#: src/tjts5901/templates/base.html:74
msgid "Register"
msgstr "qech"
#: src/tjts5901/templates/base.html:75
msgid "Log In"
msgstr "QonoS"
#: src/tjts5901/templates/base.html:80
msgid "Search"
msgstr "SoQ"
#: src/tjts5901/templates/base.html:103
msgid "Message"
msgstr "QIn"
#: src/tjts5901/templates/base.html:105
msgid "Close"
msgstr "SoQmoH"
#: src/tjts5901/templates/auth/login.html:25
msgid "Sign in to our platform"
msgstr "'ej tIqDajDaq bIlengchu'taHvIS,"
#: src/tjts5901/templates/auth/login.html:32
#: src/tjts5901/templates/auth/register.html:31
msgid "Email"
msgstr "maSIl"
#: src/tjts5901/templates/auth/login.html:33
msgid "Your email"
msgstr "chIm"
#: src/tjts5901/templates/auth/login.html:40
#: src/tjts5901/templates/auth/register.html:38
msgid "Password"
msgstr "polonyuS"
#: src/tjts5901/templates/auth/login.html:42
msgid "Your password"
msgstr "puqlI'"
#: src/tjts5901/templates/auth/login.html:51
msgid "Remember me"
msgstr "HIqaw"
#: src/tjts5901/templates/auth/login.html:54
msgid "Lost password?"
msgstr "Hamlet, joHwI'?"
#: src/tjts5901/templates/auth/login.html:57
msgid "Login"
msgstr "QonoS"
#: src/tjts5901/templates/auth/login.html:61
msgid "Not registered?"
msgstr "qej'a'?"
#: src/tjts5901/templates/auth/login.html:62
msgid "Create an account"
msgstr "mIw'a' latlh yIchaw'chugh"
#: src/tjts5901/templates/auth/profile.html:37
msgid "My items"
msgstr "mu'aw'"
#: src/tjts5901/templates/auth/profile.html:44
msgid "Purchase date"
msgstr "Qujchuq"
#: src/tjts5901/templates/auth/profile.html:49
msgid "Item ID"
msgstr "jI'IL"
#: src/tjts5901/templates/auth/profile.html:53
#: src/tjts5901/templates/items/index.html:34
msgid "Seller"
msgstr "je'"
#: src/tjts5901/templates/auth/profile.html:59
#, python-format
msgid "Product image for %(title)s"
msgstr "lIHwI' %(title)s"
#: src/tjts5901/templates/auth/register.html:24
msgid "Register on our platform"
msgstr "qeylIS wIghoSqa'moH"
#: src/tjts5901/templates/auth/register.html:42
msgid "Confirm password"
msgstr "qorDu'"
#: src/tjts5901/templates/auth/register.html:53
#, python-format
msgid "I agree to the %(terms)s"
msgstr "jIHeghnIS %(terms)s"
#: src/tjts5901/templates/auth/register.html:53
msgid "terms and conditions"
msgstr "je' ghotpu'"
#: src/tjts5901/templates/auth/register.html:58
msgid "Register account"
msgstr "vaj DaH 'e' yImev"
#: src/tjts5901/templates/auth/register.html:62
msgid "Already have an account?"
msgstr "johpu'' bIH, qar'a'?"
#: src/tjts5901/templates/auth/register.html:63
msgid "Login here"
msgstr "naDev"
#: src/tjts5901/templates/auth/tokens.html:11
msgid "Personal Access Tokens"
msgstr "puqbe'wI'"
#: src/tjts5901/templates/auth/tokens.html:13
msgid "Personal access tokens allow third-party services to authenticate with our application on your behalf."
msgstr "tlhoy dabuSbe'chugh, vaj ghu' daja'chugh."
#: src/tjts5901/templates/auth/tokens.html:19
msgid "Your new personal access token"
msgstr "not wa'Hu' ramjep, not che'rup."
#: src/tjts5901/templates/auth/tokens.html:21
msgid "Your new personal access token is shown below. You may now use this token to make API requests."
msgstr "reH DuHbe'chugh qaSpa' DaTuQnIS. soHDaq pImmeyDaj choQoTmoHmeH mIw."
#: src/tjts5901/templates/auth/tokens.html:25
msgid "Copy"
msgstr "qoS"
#: src/tjts5901/templates/auth/tokens.html:35
msgid "Make sure to copy your new token now. You won't be able to see it again!"
msgstr "not SuQongtaHvIS DaQoyDI'. bISaHQo'!"
#: src/tjts5901/templates/auth/tokens.html:41
#: src/tjts5901/templates/auth/tokens.html:54
msgid "Create access token"
msgstr "yIsaH"
#: src/tjts5901/templates/auth/tokens.html:45
msgid "Name"
msgstr "pong"
#: src/tjts5901/templates/auth/tokens.html:46
msgid " Enter token name"
msgstr " qeylIS pong"
#: src/tjts5901/templates/auth/tokens.html:47
msgid "Give your token a descriptive name so you can easily identify it in the future."
msgstr "juplI' DaDalaHchu'mo' bIQongchu'"
#: src/tjts5901/templates/auth/tokens.html:50
msgid "Expires at"
msgstr "wo'"
#: src/tjts5901/templates/auth/tokens.html:52
msgid "Leave blank to never expire."
msgstr "chIch neH choraQ."
#: src/tjts5901/templates/auth/tokens.html:64
msgid "Active Access Tokens"
msgstr "ghojmoHwI''a'"
#: src/tjts5901/templates/auth/tokens.html:68
msgid "Token name"
msgstr "pong"
#: src/tjts5901/templates/auth/tokens.html:69
msgid "Created"
msgstr "Chen"
#: src/tjts5901/templates/auth/tokens.html:70
msgid "Last used"
msgstr "ghom'a'pu'qo'"
#: src/tjts5901/templates/auth/tokens.html:71
msgid "Expires"
msgstr "'eS"
#: src/tjts5901/templates/auth/tokens.html:72
msgid "Actions"
msgstr "ghuy'cha'"
#: src/tjts5901/templates/auth/tokens.html:83
#: src/tjts5901/templates/auth/tokens.html:89
msgid "Never"
msgstr "not"
#: src/tjts5901/templates/auth/tokens.html:95
#: src/tjts5901/templates/items/update.html:31
msgid "Delete"
msgstr "Dotlh"
#: src/tjts5901/templates/items/index.html:20
msgid "Items on sale"
msgstr "lubuSHa'ha'"
#: src/tjts5901/templates/items/index.html:31
#: src/tjts5901/templates/items/sell.html:15
#: src/tjts5901/templates/items/update.html:17
msgid "Title"
msgstr "mang"
#: src/tjts5901/templates/items/index.html:32
#: src/tjts5901/templates/items/sell.html:19
#: src/tjts5901/templates/items/update.html:21
msgid "Description"
msgstr "qurgh"
#: src/tjts5901/templates/items/index.html:33
#: src/tjts5901/templates/items/sell.html:24
msgid "Starting Bid"
msgstr "Si'Hutlh"
#: src/tjts5901/templates/items/index.html:35
msgid "Created At"
msgstr "chenmoH"
#: src/tjts5901/templates/items/index.html:36
msgid "Closes At"
msgstr "SaQ"
#: src/tjts5901/templates/items/sell.html:4
msgid "Sell an Item"
msgstr "'ach Hoch Doch"
#: src/tjts5901/templates/items/sell.html:12
msgid "Add Item"
msgstr "joH"
#: src/tjts5901/templates/items/sell.html:28
msgid "Currency"
msgstr "qeylIS"
#: src/tjts5901/templates/items/sell.html:40
msgid "Flash sale!"
msgstr "reH pumbogh ngevwI'!"
#: src/tjts5901/templates/items/sell.html:46
msgid "Add to listing"
msgstr "yotlhDaq ratlh"
#: src/tjts5901/templates/items/update.html:25
msgid "Starting Price"
msgstr "'ay' wa'"
#: src/tjts5901/templates/items/update.html:30
msgid "Update listing"
msgstr "yupma'"
#: src/tjts5901/templates/items/update.html:31
msgid "Are you sure?"
msgstr "bIbej'a'?"
#: src/tjts5901/templates/items/view.html:21
#, python-format
msgid "%(item)s by %(seller)s"
msgstr "%(item)s qonwI' %(seller)s"
#: src/tjts5901/templates/items/view.html:27
msgid "Closes at"
msgstr "qo'Daq yIjaH"
#: src/tjts5901/templates/items/view.html:35
msgid "Added at"
msgstr "nen"
#: src/tjts5901/templates/items/view.html:45
msgid "Starting bid"
msgstr "Horey'So"
#: src/tjts5901/templates/items/view.html:56
msgid "Bid amount"
msgstr "ghom"
#: src/tjts5901/templates/items/view.html:62
#, python-format
msgid "Minimum bid is %(min_bid)s"
msgstr "joq %(min_bid)s"
#: src/tjts5901/templates/items/view.html:66
msgid "Bid"
msgstr "cha'par"
#: src/tjts5901/templates/items/view.html:72
msgid "Congratulations!"
msgstr "tlhochqu' 'urmang!"
#: src/tjts5901/templates/items/view.html:72
msgid "You won the bid!"
msgstr "ta'meyDaq puqloD!"
#: src/tjts5901/templates/items/view.html:80
msgid "Final price"
msgstr "romuluS"
#: src/tjts5901/templates/items/view.html:84
#, python-format
msgid "You won this item at %(closes_at)s"
msgstr "'oH Daleghpu' %(closes_at)s"
#: src/tjts5901/templates/items/view.html:90
msgid "Pay"
msgstr "QI'tu'"
#: src/tjts5901/templates/items/view.html:97
msgid "Item is no longer at sale."
msgstr "chuQun ghaH."
#: src/tjts5901/templates/items/view.html:97
msgid "Next time, act faster!"
msgstr "poHlIj yImev!"
#: src/tjts5901/templates/items/view.html:105
#, python-format
msgid "%(icon)s Contact seller"
msgstr "%(icon)s yIche'meH"
#: src/tjts5901/templates/items/view.html:106
#, python-format
msgid "%(icon)s Call seller"
msgstr "%(icon)s mach"
#: src/tjts5901/templates/items/view.html:121
msgid "Elon-senpai notice me!"
msgstr "jIHvaD jatlhtaHvIS, jIHvaD puqloDpu'!"
#: src/tjts5901/templates/items/view.html:125
msgid "Zuckdaddy, you so alpha!"
msgstr "SoH, puqloDnIS!"
#: src/tjts5901/templates/items/view.html:129
msgid "Email to a friend"
msgstr "wo' Duypu'DI' yIlo'"