diff --git a/.isort.cfg b/.isort.cfg index 1a53a79fc47..c763521e001 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -1,2 +1,2 @@ [settings] -known_third_party = PIL,babel,bleach,bootstrap4,braintree,captcha,celery,dj_database_url,dj_email_url,django,django_babel,django_cache_url,django_countries,django_elasticsearch_dsl,django_filters,django_measurement,django_prices,django_prices_openexchangerates,django_prices_vatlayer,elasticsearch_dsl,faker,freezegun,geolite2,google_measurement_protocol,graphene,graphene_django,graphene_django_optimizer,graphql,graphql_jwt,graphql_relay,html5lib,i18naddress,impersonate,markdown,measurement,mptt,phonenumber_field,phonenumbers,prices,promise,pytest,razorpay,six,social_core,social_django,storages,stripe,templated_email,text_unidecode,versatileimagefield +known_third_party = PIL,babel,bleach,bootstrap4,braintree,captcha,celery,dj_database_url,dj_email_url,django,django_babel,django_cache_url,django_countries,django_elasticsearch_dsl,django_filters,django_measurement,django_prices,django_prices_openexchangerates,django_prices_vatlayer,elasticsearch_dsl,faker,freezegun,geolite2,google_measurement_protocol,graphene,graphene_django,graphene_django_optimizer,graphql,graphql_jwt,graphql_relay,html5lib,i18naddress,impersonate,markdown,measurement,mptt,phonenumber_field,phonenumbers,prices,promise,pytest,razorpay,requests,six,social_core,storages,stripe,templated_email,text_unidecode,versatileimagefield diff --git a/.plop/component/componentName.class.tsx.hbs b/.plop/component/componentName.class.tsx.hbs index b0199a4d575..7b40570d35e 100644 --- a/.plop/component/componentName.class.tsx.hbs +++ b/.plop/component/componentName.class.tsx.hbs @@ -6,7 +6,7 @@ import { WithStyles } from "@material-ui/core/styles"; {{/if}} -import * as React from "react"; +import React from "react"; export interface {{ properCase name }}Props { diff --git a/.plop/component/componentName.fc.tsx.hbs b/.plop/component/componentName.fc.tsx.hbs index 6b20edf47f4..7c7eb302227 100644 --- a/.plop/component/componentName.fc.tsx.hbs +++ b/.plop/component/componentName.fc.tsx.hbs @@ -6,7 +6,7 @@ import { WithStyles } from "@material-ui/core/styles"; {{/if}} -import * as React from "react"; +import React from "react"; export interface {{ properCase name }}Props { diff --git a/.plop/component/componentName.story.tsx.hbs b/.plop/component/componentName.story.tsx.hbs index 55bf29b73b8..94b91b75967 100644 --- a/.plop/component/componentName.story.tsx.hbs +++ b/.plop/component/componentName.story.tsx.hbs @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import {{ properCase name }}, { {{ properCase name }}Props diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index dcf22962d59..bd6eb59e403 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,23 +1,23 @@ repos: - repo: https://github.com/ambv/black - rev: 18.9b0 + rev: 19.3b0 hooks: - id: black language_version: python3 - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.1.0 + rev: v2.2.3 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: flake8 - repo: https://github.com/asottile/seed-isort-config - rev: v1.9.0 + rev: v1.9.1 hooks: - id: seed-isort-config - repo: https://github.com/pre-commit/mirrors-isort - rev: v4.3.18 + rev: v4.3.21 hooks: - id: isort diff --git a/CHANGELOG.md b/CHANGELOG.md index 27c6fc17f84..3e874d61782 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,61 +4,91 @@ All notable, unreleased changes to this project will be documented in this file. ## [Unreleased] -- Cleanup code for updated function names, unused argument, etc. - #4090 by @jxltom -- Merge authorize with capture - #4098 by @korycins, @NyanKiyoshi -- Fix GATEWAYS_ENUM to always contain all implemented payment gateways - #4108 by @koradon -- Fix translation discard button - #4109 by @benekex2 -- Change input style and improve Storybook stories - #4115 by @dominik-zeglen -- Separated the legacy middleware from the GQL API middleware - #4102 by @NyanKiyoshi -- Add navigation section - #4012 by @dominik-zeglen +- Fixed internal error when creating a checkout with a voucher code - #4292 by @NyanKiyoshi +- Add filter tab name as required - #4269 by @benekex2 +- A few unused panels are now disabled by default from the debug toolbar; this should improve loading time when debugging - #4301 by @NyanKiyoshi +- Fixed internal error when adding a note to an anonymous order - #4319 by @NyanKiyoshi +- Fix populatedb gift card duplication error - #4336 by @fowczarek +- Fix voucher apply once per order - #4339 by @fowczarek +- Change type of start and end date for discounts on date time field - #4293 by @fowczarek +- Add SPECIFIC_PRODUCT type to VoucherTypes - #4344 by @fowczarek +- Avatax backend support - #4310 by @korycins +- Use "esModuleInterop" flag in tsconfig to simplify imports - #4372 by @dominik-zeglen +- Use hooks instead of class component in forms - #4374 by @dominik-zeglen +- Drop csrf token header from API client - #4357 by @dominik-zeglen +- Improve vouchers ui - #4362 by @benekex2 +- Update documentation for taxes - #4405 by @korycins +- Fix for random failing tests in test_discount - #4401 by @korycins +- Fix internal error when users enters an invalid phone number in an address - #4404 by @NyanKiyoshi +- Add minimal quantity of products for voucher - #4427 by @fowczarek +- New translations: + - Icelandic +- Add ability to store used payment sources in gateways, first implemented in Braintree - #4195 by @salwator +- Fix various bugs across product section - #4429 by @dominik-zeglen +- Add company address configuration - #4432 by @benekex2 +- Revert the custom dynamic middleware loading by #4102–in the meantime a better solution is found. - #4452 by @NyanKiyoshi + +## 2.7.0 + +### API + +- Create order only when payment is successful - #4154 by @NyanKiyoshi - Order Events containing order lines or fulfillment lines now return the line object in the GraphQL API - #4114 by @NyanKiyoshi -- Migrate deprecated fields in Dashboard 2.0 - #4121 by @benekex2 -- Implement customer events - #4094 by @NyanKiyoshi -- Fix draftail options and icons - #4132 by @benekex2 -- Add multiple select checkbox - #4133 by @benekex2 -- Add support for Google Cloud Storage - #4127 by @chetabahana -- Fix wrong calculation of subtotal in cart page - #4145 by @korycins -- Fix multiple checkbox selected behavior - #4146 by @benekex2 - GraphQL now prints exceptions to stderr as well as returning them or not - #4148 by @NyanKiyoshi -- Refactored API resolvers to staticmethods with root typing - #4155 by @NyanKiyoshi -- Users can how add multiple "Add to Cart" forms in a single page - #4165 by @NyanKiyoshi -- Disabled by default the storage of celery results - #4169 by @NyanKiyoshi -- Fix typos and messages in Dashboard 2.0 - #4168 by @benekex2 +- Refactored API resolvers to static methods with root typing - #4155 by @NyanKiyoshi +- Add phone validation in the GraphQL API to handle the library upgrade - #4156 by @NyanKiyoshi + +### Core + +- Add basic Gift Cards support in the backend - #4025 by @fowczarek +- Add the ability to sort products within a collection - #4123 by @NyanKiyoshi +- Implement customer events - #4094 by @NyanKiyoshi +- Merge "authorize" and "capture" operations - #4098 by @korycins, @NyanKiyoshi +- Separate the Django middlewares from the GraphQL API middlewares - #4102 by @NyanKiyoshi, #4186 by @cmiacz + +### Dashboard 2.0 + +- Add navigation section - #4012 by @dominik-zeglen +- Add filtering on product list - #4193 by @dominik-zeglen +- Add filtering on orders list - #4237 by @dominik-zeglen +- Change input style and improve Storybook stories - #4115 by @dominik-zeglen +- Migrate deprecated fields in Dashboard 2.0 - #4121 by @benekex2 +- Add multiple select checkbox - #4133, #4146 by @benekex2 - Rename menu items in Dashboard 2.0 - #4172 by @benekex2 -- Adding a non existent variant to a checkout no longer crashes - #4166 by @NyanKiyoshi - Category delete modal improvements - #4171 by @benekex2 -- Products are now sortable within collections - #4123 by @NyanKiyoshi -- Restore Django's common middleware as a default middleware - #4186 by @cmiacz -- Fix incorrect argument in `get_client_token` in Braintree integration - #4182 by @maarcingebala -- Fix resolving attribute values when transforming them to HStore - #4161 by @maarcingebala -- Fix margin calculations when product/variant price is set to zero - #4170 by @MahmoudRizk -- Disable polling in Playgroud by default - #4188 by @maarcingebala -- Add phone validation in the GraphQL API to handle the library upgrade - #4156 by @NyanKiyoshi -- Fix view all orders button - #4173 by @benekex2 -- Fix applying discounts in checkout's subtotal calculation in API - #4192 by @maarcingebala -- Fix visibility card view - #4198 by @benekex2 +- Close modals on click outside - #4236 - by @benekex2 - Use date localize hook in translations - #4202 by @dominik-zeglen -- Add filtering interface to product list - #4193 by @dominik-zeglen - Unify search API - #4200 by @dominik-zeglen -- Close modals on click outside - #4236 - by @benekex2 - Default default PAGINATE_BY - #4238 by @dominik-zeglen -- Add basic Gift Cards support in the backend - #4025 by @fowczarek - Create generic filtering interface - #4221 by @dominik-zeglen -- API checkout payment can fail without creating an order and deleting checkout - #4154 by @NyanKiyoshi -- Payment gateways are now optionally receiving the `order_id` field from the `PaymentData` object. Thus should not rely on that information. - #4154 by @NyanKiyoshi -- Add order filtering - #4237 by @dominik-zeglen +- Add default state to rich text editor = #4281 by @dominik-zeglen +- Fix translation discard button - #4109 by @benekex2 +- Fix draftail options and icons - #4132 by @benekex2 +- Fix typos and messages in Dashboard 2.0 - #4168 by @benekex2 +- Fix view all orders button - #4173 by @benekex2 +- Fix visibility card view - #4198 by @benekex2 - Fix query refetch after selecting an object in list - #4272 by @dominik-zeglen - Fix image selection in variants - #4270 by @benekex2 -- Reset selected items when tab switch - #4268 by @benekex2 - Fix collection search - #4267 by @dominik-zeglen - Fix quantity height in draft order edit - #4273 by @benekex2 - Fix checkbox clickable area size - #4280 by @dominik-zeglen -- Fix exploding object select in menu section - #4282 by @dominik-zeglen -- Add default state to rich text editor = #4281 by @dominik-zeglen -- Fix ajax request for removing item from bag - ##4294 by @korycins -- Add default state to rich text editor - #4281 by @dominik-zeglen -- Fixed internal error when creating a checkout with a voucher code - #4292 by @NyanKiyoshi +- Fix breaking object selection in menu section - #4282 by @dominik-zeglen +- Reset selected items when tab switch - #4268 by @benekex2 + +### Other notable changes +- Add support for Google Cloud Storage - #4127 by @chetabahana +- Adding a nonexistent variant to checkout no longer crashes - #4166 by @NyanKiyoshi +- Disable storage of Celery results - #4169 by @NyanKiyoshi +- Disable polling in Playground - #4188 by @maarcingebala +- Cleanup code for updated function names and unused argument - #4090 by @jxltom +- Users can now add multiple "Add to Cart" forms in a single page - #4165 by @NyanKiyoshi +- Fix incorrect argument in `get_client_token` in Braintree integration - #4182 by @maarcingebala +- Fix resolving attribute values when transforming them to HStore - #4161 by @maarcingebala +- Fix wrong calculation of subtotal in cart page - #4145 by @korycins +- Fix margin calculations when product/variant price is set to zero - #4170 by @MahmoudRizk +- Fix applying discounts in checkout's subtotal calculation in API - #4192 by @maarcingebala +- Fix GATEWAYS_ENUM to always contain all implemented payment gateways - #4108 by @koradon ## 2.6.0 diff --git a/Pipfile b/Pipfile index bc269781351..055f3203a1d 100644 --- a/Pipfile +++ b/Pipfile @@ -23,7 +23,7 @@ django-impersonate = ">=1.3" django-measurement = "==3.0.0" django-mptt = ">=0.7.1" django-phonenumber-field = ">=1.3.0,<3.0" -django-prices = ">=1.0.2" +django-prices = ">=1.0.2,<2.0.0" django-prices-openexchangerates = ">=1.0.0" django-prices-vatlayer = ">=1.0.2" django-redis = ">=4.0.0" @@ -69,7 +69,7 @@ dataclasses = {version = "*",markers = "python_version < '3.7'"} [dev-packages] pytest = "*" pytest-django = "*" -pytest-django-queries = "*" +pytest-django-queries = "==1.1.0" pytest-vcr = "*" pytest-mock = "*" pytest-xdist = "*" diff --git a/Pipfile.lock b/Pipfile.lock index e5d41bf59a0..6ce72b3801c 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9af4e3c0db84bdcd9d9f3e4b25680fa3e26bf8b414dcc025974ead9106c453ce" + "sha256": "d2310a0722216332a84cdbbbd4236c20cfdb73dafde216e70fb59e41e88c5f89" }, "pipfile-spec": 6, "requires": { @@ -25,10 +25,10 @@ }, "aniso8601": { "hashes": [ - "sha256:29ad6be3828ab6ac2a31fd2876fd84477cde11890ffca7e8a9434aad5d4acec8", - "sha256:a5c7595bb65d3919a9944a759d907b57c4d050abaa0e5cf845e84c26cdfd1218" + "sha256:b8a6a9b24611fc50cf2d9b45d371bfdc4fd0581d1cc52254f5502130a776d4af", + "sha256:bb167645c79f7a438f9dfab6161af9bed75508c645b1f07d1158240841d22673" ], - "version": "==5.1.0" + "version": "==6.0.0" }, "autopep8": { "hashes": [ @@ -60,18 +60,18 @@ }, "boto3": { "hashes": [ - "sha256:ce59df424c1a711edaf3a93e25c8ac58fdbf188d8e7ab3cf6cf25a79454f6068", - "sha256:d792fe90df487253d043dfbf1cfc04f28eb3c4aed0bed3643edcba338e3221d2" + "sha256:7fa7431115be7bdbebf207f34fd010553d0e3ccf30ad977cf38ea80ea47e68bf", + "sha256:99e5d071332f176c32ced41902349fe760add1f02cc86de1d5ae4cf05ff7a6e7" ], "index": "pypi", - "version": "==1.9.163" + "version": "==1.9.180" }, "botocore": { "hashes": [ - "sha256:313bb98295e8369ca476faa553b19efdfcccf3d832691db3131fc6b842592af1", - "sha256:a568bcfdd404a034633b86b166bf9118c5e1765c3e83f2188063bc73b58c0e89" + "sha256:a2ceaa00724228a961ef6f97da60ab09f3161a76e2f3ae82a49be396ca1083fc", + "sha256:f049dbfe83423f5cf350a861861e7f904967dea5e142ec1a17c70c07f9fdb117" ], - "version": "==1.12.163" + "version": "==1.12.180" }, "braintree": { "hashes": [ @@ -114,10 +114,10 @@ }, "certifi": { "hashes": [ - "sha256:59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", - "sha256:b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae" + "sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", + "sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" ], - "version": "==2019.3.9" + "version": "==2019.6.16" }, "cffi": { "hashes": [ @@ -201,11 +201,11 @@ }, "django": { "hashes": [ - "sha256:753d30d3eb078064d2ddadfea65083c9848074a7f93d7b4dc7fa6b1380d278f5", - "sha256:7cb67e8b934fab23b6daed7144da52e8a25a47eba7f360ca43d2b448506b01ad" + "sha256:4d23f61b26892bac785f07401bc38cbf8fa4cec993f400e9cd9ddf28fd51c0ea", + "sha256:6e974d4b57e3b29e4882b244d40171d6a75202ab8d2402b8e8adbd182e25cf0c" ], "index": "pypi", - "version": "==2.2.2" + "version": "==2.2.3" }, "django-appconf": { "hashes": [ @@ -247,18 +247,18 @@ }, "django-debug-toolbar": { "hashes": [ - "sha256:89d75b60c65db363fb24688d977e5fbf0e73386c67acf562d278402a10fc3736", - "sha256:c2b0134119a624f4ac9398b44f8e28a01c7686ac350a12a74793f3dd57a9eea0" + "sha256:17c53cd6bf4e7d69902aedf9a1d26c5d3b7369b54c5718744704f27b5a72f35d", + "sha256:9a23ada2e43cd989195db3c18710b5d7451134a0d48127ab64c1d2ad81700342" ], "index": "pypi", - "version": "==1.11" + "version": "==2.0" }, "django-debug-toolbar-request-history": { "hashes": [ - "sha256:e5ec8a228d37384d704de2656f375ced29cfd51655b2e7ea706eb1c487e4da5d" + "sha256:7b3885cb4bf3955a3dff6749e79c1f616b8227484c382a0b5958c2a2c3e7d3f7" ], "index": "pypi", - "version": "==0.0.10" + "version": "==0.0.11" }, "django-elasticsearch-dsl": { "hashes": [ @@ -447,10 +447,10 @@ }, "google-api-core": { "hashes": [ - "sha256:18d58e87ce51046ad76961ba320903657182622e3e368e502381b11f63015c66", - "sha256:a1312fb2555516cfb55908e5d28762838315c21f7ce43d243ab3d11f215e2238" + "sha256:72a1c8966bdbd70a72de32760368aec399fe6a5c2a6675d9476cb9ae27046de7", + "sha256:f45d74aef41e1de49ceadebf382e1291ddcbe431a8b533aff8a1140a35531465" ], - "version": "==1.11.1" + "version": "==1.13.0" }, "google-auth": { "hashes": [ @@ -461,10 +461,10 @@ }, "google-cloud-core": { "hashes": [ - "sha256:56a2c8c6420776ff5f4e590e3708e4b6e80cd417c7591e9a0f52b1961523aad9", - "sha256:9653ebd9724d2f2b2571b015731444056e00be5374863e17176925fd48a56378" + "sha256:7b61a06de4d63780bcf7889cb17f00f5058fdd211ad86c74367408eea37d9f00", + "sha256:8f86399d8399448ccac5890239e6234f120dd619d22c41115ff548a851ec2be2" ], - "version": "==1.0.1" + "version": "==1.0.2" }, "google-cloud-storage": { "hashes": [ @@ -475,11 +475,11 @@ }, "google-i18n-address": { "hashes": [ - "sha256:95820e70309af471de48921551fb4351e9ba7b3671c1b5a6999f6ab0341939f4", - "sha256:a1d2973403799170d2af275d6083211cd51b4fec14f0c8e09f94d6952e0d3238" + "sha256:1350d69e2df80c519b7db25c0056f696dae2b4956cd55c39bd16892cb9015645", + "sha256:7c6cd436e9abcdd69ea347d2e440d718019eed55e98b7078051f902a521f6fce" ], "index": "pypi", - "version": "==2.3.4" + "version": "==2.3.5" }, "google-measurement-protocol": { "hashes": [ @@ -509,26 +509,25 @@ }, "graphene": { "hashes": [ - "sha256:6d6a68c7b3b40325bf9af8a3dca22639f5a57eededf4449c1db198d7eb117af7", - "sha256:8eee7e2ae9c22d01cf85a43f8c1aeb776a478bc2e20e0ca8d5fb17ba4b9f4767" + "sha256:2ac16d6bb3bdba4da3daa0f6d15b74ac585ed6a016980f502c77c3e687c763bb", + "sha256:fcbcb24ee960b2c768de4285fbd025aa98eed4ecb6a679bbd41985b05b4008c5" ], - "version": "==2.1.5" + "version": "==2.1.6" }, "graphene-django": { "hashes": [ - "sha256:3afd81d47c8b702650e05cc1179fac1cfceae991d241bb164d51f28bed9ec95c", - "sha256:760a18068feb5457e2ec00d2447c09b2fbac2a6b8c32cc8be2abce3752107ad3" + "sha256:7720a459da5bc99fba251f697c4d41858612bf1a36096326af86739dd31705f3", + "sha256:f155cfbd9d201604c3f681ef6b824cc693263946cfdf9ba140880994285016d4" ], "index": "pypi", - "version": "==2.2.0" + "version": "==2.3.2" }, "graphene-django-optimizer": { "hashes": [ - "sha256:8d1d73514ec892e6307f90f8035db47cf6b75f3a0188d58848b1d7261f056e86", - "sha256:9632998a7e3303ebe95a2df6dadcc1d4d137d5946e6c03a2680ce620b49408e2" + "sha256:be7bb8147ec34adfd1e951a7b59a1030eb5ba65f4384279db70fa73a3358bacb" ], "index": "pypi", - "version": "==0.4.0" + "version": "==0.4.2" }, "graphql-core": { "hashes": [ @@ -587,11 +586,11 @@ }, "kombu": { "hashes": [ - "sha256:056a31cc95b10ca4eb0d4ebcba714007b1db1c6c45c8e2d139fe91933481b00b", - "sha256:af5b0f892b081f49d95c772a241fb7687f4cc3e42c94328f118dffb1f4e161e5" + "sha256:55b71d3785def3470a16217fe0780f9e6f95e61bf9ad39ef8dce0177224eab77", + "sha256:eb365ea795cd7e629ba2f1f398e0c3ba354b91ef4de225ffdf6ab45fdfc7d581" ], "index": "pypi", - "version": "==4.6.1" + "version": "==4.6.3" }, "markdown": { "hashes": [ @@ -669,11 +668,11 @@ }, "phonenumberslite": { "hashes": [ - "sha256:2b9bf31ecc30abbc183d284fde81c62f5fa495f23611ecc46df658e0a59a4494", - "sha256:75e40b9c3517a2da375f7271e5d61178675666038d80c757161c1f5f4d0543fa" + "sha256:942a50bf837b022291359dcbc1780958f56c8d0b6f5da6d7d78793544a4cd565", + "sha256:c1b9ccc3ec9b5cc390ed7dccb02fe5091c334a17617c8d7a4e499682e7d5ff06" ], "index": "pypi", - "version": "==8.10.13" + "version": "==8.10.14" }, "pillow": { "hashes": [ @@ -749,37 +748,37 @@ }, "psycopg2-binary": { "hashes": [ - "sha256:007ca0df127b1862fc010125bc4100b7a630efc6841047bd11afceadb4754611", - "sha256:03c49e02adf0b4d68f422fdbd98f7a7c547beb27e99a75ed02298f85cb48406a", - "sha256:0a1232cdd314e08848825edda06600455ad2a7adaa463ebfb12ece2d09f3370e", - "sha256:131c80d0958c89273d9720b9adf9df1d7600bb3120e16019a7389ab15b079af5", - "sha256:2de34cc3b775724623f86617d2601308083176a495f5b2efc2bbb0da154f483a", - "sha256:2eddc31500f73544a2a54123d4c4b249c3c711d31e64deddb0890982ea37397a", - "sha256:484f6c62bdc166ee0e5be3aa831120423bf399786d1f3b0304526c86180fbc0b", - "sha256:4c2d9369ed40b4a44a8ccd6bc3a7db6272b8314812d2d1091f95c4c836d92e06", - "sha256:70f570b5fa44413b9f30dbc053d17ef3ce6a4100147a10822f8662e58d473656", - "sha256:7a2b5b095f3bd733aab101c89c0e1a3f0dfb4ebdc26f6374805c086ffe29d5b2", - "sha256:804914a669186e2843c1f7fbe12b55aad1b36d40a28274abe6027deffad9433d", - "sha256:8520c03172da18345d012949a53617a963e0191ccb3c666f23276d5326af27b5", - "sha256:90da901fc33ea393fc644607e4a3916b509387e9339ec6ebc7bfded45b7a0ae9", - "sha256:a582416ad123291a82c300d1d872bdc4136d69ad0b41d57dc5ca3df7ef8e3088", - "sha256:ac8c5e20309f4989c296d62cac20ee456b69c41fd1bc03829e27de23b6fa9dd0", - "sha256:b2cf82f55a619879f8557fdaae5cec7a294fac815e0087c4f67026fdf5259844", - "sha256:b59d6f8cfca2983d8fdbe457bf95d2192f7b7efdb2b483bf5fa4e8981b04e8b2", - "sha256:be08168197021d669b9964bd87628fa88f910b1be31e7010901070f2540c05fd", - "sha256:be0f952f1c365061041bad16e27e224e29615d4eb1fb5b7e7760a1d3d12b90b6", - "sha256:c1c9a33e46d7c12b9c96cf2d4349d783e3127163fd96254dcd44663cf0a1d438", - "sha256:d18c89957ac57dd2a2724ecfe9a759912d776f96ecabba23acb9ecbf5c731035", - "sha256:d7e7b0ff21f39433c50397e60bf0995d078802c591ca3b8d99857ea18a7496ee", - "sha256:da0929b2bf0d1f365345e5eb940d8713c1d516312e010135b14402e2a3d2404d", - "sha256:de24a4962e361c512d3e528ded6c7480eab24c655b8ca1f0b761d3b3650d2f07", - "sha256:e45f93ff3f7dae2202248cf413a87aeb330821bf76998b3cf374eda2fc893dd7", - "sha256:f046aeae1f7a845041b8661bb7a52449202b6c5d3fb59eb4724e7ca088811904", - "sha256:f1dc2b7b2748084b890f5d05b65a47cd03188824890e9a60818721fd492249fb", - "sha256:fcbe7cf3a786572b73d2cd5f34ed452a5f5fac47c9c9d1e0642c457a148f9f88" - ], - "index": "pypi", - "version": "==2.8.2" + "sha256:080c72714784989474f97be9ab0ddf7b2ad2984527e77f2909fcd04d4df53809", + "sha256:110457be80b63ff4915febb06faa7be002b93a76e5ba19bf3f27636a2ef58598", + "sha256:171352a03b22fc099f15103959b52ee77d9a27e028895d7e5fde127aa8e3bac5", + "sha256:19d013e7b0817087517a4b3cab39c084d78898369e5c46258aab7be4f233d6a1", + "sha256:249b6b21ae4eb0f7b8423b330aa80fab5f821b9ffc3f7561a5e2fd6bb142cf5d", + "sha256:2ac0731d2d84b05c7bb39e85b7e123c3a0acd4cda631d8d542802c88deb9e87e", + "sha256:2b6d561193f0dc3f50acfb22dd52ea8c8dfbc64bcafe3938b5f209cc17cb6f00", + "sha256:2bd23e242e954214944481124755cbefe7c2cf563b1a54cd8d196d502f2578bf", + "sha256:3e1239242ca60b3725e65ab2f13765fc199b03af9eaf1b5572f0e97bdcee5b43", + "sha256:3eb70bb697abbe86b1d2b1316370c02ba320bfd1e9e35cf3b9566a855ea8e4e5", + "sha256:51a2fc7e94b98bd1bb5d4570936f24fc2b0541b63eccadf8fdea266db8ad2f70", + "sha256:52f1bdafdc764b7447e393ed39bb263eccb12bfda25a4ac06d82e3a9056251f6", + "sha256:5b3581319a3951f1e866f4f6c5e42023db0fae0284273b82e97dfd32c51985cd", + "sha256:63c1b66e3b2a3a336288e4bcec499e0dc310cd1dceaed1c46fa7419764c68877", + "sha256:8123a99f24ecee469e5c1339427bcdb2a33920a18bb5c0d58b7c13f3b0298ba3", + "sha256:85e699fcabe7f817c0f0a412d4e7c6627e00c412b418da7666ff353f38e30f67", + "sha256:8dbff4557bbef963697583366400822387cccf794ccb001f1f2307ed21854c68", + "sha256:908d21d08d6b81f1b7e056bbf40b2f77f8c499ab29e64ec5113052819ef1c89b", + "sha256:af39d0237b17d0a5a5f638e9dffb34013ce2b1d41441fd30283e42b22d16858a", + "sha256:af51bb9f055a3f4af0187149a8f60c9d516cf7d5565b3dac53358796a8fb2a5b", + "sha256:b2ecac57eb49e461e86c092761e6b8e1fd9654dbaaddf71a076dcc869f7014e2", + "sha256:cd37cc170678a4609becb26b53a2bc1edea65177be70c48dd7b39a1149cabd6e", + "sha256:d17e3054b17e1a6cb8c1140f76310f6ede811e75b7a9d461922d2c72973f583e", + "sha256:d305313c5a9695f40c46294d4315ed3a07c7d2b55e48a9010dad7db7a66c8b7f", + "sha256:dd0ef0eb1f7dd18a3f4187226e226a7284bda6af5671937a221766e6ef1ee88f", + "sha256:e1adff53b56db9905db48a972fb89370ad5736e0450b96f91bcf99cadd96cfd7", + "sha256:f0d43828003c82dbc9269de87aa449e9896077a71954fbbb10a614c017e65737", + "sha256:f78e8b487de4d92640105c1389e5b90be3496b1d75c90a666edd8737cc2dbab7" + ], + "index": "pypi", + "version": "==2.8.3" }, "purl": { "hashes": [ @@ -884,13 +883,6 @@ "index": "pypi", "version": "==3.2.1" }, - "relativetimebuilder": { - "hashes": [ - "sha256:568608f415f168dbc1b4f57841dbec0d279e174d12524538d8584b129914b237", - "sha256:7b5600a6572075400c2134b1524ab5ffa1e5c7d74db3be37da5eb9520627b024" - ], - "version": "==1.0.0" - }, "requests": { "hashes": [ "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", @@ -967,11 +959,11 @@ }, "stripe": { "hashes": [ - "sha256:362472a0b69f1791629d75c4829be3af92dc8c9254812af5670dcbcde704bb1f", - "sha256:92d6691382e0abf314759863c48a4830b5bfd3a935193ee6c3e5621ab25740ba" + "sha256:cabd87e0268297fc5ea4e49fef798cdffa795f26c581a2ad3524785c7e6ff1ab", + "sha256:d1a20ff75322e8f46a9041badf37db9448fbd3cee63a8c55ef717d08134c7957" ], "index": "pypi", - "version": "==2.29.4" + "version": "==2.32.0" }, "sympy": { "hashes": [ @@ -997,11 +989,11 @@ }, "typing": { "hashes": [ - "sha256:4027c5f6127a6267a435201981ba156de91ad0d1d98e9ddc2aa173453453492d", - "sha256:57dcf675a99b74d64dacf6fba08fb17cf7e3d5fdff53d4a30ea2a5e7e52543d4", - "sha256:a4c8473ce11a65999c8f59cb093e70686b6c84c98df58c1dae9b3b196089858a" + "sha256:38566c558a0a94d6531012c8e917b1b8518a41e418f7f15f00e129cc80162ad3", + "sha256:53765ec4f83a2b720214727e319607879fec4acde22c4fbb54fa2604e79e44ce", + "sha256:84698954b4e6719e912ef9a42a2431407fe3755590831699debda6fba92aac55" ], - "version": "==3.6.6" + "version": "==3.7.4" }, "urllib3": { "hashes": [ @@ -1102,10 +1094,10 @@ }, "certifi": { "hashes": [ - "sha256:59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", - "sha256:b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae" + "sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", + "sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" ], - "version": "==2019.3.9" + "version": "==2019.6.16" }, "cfgv": { "hashes": [ @@ -1182,19 +1174,19 @@ }, "django": { "hashes": [ - "sha256:753d30d3eb078064d2ddadfea65083c9848074a7f93d7b4dc7fa6b1380d278f5", - "sha256:7cb67e8b934fab23b6daed7144da52e8a25a47eba7f360ca43d2b448506b01ad" + "sha256:4d23f61b26892bac785f07401bc38cbf8fa4cec993f400e9cd9ddf28fd51c0ea", + "sha256:6e974d4b57e3b29e4882b244d40171d6a75202ab8d2402b8e8adbd182e25cf0c" ], "index": "pypi", - "version": "==2.2.2" + "version": "==2.2.3" }, "django-extensions": { "hashes": [ - "sha256:6766c573ffe63693cd485512a02f3b59622c884cbfeca241d1278ffdf0ac39ae", - "sha256:c43e46cc95985c278afda645480b79f9a85cfe5a82c957accd08b8045793b707" + "sha256:097450a56fcfdef36bb4dd731b113d1b3e9a9de715fc8775e5e84ab3be50dd96", + "sha256:a1799a7eb4cf0f7aa0d111bac79047227b55a74d11741f387708023a012662f9" ], "index": "pypi", - "version": "==2.1.7" + "version": "==2.1.9" }, "entrypoints": { "hashes": [ @@ -1227,10 +1219,10 @@ }, "identify": { "hashes": [ - "sha256:432c548d6138cb57a3d8f62f079a025a29b8ae34a50dd3b496bbf661818f2bc0", - "sha256:d4401d60bf1938aa3074a352a5cc9044107edf11a6fedd3a1db172c141619b81" + "sha256:0a11379b46d06529795442742a043dc2fa14cd8c995ae81d1febbc5f1c014c87", + "sha256:43a5d24ffdb07bc7e21faf68b08e9f526a1f41f0056073f480291539ef961dfd" ], - "version": "==1.4.3" + "version": "==1.4.5" }, "idna": { "hashes": [ @@ -1241,18 +1233,18 @@ }, "importlib-metadata": { "hashes": [ - "sha256:a9f185022cfa69e9ca5f7eabfd5a58b689894cb78a11e3c8c89398a8ccbb8e7f", - "sha256:df1403cd3aebeb2b1dcd3515ca062eecb5bd3ea7611f18cba81130c68707e879" + "sha256:6dfd58dfe281e8d240937776065dd3624ad5469c835248219bd16cf2e12dbeb7", + "sha256:cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db" ], - "version": "==0.17" + "version": "==0.18" }, "isort": { "hashes": [ - "sha256:c40744b6bc5162bbb39c1257fe298b7a393861d50978b565f3ccd9cb9de0182a", - "sha256:f57abacd059dc3bd666258d1efb0377510a89777fda3e3274e3c01f7c03ae22d" + "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1", + "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd" ], "index": "pypi", - "version": "==4.3.20" + "version": "==4.3.21" }, "jinja2": { "hashes": [ @@ -1326,11 +1318,10 @@ }, "more-itertools": { "hashes": [ - "sha256:2112d2ca570bb7c3e53ea1a35cd5df42bb0fd10c45f0fb97178679c3c03d64c7", - "sha256:c3e4748ba1aad8dba30a4886b0b1a2004f9a863837b8654e7059eebf727afa5a" + "sha256:3ad685ff8512bf6dc5a8b82ebf73543999b657eded8c11803d9ba6b648986f4d", + "sha256:8bb43d1f51ecef60d81854af61a3a880555a14643691cc4b64a6ee269c78f09a" ], - "markers": "python_version > '2.7'", - "version": "==7.0.0" + "version": "==7.1.0" }, "multidict": { "hashes": [ @@ -1463,11 +1454,11 @@ }, "pytest": { "hashes": [ - "sha256:6032845e68a17a96e8da3088037f899b56357769a724122056265ca2ea1890ee", - "sha256:bea27a646a3d74cbbcf8d3d4a06b2dfc336baf3dc2cc85cf70ad0157e73e8322" + "sha256:2878de8ae1c79a62c012da6186b88ff0562ea96ce29c4208d2a9b11d9f607df1", + "sha256:95b700cf21ed5b7e91bce7a6b5a573b2e3ef7b3643d00f681d8f9c4672f9fbdf" ], "index": "pypi", - "version": "==4.6.2" + "version": "==5.0.0" }, "pytest-cov": { "hashes": [ @@ -1479,18 +1470,18 @@ }, "pytest-django": { "hashes": [ - "sha256:11a9ab9fceb2f819a0e94ba4eab791f998542f4e29eb36500cb9464dd3b4c3b6", - "sha256:581d699fbe955ba40c2da9c9cd3b49442d95e9d1a3f8c4d13ca5a29332467fea" + "sha256:264fb4c506db5d48a6364c311a0b00b7b48a52715bad8839b2d8bee9b99ed6bb", + "sha256:4adfe5fb3ed47f0ba55506dd3daf688b1f74d5e69148c10ad2dd2f79f40c0d62" ], "index": "pypi", - "version": "==3.5.0" + "version": "==3.5.1" }, "pytest-django-queries": { "hashes": [ - "sha256:34836b51a8b621a278347edb42b92f6d43779500f94d897a95f40723cc9d5d92" + "sha256:16f4dffa5a4c95bb2e10e6f4289796503578bc46ea69a81b2f4ed8376f7c75b5" ], "index": "pypi", - "version": "==1.0.0" + "version": "==1.1.0" }, "pytest-forked": { "hashes": [ @@ -1517,11 +1508,11 @@ }, "pytest-xdist": { "hashes": [ - "sha256:b0bb4b0293ee8657b9eb3ff334a3b6aac4db74fd4a86b81e1982c879237a47eb", - "sha256:f83a485293e81fd57c8a5a85a3f12473a532c5ca7dec518857cbb72766bb526c" + "sha256:3489d91516d7847db5eaecff7a2e623dba68984835dbe6cedb05ae126c4fb17f", + "sha256:501795cb99e567746f30fe78850533d4cd500c93794128e6ab9988e92a17b1f8" ], "index": "pypi", - "version": "==1.28.0" + "version": "==1.29.0" }, "python-slugify": { "hashes": [ @@ -1569,10 +1560,9 @@ }, "snowballstemmer": { "hashes": [ - "sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128", - "sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89" + "sha256:9f3b9ffe0809d174f7047e121431acf99c89a7040f0ca84f94ba53a498e6d0c9" ], - "version": "==1.2.1" + "version": "==1.9.0" }, "sqlparse": { "hashes": [ @@ -1590,11 +1580,11 @@ }, "tox": { "hashes": [ - "sha256:f5c8e446b51edd2ea97df31d4ded8c8b72e7d6c619519da6bb6084b9dd5770f9", - "sha256:f87fd33892a2df0950e5e034def9468988b8d008c7e9416be665fcc0dd45b14f" + "sha256:45a265e953368fb372cca3eac33b69fdb1b1453e5b114be231c84fc3dfadceed", + "sha256:f5cb0b5b8d14f2100982b0981c750d840228180a348e6bad355aa38e949fbc3f" ], "index": "pypi", - "version": "==3.12.1" + "version": "==3.13.1" }, "transifex-client": { "hashes": [ @@ -1626,10 +1616,10 @@ }, "unidecode": { "hashes": [ - "sha256:092cdf7ad9d1052c50313426a625b717dab52f7ac58f859e09ea020953b1ad8f", - "sha256:8b85354be8fd0c0e10adbf0675f6dc2310e56fda43fa8fe049123b6c475e52fb" + "sha256:1d7a042116536098d05d599ef2b8616759f02985c85b4fef50c78a5aaf10822a", + "sha256:2b6aab710c2a1647e928e36d69c21e76b453cd455f4e2621000e54b2a9b8cce8" ], - "version": "==1.0.23" + "version": "==1.1.1" }, "urllib3": { "hashes": [ @@ -1648,10 +1638,10 @@ }, "virtualenv": { "hashes": [ - "sha256:99acaf1e35c7ccf9763db9ba2accbca2f4254d61d1912c5ee364f9cc4a8942a0", - "sha256:fe51cdbf04e5d8152af06c075404745a7419de27495a83f0d72518ad50be3ce8" + "sha256:b7335cddd9260a3dd214b73a2521ffc09647bde3e9457fcca31dc3be3999d04a", + "sha256:d28ca64c0f3f125f59cabf13e0a150e1c68e5eea60983cc4395d88c584495783" ], - "version": "==16.6.0" + "version": "==16.6.1" }, "wcwidth": { "hashes": [ @@ -1662,9 +1652,9 @@ }, "wrapt": { "hashes": [ - "sha256:4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533" + "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1" ], - "version": "==1.11.1" + "version": "==1.11.2" }, "yapf": { "hashes": [ diff --git a/docs/gettingstarted/configuration.rst b/docs/gettingstarted/configuration.rst index 6116eda1d5d..a398433b415 100644 --- a/docs/gettingstarted/configuration.rst +++ b/docs/gettingstarted/configuration.rst @@ -94,15 +94,6 @@ Environment variables ``STATIC_URL`` Controls production assets' mount path. Defaults to ``/static/``. -``VATLAYER_ACCESS_KEY`` - Access key to `vatlayer API `_. Enables VAT support within European Union. - - To update the tax rates run the following command at least once per day: - - .. code-block:: console - - $ python manage.py get_vat_rates - ``DEFAULT_CURRENCY`` Controls all prices entered and stored in the store as this single default currency (for more information, see :ref:`money_architecture`). @@ -114,3 +105,32 @@ Environment variables Set this to ``False`` for speedy performance, which is recommended for production. Every image should come with a pre-warm to ensure they're created and available at the appropriate URL. + +.. _tax_environment_variables: + +Tax variables +^^^^^^^^^^^^^ +:ref:`Refer to the configuration of taxes` + +``VATLAYER_ACCESS_KEY`` + Access key to `vatlayer's API `_. + +``AVATAX_USERNAME_OR_ACCOUNT`` + This field stores Avalara's ``username`` or Avalara's ``account``. + + +``AVATAX_PASSWORD_OR_LICENSE`` + This field stores Avalara's ``password`` or Avalara's ``license``. + + +``AVATAX_USE_SANDBOX`` + ``True`` when ``DEBUG`` is set to ``True``. Determines if Saleor should use Avatax sandbox API. + + +``AVATAX_COMPANY_NAME`` + Defaults to ``DEFAULT``. Avalara needs to receive company code. Some more complicated systems can use more than one company + code, in that case, this variable should be changed based on data from Avalara's admin panel. + + +``AVATAX_AUTOCOMMIT`` + Defaults to ``False``. Determines, if all transactions sent to Avalara should be committed by default. diff --git a/docs/guides/payments.rst b/docs/guides/payments.rst index bd252b8c2c9..133c4e00b48 100644 --- a/docs/guides/payments.rst +++ b/docs/guides/payments.rst @@ -424,7 +424,8 @@ Adding new payment gateway to the settings "braintree": { "module": "saleor.payment.gateways.braintree", "config": { - "auto_capture": True, + "auto_capture": get_bool_from_env("BRAINTREE_AUTO_CAPTURE", True), + "store_card": get_bool_from_env("BRAINTREE_STORE_CARD", False), "template_path": "order/payment/braintree.html", "connection_params": { "sandbox_mode": get_bool_from_env("BRAINTREE_SANDBOX_MODE", True), diff --git a/docs/guides/taxes.rst b/docs/guides/taxes.rst index d24c3975e96..18d345ccee4 100644 --- a/docs/guides/taxes.rst +++ b/docs/guides/taxes.rst @@ -1,12 +1,9 @@ +.. _taxes_configuration: + Taxes ===== -Saleor gives a possibility to configure taxes. It can be done in dashboard ``Taxes`` tab. - -Taxes are charged according to the rates applicable in the country to which the order is delivered. If tax rate set for the product is not available, standard tax rate is used by default. - -For now, only taxes in European Union are handled. - +Saleor provides the possibility to configure taxes. It supports the following external tax providers: ``Avalara``, ``Vatlayer``. Currently, only one provider can be enabled at the same time. Configuring taxes ----------------- @@ -19,28 +16,39 @@ There are three ways in which you can configure taxes: #. Show gross prices to customers in the storefront - If selected, prices displayed for customers in storefront will be gross. Taxes will be properly calculated at checkout. Changing this setting has no effect on displaying orders placed in the past. + If selected, prices displayed for customers in storefront will be gross (only ``Vatlayer``). Taxes will be properly calculated at checkout. Changing this setting has no effect on displaying orders placed in the past. #. Charge taxes on shipping rates If selected, standard tax rate will be charged on shipping price. +Vatlayer +-------- + +Taxes are charged according to the rates applicable in the country to which the order is delivered. If tax rate set +for the product is not available, standard tax rate is used by default. + +Vatlayer handles taxes only in European Union. + +You can configure taxes calculations in the ``Taxes`` section in the Dashboard. + Tax rates preview ------------------ +^^^^^^^^^^^^^^^^^ -You can preview tax rates in dashboard ``Taxes`` tab. It lists all countries taxes are handled for. You can see all available tax rates for each country in its details view. +You can preview tax rates in dashboard ``Taxes`` tab. It lists all countries taxes are handled for. You can see all +available tax rates for each country in its details view. Fetching taxes --------------- - - Assuming you have provided a valid ``VATLAYER_ACCESS_KEY``, taxes can be fetched via following command: +^^^^^^^^^^^^^^ - .. code-block:: console + Assuming you have provided a valid ``VATLAYER_ACCESS_KEY``. To update the tax rates, go to the dashboard settings in + the tax section and click "fetch taxes". - $ python manage.py get_vat_rates + .. note: + You can run `python manage.py get_vat_rates` as a cron job to automatically fetch them. If you do not have a VatLayer API key, you can get one by `subscribing for free here `_. @@ -49,3 +57,31 @@ Fetching taxes By default, Saleor is making requests to the VatLayer API through HTTP (insecure), if you are using a paid VatLayer subscription, you may want to set the settings ``VATLAYER_USE_HTTPS`` to ``True``. + + +Avalara +------- + +All configuration and account setup should be done on the Avalara's admin panel. Saleor uses the standard API of +Avalara to fetch tax codes, calculate taxes during the checkout process and transfer data directly to Avalara. + +Configuration +^^^^^^^^^^^^^ + +Only basic data needs to be provided on Saleor's side. You need to fill up the following variables: +``AVATAX_USERNAME_OR_ACCOUNT``, ``AVATAX_PASSWORD_OR_LICENSE``, ``AVATAX_USE_SANDBOX``, ``AVATAX_COMPANY_NAME``, ``AVATAX_AUTOCOMMIT`` (:ref:`refer to the variables descriptions.`) + +Avalara supports two ways of authentications: + 1. Through login information (``username`` + ``password``) + 2. Through the account information (``account_id`` + ``license``) + +Use ``AVATAX_USERNAME_OR_ACCOUNT`` and ``AVATAX_PASSWORD_OR_LICENSE`` to pass one of these authentication pairs. + +Avalara requires a company address to properly calculate taxes. +Your company's address can be assigned in the dashboard in ``Configure`` > ``Site Settings`` > ``Company Information`` section. + + +Tax codes +^^^^^^^^^ +Avalara has its own system for classifing the product types and expected taxes. On Saleor's side, the store owner must assign Avalara's tax code to the given product types or product itself. If you skip this step, Saleor will use the common code for all products (which is not recommended). +Assigning a tax code can be done from the dashboard in the product type or the product section. Both of these sections have a field for assigning a tax code for enabled tax gateway. diff --git a/docs/payment-gateways/braintree.rst b/docs/payment-gateways/braintree.rst index 50db9564771..e9c612715ef 100644 --- a/docs/payment-gateways/braintree.rst +++ b/docs/payment-gateways/braintree.rst @@ -9,6 +9,8 @@ This gateway implements payments using `Braintree , 2019\n" "Language-Team: Arabic (https://www.transifex.com/mirumee/teams/34782/ar/)\n" @@ -22,32 +22,82 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "البريد الالكترونى" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "كلمة المرور" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "البريد الالكترونى" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "هذا البريد الالكتروني مستخدم من قبل ." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "الاسم الأول" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "اسم العائلة" @@ -152,12 +202,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "الرمز البريدي" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "الدولة" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "الاسم الأول" @@ -177,37 +227,37 @@ msgctxt "Address" msgid "Address" msgstr "العنوان" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "المدينة" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "الحي" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "الرمز البريدي" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "ولاية أو مقاطعة" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "رقم الهاتف" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "الشارع، رقم البريد، اسم الشركة" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "الشقة، الجناح، الوحدة، البناية، الطابق، إلخ" @@ -221,17 +271,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "القيمة غير صحيحة للدولة المختارة ." -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "إدارة العملاء" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "إدارة الموظفين" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "انتحال صفة العملاء" @@ -250,40 +300,40 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "تم تسجيل الخروج بنجاح ." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "تم انشاء المستخدم ." -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "تم تغيير كلمة المرور بنجاح ." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "تم تحديث العنوان بنجاح . " -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "تم حذف العنوان بنجاح ." -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "تفقّد صندوق الوارد لتفعيل البريد الالكتروني . " -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -292,39 +342,45 @@ msgstr "" "تم حذف حسابك بنجاح. في حالة حدوث اي مشكلة او ان كنت تملك اي استفسار فلا " "تتردد ان تتواصل معنا. " -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "الدفع" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "الشحن" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "عدد" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "عفواً. هذا المنتج غير متوفر حالياً ." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "عفواً. هذا المنتج غير موجود في المخزن حالياً ." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "عفواً. لا نستطيع العثور على هذا المنتج." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" @@ -334,58 +390,58 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "الدولة" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "البريد الالكترونى" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "أدخل العنوان الجديد" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "العنوان" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "أدخل العنوان الجديد" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "مماثلة لمعلومات الشحن" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "العنوان" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "طريقة الشحن ." -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "كود الخصم غير صحيح أو منتهي الصلاحية ." -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "بطاقة هدية أو كود خصم ." -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -393,182 +449,162 @@ msgstr "" "نأسف. ليس لدينا هذا الكم. تم تعيين الكمية على الحد الأقصى المتاح في الوقت " "الحالي" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "طلبك لا يستوجب الشحن." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "يرجى اختيار طريقة الشحن أولاً." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "هذا العرض غير صالح في دولتك." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "هذا العرض صالح فقط للعناصر المحددة." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "انتهت صلاحية القسيمة في الوقت الحالي. تم إلغاء عملية الطلب." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "يرجى مراجعة عملية الشراء الخاصة بك." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "الإقامة" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "تذاكر لفعاليات ثقافية" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "تذاكر لفعاليات ترفيهية" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "تذاكر لفعاليات رياضية" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "إعلان" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "الإمدادات الزراعية" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "أغذية الأطفال" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "الدراجات" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "كتب" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "ملابس أطفال" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "وقود منزلي" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "خدمات منزلية" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "كتب إلكترونية" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "مواد غذائية" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "فنادق" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "طبي" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "نقل الركاب" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "أدوية" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "تجديد ممتلكات" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "مطاعم" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "إسكان اجتماعي" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "أساسي" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "ماء" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -590,7 +626,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "أي دولة " -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "أنت الآن مسجل دخول ك{}" @@ -615,7 +651,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "غرام" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -630,77 +666,81 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "منتجات محددة" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "مجموعات محددة من المنتجات" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "تصنيفات محددة من المنتجات" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "الشحن" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "شحن مجاني" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "هذا العرض صالح فقط للطلبات التي تزيد عن %(amount)s' " -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "إدارة المبيعات والقسائم." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "الخصومات لا تنطبق على هذا المنتج" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -708,17 +748,17 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "لا يمكن إلغاء هذا الإجراء" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "إدارة التصفح" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "الرابط:" @@ -728,17 +768,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "تصنيف" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "المجموعة" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "الصفحة" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -749,165 +789,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "لم يتم تنفيذها" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "تم جزئياً" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "استوفى" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "إلغاء" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "استوفى" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "إلغاء" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "تأكيد الدفع " +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "تأكيد الشحن" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "تأكيد الإستيفاء" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "تأكيد الطلبية" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "تم إرجاع المال بنجاح '%(amount)s'" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "تم قبض المال بنجاح '%(amount)s'" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "تم إلغاء طلب الشراء بواسطة '%(user_name)s'" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "تم تقديم الطلب." +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "تم دفع المبلغ بالكامل" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -919,23 +967,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "طريقة الدفع غير موجودة" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "إدارة طلبات الشراء" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -943,12 +991,12 @@ msgid "" msgstr "" "لم نتمكن من تعيين الطلب إلى حسابك حيث أن عناوين البريد الإلكتروني لا تتطابق" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "تم الآن تعيين طلب الشراء إلى حسابك" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "إدارة الصفحات" @@ -958,58 +1006,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "كتيب" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "استرداد المال المدفوع" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "قبض" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1019,18 +1062,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "حالة الدفع" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1040,13 +1083,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1066,12 +1109,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1116,12 +1159,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "نفذ من المتجر" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "الاسم" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "السعر" @@ -1131,33 +1174,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "آخر تحديث" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "ترتيب بحسب" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "السعر" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "إدارة المنتجات" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "استعلام" @@ -1203,170 +1246,190 @@ msgid "Spanish" msgstr "اللغة الأسبانية" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 +msgid "Persian" +msgstr "" + +#: saleor/settings.py:74 msgid "French" msgstr "اللغة الفرنسية" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "اللغة الهنغارية" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "اللغة الأرمنية" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "اللغة الإيطالية" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "اللغة اليابانية" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "اللغة الكورية" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "اللغة النرويجية" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "اللغة الهولندية" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "اللغة البولندية" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "اللغة الرومانية" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "اللغة الروسية" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "اللغة السلوفاكية" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "اللغة التركية" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "اللغة الأوكرانية" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "الفيتنامية" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "الاتحاد الأوروبي" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "السعر بناء على الشحن" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "تكلفة الشحن بناء على الوزن" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "إدارة الشحن" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "إدارة الإعدادات" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1820,7 +1883,7 @@ msgstr "البحث" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "عربة التسوق الخاصة بك" #: templates/base.html:202 @@ -1832,44 +1895,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "إرشادات التنسيق" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "المبلغ الإجمالي" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "الشحن والضرائب محسوب في الشراء" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "اذهب إلى عربة التسوق" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "متابعة عملية الشراء" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "لا توجد منتجات في عربة التسوق الخاصة بك." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "تفقد تخفيضاتنا " - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "الصفحة الرئيسية" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "المبلغ الإجمالي" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "تكلفة الشحن ل:" @@ -1879,7 +1918,7 @@ msgid "Total" msgstr "المجموع" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "الشحن والضرائب محسوب في الشراء" @@ -1934,45 +1973,55 @@ msgid "Total" msgstr "المجموع" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "عربة التسوق الخاصة بك" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "عربة التسوق" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "تمت إزالة المنتج من عربة التسوق" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "منتج" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "عدد" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "السعر" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "متابعة عملية الشراء" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "عربة فارغة " +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "لا توجد منتجات في عربة التسوق الخاصة بك." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "تفقد تخفيضاتنا " + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2104,6 +2153,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "تقديم الطلب" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "الشحن والضرائب محسوب في الشراء" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "اذهب إلى عربة التسوق" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "متابعة عملية الشراء" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2214,8 +2278,8 @@ msgstr "تنزيلات" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2299,7 +2363,7 @@ msgstr "صفحات" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2547,7 +2611,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "إضافة مجموعة جديدة" @@ -2557,47 +2621,47 @@ msgstr "إضافة مجموعة جديدة" msgid "Collections" msgstr "مجموعات" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "إزالة مجموعة" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "عرض على الموقع" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "توافر" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "إلغاء" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "تحديث" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "إنشاء" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "منشور" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "مسودة" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "لا يمكن إلغاء مجموعات الصفحة الرئيسية" @@ -3156,7 +3220,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "المجموع" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3386,393 +3450,393 @@ msgid "Edit address" msgstr "تعديل العنوان" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "عنوان الشحن" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "عنوان الفاتورة" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "إلغاء طلب الشراء" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "إزالة مسودة طلب الشراء" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "طباعة" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "تفاصيل" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "المدفوعات" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "السجل" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "المدفوعات" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "المبلغ المقبوض" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "قبض" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "استرداد المال المدفوع" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "زبون" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "تعديل" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "مسودة طلب الشراء %(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "تاريخ الطلب" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "السعر" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "عدد" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "المجموع" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "تغيير الكمية" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "تحرير الشحن" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "الشحن" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "(شامل) الضرائب" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "الضرائب" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "خصم" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "تعديل القسيمة" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "تعديل القسيمة" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "تعديل الخصم" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "تعديل الخصم" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "المجموع الكلي" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "إتمام الطلب" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "أضف منتج إلى طلب الشراء" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "أضف منتج" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "إنشاء أمر شراء" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "إنشاء أمر شراء" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "فاتورة" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "عرض على الموقع" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "إلغاء" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "قوائم التعبئة" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "لا توجد ملاحظات من الزبون مرفقة مع الطلب." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "ملاحظات مرفقة مع الطلب" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "لا توجد ملاحظات مرفقة مع هذا الطلب." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "إضافة ملاحظة" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "تاريخ" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "حالة الدفع" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "كمية" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "لم يتم الدفع لهذا الطلب." @@ -5728,24 +5792,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6295,6 +6360,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "عنوان الفاتورة" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6302,7 +6373,7 @@ msgid "Shipping address" msgstr "عنوان الشحن" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "لا يتطلب الشحن" diff --git a/locale/ar/LC_MESSAGES/djangojs.mo b/locale/ar/LC_MESSAGES/djangojs.mo index cd3c4c4abdf..0a5990b8fda 100644 Binary files a/locale/ar/LC_MESSAGES/djangojs.mo and b/locale/ar/LC_MESSAGES/djangojs.mo differ diff --git a/locale/az/LC_MESSAGES/django.mo b/locale/az/LC_MESSAGES/django.mo index cd59ce7c905..3cb248556ca 100644 Binary files a/locale/az/LC_MESSAGES/django.mo and b/locale/az/LC_MESSAGES/django.mo differ diff --git a/locale/az/LC_MESSAGES/django.po b/locale/az/LC_MESSAGES/django.po index fb018a05827..919d3e99663 100644 --- a/locale/az/LC_MESSAGES/django.po +++ b/locale/az/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Rovshan Musayev , 2019\n" "Language-Team: Azerbaijani (https://www.transifex.com/mirumee/teams/34782/az/)\n" @@ -21,32 +21,82 @@ msgstr "" "Language: az\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "E-poçt" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "E-poçt" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Verilmiş ad" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Soyadı" @@ -151,12 +201,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Verilmiş ad" @@ -176,37 +226,37 @@ msgctxt "Address" msgid "Address" msgstr "" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -220,17 +270,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -249,317 +299,303 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Miqdarı" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "E-poçt" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -577,7 +613,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -602,7 +638,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -617,91 +653,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -711,17 +751,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -732,153 +772,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -890,35 +950,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -928,58 +988,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -989,18 +1044,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1010,13 +1065,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1036,12 +1091,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1086,12 +1141,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "adı" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1101,33 +1156,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Ardıcıllqla düz" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1173,170 +1228,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1783,7 +1858,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1795,44 +1870,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1842,7 +1893,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1897,45 +1948,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Miqdarı" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2067,6 +2128,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2177,8 +2253,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2262,7 +2338,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2506,7 +2582,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2516,47 +2592,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Dərc olundu" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3115,7 +3191,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3345,393 +3421,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Miqdarı" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5683,24 +5759,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6247,6 +6324,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6254,7 +6337,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/az/LC_MESSAGES/djangojs.mo b/locale/az/LC_MESSAGES/djangojs.mo index 9fccd49f4ff..15d4dac6469 100644 Binary files a/locale/az/LC_MESSAGES/djangojs.mo and b/locale/az/LC_MESSAGES/djangojs.mo differ diff --git a/locale/bg/LC_MESSAGES/django.mo b/locale/bg/LC_MESSAGES/django.mo index 3de88e11fb3..9b9a9476ca6 100644 Binary files a/locale/bg/LC_MESSAGES/django.mo and b/locale/bg/LC_MESSAGES/django.mo differ diff --git a/locale/bg/LC_MESSAGES/django.po b/locale/bg/LC_MESSAGES/django.po index 88b18ac44bc..203717f6861 100644 --- a/locale/bg/LC_MESSAGES/django.po +++ b/locale/bg/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Patryk Zawadzki , 2019\n" "Language-Team: Bulgarian (https://www.transifex.com/mirumee/teams/34782/bg/)\n" @@ -22,32 +22,82 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "E-поща" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "E-поща" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Собствено име" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Фамилно име" @@ -152,12 +202,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "пощенски код" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Държава" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Собствено име" @@ -177,37 +227,37 @@ msgctxt "Address" msgid "Address" msgstr "Адрес" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Област" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Пощенски код" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -221,17 +271,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Тази стойност е невалидна за избраната държава" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -252,136 +302,142 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Успешно излязохте" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Потребителят е създаден" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Паролата е успешно променена" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Адреса е успешно променен" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Адреса е успешно премахнат" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Доставка" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Количество" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Извинете. Продукта не е наличен." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Извинете. Изчерпано количество" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Не можем да намерим този продукт." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Само %d има на склад." -msgstr[1] "Само %d има на склад." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Държава" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "E-поща" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Въведете нов адрес" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Адрес" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Въведете нов адрес" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Същия като посочения за доставка" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Адрес" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Метод за доставка" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Код за отстъпка е грешен или е изтекъл" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Подаръчна карта или код за отстъпка" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -389,182 +445,162 @@ msgstr "" "Извинете. Нямаме толкова от тези артикули на склад. Зададено е максимално " "количество за наличностите в момента." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Поръчката ви не изисква доставка." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Моля, изберете метод за доставка." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Тази оферта е валидна само за избраните артикули." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Този ваучер е изтекъл. Моля, прегледайте плащането си" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Моля, прегледайте плащането си" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -582,7 +618,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Вече сте влезли в профила си като {}" @@ -607,7 +643,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -622,91 +658,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Доставка" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Безплатна доставка" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)sот доставката" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)sот" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Тази оферта е валидна само за поръчки %(amount)s" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Отстъпка не се отнася за този продукт" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -716,17 +756,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -737,153 +777,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Поръчката е направена" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -895,35 +955,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Плащането не съществува" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -933,58 +993,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Възстановяване" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Улавяне" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -994,18 +1049,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Статус на плащането" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1015,13 +1070,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1041,12 +1096,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1091,12 +1146,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "изчерпано количество" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "име" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "цена" @@ -1106,33 +1161,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "последно обновяване" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Сортиране по" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Цена" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s-%(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Запитване" @@ -1178,170 +1233,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1799,8 +1874,8 @@ msgstr "Търсене" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" -msgstr "Вашата кошница" +msgid "Your cart" +msgstr "Вашата количка" #: templates/base.html:202 msgid "Account" @@ -1811,44 +1886,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Ръководство за стила" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Междинна сума" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Отиди в количката" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Плащане" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "В кошницата ви няма продукти." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Проверете нашите промоции" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Начало" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Междинна сума" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Разходи за доставка за:" @@ -1858,7 +1909,7 @@ msgid "Total" msgstr "Тотал" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1913,45 +1964,55 @@ msgid "Total" msgstr "Тотал" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Вашата количка" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Количка" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Продуктът е премахнат от количката" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Продукт" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Количество" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Цена" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Плащане" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "В кошницата ви няма продукти." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Проверете нашите промоции" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2083,6 +2144,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Направи поръчка" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Отиди в количката" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Плащане" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2193,8 +2269,8 @@ msgstr "Продажби" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2278,8 +2354,8 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Издание:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2527,7 +2603,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2537,47 +2613,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Виж на сайта" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Отмяна" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Актуализация" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Създава" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Публикувано" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Чернова" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3147,7 +3223,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Тотал" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3377,393 +3453,393 @@ msgid "Edit address" msgstr "Редакция на адрес" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Адрес за доставка" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Адрес на плащане" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Отмяна на поръчката" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Печат" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Детайли" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Плащания" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "История" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Плащания" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Неизплатено салдо" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Субсидирана сума" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Captured amount" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Улавяне" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Възстановяване" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Клиент" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Редакция" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Сложен на" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "артикул" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Цена" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Количество" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Тотал" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Промяна на количеството" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Премахване на линията" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Доставка" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Отстъпка" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Общо" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Добавете продукта към поръчката" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Добавя продукт" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Фактура" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Виж на сайта" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Проследяващ номер: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Отмяна" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Опаковъчни листове" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Бележки на поръчката" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Няма бележки към тази поръчка." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Добавя бележка" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Номер на транзакцията" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Дата" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Статус на плащането" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Количество" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "№%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Не са извършени плащания за тази поръчка." @@ -5738,24 +5814,25 @@ msgstr "Последни продукти" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(По желание)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Файл" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6313,6 +6390,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Адрес на плащане" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6320,7 +6403,7 @@ msgid "Shipping address" msgstr "Адрес за доставка" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/bg/LC_MESSAGES/djangojs.mo b/locale/bg/LC_MESSAGES/djangojs.mo index 73417215c54..5f8bb811c4c 100644 Binary files a/locale/bg/LC_MESSAGES/djangojs.mo and b/locale/bg/LC_MESSAGES/djangojs.mo differ diff --git a/locale/bn/LC_MESSAGES/django.mo b/locale/bn/LC_MESSAGES/django.mo index 68e835a0adf..0aa2df3423b 100644 Binary files a/locale/bn/LC_MESSAGES/django.mo and b/locale/bn/LC_MESSAGES/django.mo differ diff --git a/locale/bn/LC_MESSAGES/django.po b/locale/bn/LC_MESSAGES/django.po index 2bdc1fe4974..9fd7e192300 100644 --- a/locale/bn/LC_MESSAGES/django.po +++ b/locale/bn/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # # Translators: # Mohd. Shafikur Rahman , 2018 +# Tariq Mostahid , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Mohd. Shafikur Rahman , 2018\n" +"Last-Translator: Tariq Mostahid , 2019\n" "Language-Team: Bengali (https://www.transifex.com/mirumee/teams/34782/bn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,40 +22,90 @@ msgstr "" "Language: bn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" -msgstr "" +msgstr "ই-মেইল" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" -msgstr "" +msgstr "পাসওয়ার্ড" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" -msgstr "" +msgstr "ই-মেইল" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." -msgstr "" +msgstr "এই ইমেইল ইতিমধ্যে নিবন্ধিত হয়েছে।" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" -msgstr "" +msgstr "প্রদত্ত নাম" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" -msgstr "" +msgstr "পারিবারিক নাম" #: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" -msgstr "" +msgstr "এলাকা" #: saleor/account/i18n.py:20 msgctxt "Address field" @@ -64,12 +115,12 @@ msgstr "" #: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" -msgstr "" +msgstr "বিভাগ" #: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" -msgstr "" +msgstr "জেলা" #: saleor/account/i18n.py:23 msgctxt "Address field" @@ -84,12 +135,12 @@ msgstr "" #: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" -msgstr "" +msgstr "আমিরাত" #: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" -msgstr "" +msgstr "দ্বীপ" #: saleor/account/i18n.py:27 msgctxt "Address field" @@ -114,7 +165,7 @@ msgstr "" #: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" -msgstr "" +msgstr "পোস্টাল কোড" #: saleor/account/i18n.py:32 msgctxt "Address field" @@ -124,7 +175,7 @@ msgstr "" #: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" -msgstr "" +msgstr "প্রদেশ" #: saleor/account/i18n.py:34 msgctxt "Address field" @@ -144,96 +195,96 @@ msgstr "" #: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" -msgstr "" +msgstr "গ্রাম / পৌরসভা" #: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" -msgstr "" +msgstr "পোষ্টকোড" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" -msgstr "" +msgstr "দেশ" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" -msgstr "" +msgstr "প্রদত্ত নাম" #: saleor/account/i18n.py:96 msgctxt "Personal name" msgid "Family name" -msgstr "" +msgstr "পারিবারিক নাম" #: saleor/account/i18n.py:98 msgctxt "Company or organization" msgid "Company or organization" -msgstr "" +msgstr "কোম্পানি অথবা সংস্থা" #: saleor/account/i18n.py:100 msgctxt "Address" msgid "Address" -msgstr "" +msgstr "ঠিকানা" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" -msgstr "" +msgstr "শহর" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" -msgstr "" +msgstr "জেলা" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" -msgstr "" +msgstr "পোস্টাল কোড" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" -msgstr "" +msgstr "রাজ্য বা প্রদেশ" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" -msgstr "" +msgstr "ফোন নম্বর" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" -msgstr "" +msgstr "রাস্তার ঠিকানা, পি.ও বক্স, কোম্পানির নাম" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" -msgstr "" +msgstr "অ্যাপার্টমেন্ট/কামরা, স্যুট, ইউনিট, বিল্ডিং, তলা, ইত্যাদি" #: saleor/account/i18n.py:155 saleor/account/validators.py:11 msgid "The phone number entered is not valid." -msgstr "" +msgstr "প্রবেশকৃত ফোন নম্বর বৈধ নয়।" #: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" -msgstr "" +msgstr "এই মান নির্বাচিত দেশের জন্য অকার্যকর" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." -msgstr "" +msgstr "গ্রাহকদের পরিচালনা করুন।" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." -msgstr "" +msgstr "কর্মীদের পরিচালনা করুন।" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." -msgstr "" +msgstr "গ্রাহকদের রুপে " #: saleor/account/templatetags/i18n_address_tags.py:12 #, python-format @@ -249,317 +300,307 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." -msgstr "" +msgstr "আপনি সফলভাবে লগ আউট করেছেন।" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" -msgstr "" +msgstr "ব্যবহারকারী তৈরি করা হয়েছে" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." -msgstr "" +msgstr " পাসওয়ার্ডটি সফলভাবে হালনাগাদ করা হয়েছে। " -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." -msgstr "" +msgstr "হিসাব বিবরণ সফলভাবে হালনাগাদ করা হয়েছে। " -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." -msgstr "" +msgstr "ঠিকানা সফলভাবে হালনাগাদ করা হয়েছে।" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" -msgstr "" +msgstr "ঠিকানা সফলভাবে মুছে ফেলা হয়েছে" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." -msgstr "" +msgstr "একটি নিশ্চিতকরণ ই-মেইল পাঠানো হয়েছে, দয়া করে আপনার ইনবক্স দেখুন। " -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" +"আপনার হিসাব বিবরণ সফলভাবে মুছে ফেলা হয়েছে। কোন সমস্যা বা প্রশ্নের ক্ষেত্রে " +"আমাদের সাথে বিনা দ্বিধায় যোগাযোগ করুন।" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" -msgstr "" +msgstr "পরিমাণ" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." -msgstr "" +msgstr "দুঃখিত। এই পণ্য বর্তমানে উপলব্ধ নয়।" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." -msgstr "" +msgstr "দুঃখিত। পণ্যটির বর্তমানে মজুদ নেই." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "দুঃখিত। আপনি এই প্রকরণটি %d বারের চেয়ে বেশি যোগ করতে পারবেন না।" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." -msgstr "" +msgstr "উফস. আমরা ওই পণ্যটি খুঁজে পাচ্ছি না।" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "শুধুমাত্র %dটি মজুত বাকি।" +msgstr[1] "শুধুমাত্র %dটি মজুত বাকি।" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" -msgstr "" +msgstr "দেশ" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" -msgstr "" +msgstr "ই-মেইল" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" -msgstr "" +msgstr "নতুন ঠিকানা লিখুন" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" -msgstr "" +msgstr "ঠিকানা" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" -msgstr "" +msgstr "নতুন ঠিকানা লিখুন" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" -msgstr "" +msgstr "প্রেরণের ঠিকানার মতোই" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" -msgstr "" +msgstr "ঠিকানা" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" -msgstr "" +msgstr "পরিবহন পদ্ধতি" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" -msgstr "" +msgstr "ছাড়ের কোড ভুল বা মেয়াদ শেষ" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" -msgstr "" +msgstr "উপহার কার্ড বা ছাড়ের কোড" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" +"দুঃখিত। আমাদের ওই পরিমানে প্রকরণ মজুদে নেই। এই মুহূর্তের জন্য সর্বোচ্চ " +"পরিমাণ উপলব্ধ প্রকরণ ধার্য করা হয়েছিল।" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." -msgstr "" +msgstr "আপনার অর্ডারটি পাঠানো প্রয়োজন নেই ।" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." -msgstr "" +msgstr "প্রথমে একটি পরিবহন পদ্ধতি নির্বাচন করুন।" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." -msgstr "" +msgstr "এই প্রস্তাব আপনার দেশে বৈধ নয়।" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." -msgstr "" +msgstr "এই অফার শুধুমাত্র নির্বাচিত পণ্যের উপর প্রযোজ্য।" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." -msgstr "" - -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" +msgstr "ভাউচার ইতিমধ্যে মেয়াদ শেষ হয়ে গেছে। অর্ডার বসানো বাতিল হয়েছে।" -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." -msgstr "" +msgstr "এই রশিদের মেয়াদ শেষ হয়ে গেছে। আপনার চেকআউট পর্যালোচনা করুন।" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." -msgstr "" +msgstr "আপনার চেকআউট পর্যালোচনা করুন।" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" -msgstr "" +msgstr "বাসস্থান" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" -msgstr "" +msgstr "সাংস্কৃতিক ঘটনাবলির স্বীকারোক্তি" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" -msgstr "" +msgstr "বিনোদন ঘটনাবলির স্বীকারোক্তি" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" -msgstr "" +msgstr "ক্রীড়া ঘটনাবলির স্বীকারোক্তি" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" -msgstr "" +msgstr "বিজ্ঞাপন" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" -msgstr "" +msgstr "কৃষিজাত সরবরাহ" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" -msgstr "" +msgstr "শিশুর খাদ্য সামগ্রী" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" -msgstr "" +msgstr "মোটরসাইকেল সমূহ" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" -msgstr "" +msgstr "বই সমূহ" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -577,7 +618,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -602,10 +643,10 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" -msgstr "" +msgstr "%" #: saleor/discount/__init__.py:23 msgctxt "Voucher: discount for" @@ -617,91 +658,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" -msgstr "" +msgstr "বিনামূল্যে পরিবহন" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" -msgstr "" +msgstr "পরিবহনে %(discount)s ছাড় " -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" -msgstr "" +msgstr "%(discount)sছাড় " -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." -msgstr "" +msgstr "এই অফার শুধুমাত্র %(amount)s এর উপরের অর্ডারের জন্য প্রযোজ্য।" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" +msgstr "ছাড় এই পণ্যের জন্য প্রযোজ্য নয়" + +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." msgstr "" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -711,17 +756,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -732,153 +777,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -888,37 +953,37 @@ msgstr "" #: saleor/order/forms.py:36 msgctxt "Payment delete form error" msgid "Payment does not exist" -msgstr "" +msgstr "মূল্যপরিশোধ পদ্ধতি বিদ্যমান নেই" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -928,58 +993,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -989,18 +1049,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1010,13 +1070,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1036,12 +1096,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1086,12 +1146,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "নাম" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1101,36 +1161,36 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" -msgstr "" +msgstr "অনুসন্ধান" #: saleor/settings.py:61 msgid "Arabic" @@ -1173,170 +1233,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1455,7 +1535,7 @@ msgstr "" #: templates/account/details.html:26 msgid "My account" -msgstr "" +msgstr "আমার বিবরণ" #: templates/account/details.html:30 msgctxt "User profile tab" @@ -1660,7 +1740,7 @@ msgstr "" #: templates/account/password_reset_from_key.html:11 msgid "Bad Token" -msgstr "" +msgstr "খারাপ টোকেন" #: templates/account/password_reset_from_key.html:13 #, python-format @@ -1715,7 +1795,7 @@ msgstr "" #: templates/account/password_reset_from_key_done.html:9 msgid "Your password is now changed." -msgstr "" +msgstr "আপনার পাসওয়ার্ডটি এখন পরিবর্তিত হয়েছে।" #: templates/account/password_reset_from_key_done.html:10 #, python-format @@ -1775,7 +1855,7 @@ msgstr "" #: templates/base.html:136 msgid "Search for product" -msgstr "" +msgstr "পণ্য অনুসন্ধান করুন" #: templates/base.html:139 msgid "Search" @@ -1783,7 +1863,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1795,44 +1875,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1842,7 +1898,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1897,45 +1953,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" -msgstr "" +msgstr "পরিমাণ" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -1984,12 +2050,12 @@ msgstr "" #: templates/checkout/shipping_method.html:15 msgid "Select other address" -msgstr "" +msgstr "অন্য ঠিকানা নির্বাচন করুন" #: templates/checkout/shipping_method.html:23 msgctxt "Checkout shipping method form title" msgid "Shipping method" -msgstr "" +msgstr "পরিবহন পদ্ধতি" #: templates/checkout/shipping_method.html:40 msgctxt "Checkout shipping method primary action" @@ -2010,12 +2076,12 @@ msgstr "" #: templates/checkout/snippets/addresses_form.html:4 msgctxt "Checkout addresses form label" msgid "Same as shipping" -msgstr "" +msgstr "প্রেরণের ঠিকানার মতোই" #: templates/checkout/snippets/addresses_form.html:11 msgctxt "Checkout addresses form label" msgid "Enter a new address" -msgstr "" +msgstr "নতুন ঠিকানা লিখুন" #: templates/checkout/snippets/voucher_form.html:14 msgctxt "Checkout voucher form action" @@ -2067,6 +2133,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2158,7 +2239,7 @@ msgstr "" #: templates/dashboard/base.html:131 msgctxt "Dashboard sales (discounts) list" msgid "Sales" -msgstr "" +msgstr "বিক্রয়" #: templates/dashboard/base.html:136 #: templates/dashboard/discount/voucher/form.html:12 @@ -2172,13 +2253,13 @@ msgstr "" #: templates/dashboard/base.html:145 msgctxt "Dashboard sales. `Sales' is noun of to sell" msgid "Sales" -msgstr "" +msgstr "বিক্রয়" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2232,7 +2313,7 @@ msgstr "" #: templates/dashboard/base.html:200 msgctxt "Dashboard shipping zones list" msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" #: templates/dashboard/base.html:207 templates/dashboard/menu/detail.html:23 #: templates/dashboard/menu/form.html:12 templates/dashboard/menu/form.html:31 @@ -2262,7 +2343,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2506,7 +2587,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2516,47 +2597,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -2747,7 +2828,7 @@ msgstr "নাম" #: templates/dashboard/customer/list.html:43 msgctxt "Customers table header" msgid "Email" -msgstr "" +msgstr "ই-মেইল" #: templates/dashboard/customer/list.html:46 msgctxt "Customers table header" @@ -2824,7 +2905,7 @@ msgstr "" #: templates/dashboard/discount/sale/list.html:18 msgctxt "Dashboard sales (discounts) list." msgid "Sales" -msgstr "" +msgstr "বিক্রয়" #: templates/dashboard/discount/sale/form.html:32 msgctxt "Sale (discount) action" @@ -2838,7 +2919,7 @@ msgstr "" #: templates/dashboard/discount/sale/list.html:9 msgid "Sales" -msgstr "" +msgstr "বিক্রয়" #: templates/dashboard/discount/sale/list.html:27 msgctxt "Sale (discount) list add button text" @@ -3115,11 +3196,11 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" -msgstr "" +msgstr "অতিথি" #: templates/dashboard/index.html:74 msgctxt "Empty order table message" @@ -3153,7 +3234,7 @@ msgstr "" #: templates/dashboard/index.html:116 msgid "Guest" -msgstr "" +msgstr "অতিথি" #: templates/dashboard/index.html:130 msgctxt "Empty Preauthorized payments table message" @@ -3345,393 +3426,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" -msgstr "" +msgstr "পরিমাণ" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -3757,7 +3838,7 @@ msgstr "" #: templates/dashboard/order/modal/cancel_line.html:34 msgctxt "Modal remove order line table header" msgid "Quantity" -msgstr "" +msgstr "পরিমাণ" #: templates/dashboard/order/fulfillment.html:105 #, python-format @@ -4145,7 +4226,7 @@ msgstr "" #: templates/dashboard/order/pdf/invoice.html:67 msgctxt "Shipment order table header" msgid "Quantity" -msgstr "" +msgstr "পরিমাণ" #: templates/dashboard/order/pdf/invoice.html:70 msgctxt "Shipment order table header" @@ -4169,7 +4250,7 @@ msgstr "" #: templates/dashboard/order/pdf/invoice.html:115 msgctxt "Order total shipping price header" msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" #: templates/dashboard/order/pdf/invoice.html:123 msgctxt "Order total taxes header" @@ -4675,7 +4756,7 @@ msgstr "" #: templates/dashboard/product/product_type/form.html:103 #: templates/dashboard/product/product_variant/form.html:85 msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" #: templates/dashboard/product/form.html:115 #: templates/dashboard/product/product_variant/form.html:76 @@ -5212,7 +5293,7 @@ msgstr "" #: templates/dashboard/shipping/methods/form.html:72 msgctxt "Shipping method form title" msgid "Shipping method" -msgstr "" +msgstr "পরিবহন পদ্ধতি" #: templates/dashboard/shipping/modal/confirm_delete.html:13 #, python-format @@ -5416,7 +5497,7 @@ msgstr "নাম" #: templates/dashboard/staff/list.html:45 msgctxt "Staff members table header" msgid "Email" -msgstr "" +msgstr "ই-মেইল" #: templates/dashboard/staff/list.html:48 msgctxt "Staff members table header" @@ -5683,24 +5764,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -5730,7 +5812,7 @@ msgstr "" #: templates/order/_ordered_items_table.html:188 msgctxt "Order details column title" msgid "Quantity" -msgstr "" +msgstr "পরিমাণ" #: templates/order/_ordered_items_table.html:48 msgctxt "Order details column title" @@ -5745,7 +5827,7 @@ msgstr "" #: templates/order/_ordered_items_table.html:112 msgctxt "Order details shipment row text" msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" #: templates/order/_ordered_items_table.html:144 msgctxt "Order details taxes text" @@ -6219,7 +6301,7 @@ msgstr "" #: templates/templated_email/order/confirm_order.email:19 msgctxt "Order confirmation e-mail table header" msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" #: templates/templated_email/order/confirm_order.email:20 msgctxt "Order confirmation e-mail table header" @@ -6247,6 +6329,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6254,7 +6342,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" @@ -6366,7 +6454,7 @@ msgstr "" #: templates/templated_email/source/partials/_order_lines.mjml:19 msgctxt "E-mail order lines summary table" msgid "Shipping" -msgstr "" +msgstr "প্রেরণ" #: templates/templated_email/source/partials/_order_lines.mjml:28 msgctxt "E-mail order lines summary table" @@ -6396,7 +6484,7 @@ msgstr "" #: templates/templated_email/source/partials/_order_lines.mjml:59 msgctxt "Quantity ordered of a product" msgid "Quantity" -msgstr "" +msgstr "পরিমাণ" #: templates/templated_email/source/partials/_order_lines.mjml:60 msgctxt "Unit price of a product" diff --git a/locale/bn/LC_MESSAGES/djangojs.mo b/locale/bn/LC_MESSAGES/djangojs.mo index 31891638e6b..b3829466a33 100644 Binary files a/locale/bn/LC_MESSAGES/djangojs.mo and b/locale/bn/LC_MESSAGES/djangojs.mo differ diff --git a/locale/ca/LC_MESSAGES/django.mo b/locale/ca/LC_MESSAGES/django.mo index bdb04cafb56..0af45578cc9 100644 Binary files a/locale/ca/LC_MESSAGES/django.mo and b/locale/ca/LC_MESSAGES/django.mo differ diff --git a/locale/ca/LC_MESSAGES/django.po b/locale/ca/LC_MESSAGES/django.po index 90a0a1283cf..4a08dc9af83 100644 --- a/locale/ca/LC_MESSAGES/django.po +++ b/locale/ca/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Jordi Divins , 2019\n" "Language-Team: Catalan (https://www.transifex.com/mirumee/teams/34782/ca/)\n" @@ -22,32 +22,82 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Contrasenya" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Correu electrònic" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Aquesta adreça de correu ja ha estat registrada." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Nom atorgat" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Nom de família" @@ -152,12 +202,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Codi ZIP" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "País" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Nom atorgat" @@ -177,37 +227,37 @@ msgctxt "Address" msgid "Address" msgstr "Adreça" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Ciutat" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Districte" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Codi postal" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Estat o província" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telèfon" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Carrer, caixa d'oficina postal, nom d'empresa" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Apartament, suite, unitat, edifici, pis, etc" @@ -221,17 +271,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Valor invàlid pel país escollit" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Gestiona clients." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Gestiona personal." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Suplantació de clients." @@ -252,42 +302,42 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "S'ha tancat la sessió correctament." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Usuari creat" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Contrasenya canviada correctament" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adreça actualitzada correctament." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adreça eliminada correctament." -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" "Si us plau, comprova si has rebut un correu electrònic de confirmació a la " "teva bústia." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -296,96 +346,102 @@ msgstr "" "Compte eliminat correctament. En cas de tenir algún problema o consulta pots" " contactar amb nosaltres." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Facturació" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Enviament" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Quantitat" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Ho sentim. Actualment aquest producte no està disponible." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Ho sentim. Actualment aquest producte no té estoc." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Vaja. Producte no trobat." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Només queda %d producte en estoc." -msgstr[1] "Només queden %d en estoc." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "País" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Introduir una nova adreça" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adreça" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Introduir una nova adreça" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "La mateixa que la d'enviament" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adreça" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Mètode d'enviament" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Codi de descompte incorrecte o caducat" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Tarjeta regal o codi de descompte" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -393,184 +449,164 @@ msgstr "" "Ho sentim. No tenim tants articles en estoc. La quantitat ha estat cambiada " "a la quantitat màxima que disposem." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "La comanda no necessita enviament." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Si us plau, cal escollir primer un mètode d'enviament." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Aquesta oferta no és válida al seu país." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Aquesta oferta només és válida per alguns articles." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" "El val de descompte ha caducat mentrestant. La comanda ha estat anul·lada." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Mètode d'enviament no seleccionat" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Adreça d'enviament no seleccionada" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Adreça d'enviament no vàlida per l'adreça d'enviament escollida" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" "Aquest val de descompte ha caducat. Si us plau revisi el procés de pagament." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Si us plau revisi el procés de pagament." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "allotjament" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "admissió a esdeveniments culturals" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "admissió a esdeveniments d'entreteniment" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "admissió a esdeveniments d'esport" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "publicitat" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "subministraments agrícoles" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "aliments per a nadons" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "bicicletes" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "llibres" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "roba per nens" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "combustible domèstic" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "serveis domèstics" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "llibres electrònics" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "aliments" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotels" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "mèdic" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "diaris" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "transport de passatgers" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "productes farmacèutics" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "renovacions immobiliàries" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restaurants" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "habitatge social" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "estàndard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "aigua" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -588,7 +624,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Qualsevol país" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Identificat com l'usuari: {}" @@ -613,7 +649,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -628,91 +664,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Productes específics" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Col·leccions específiques de productes" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Categories específiques de productes" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Enviament" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Enviament gratuït" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s sobre l'enviament" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Aquesta oferta només és váida per comandes de més de %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Gestiona descomptes i vals de descompte." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Descompte no aplicable per aquest producte." -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Només falta %(quantity)d article per complir." -msgstr[1] "Només falten %(quantity)d articles per complir." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Aquest compliment no pot ser cancel·lat" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Gestiona navegació." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL: " @@ -722,17 +762,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Categoria:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Col·lecció" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Pàgina:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -743,153 +783,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "No s'ha completat" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Completat parcialment" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Completat" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Cancel·lat" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Completat" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Cancel·lat" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Confirmació de pagament" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Confirmació d'enviament" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Confirmació de completat" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Confirmació de comanda" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Comanda creada des d'un esborrany ordenar per %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Pagament anul·lat per %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Pagament reemborsat: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Correctament capturat: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Comanda marcada manualment com a pagada per %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Comanda cancel·lada per %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Hem reincorporat %(quantity)d article" -msgstr[1] "Hem reincorporat %(quantity)darticles" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s ha afegit la nota: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Completat #%(fulfillment)s cancel·lat per %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "%(quantity_fulfilled)d article complert." -msgstr[1] "%(quantity_fulfilled)d articles complerts." +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Comanda va ser realitzada" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Comanda va ser pagada completament" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "El correu %(email_type)sha estat enviat al client (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Detalls de la comanda actualitzats per %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "%(quantity)d línia d'article sobrepassada en aquesta comanda" -msgstr[1] "%(quantity)d línies d'article sobrepassades en aquesta comanda" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -901,23 +961,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "El pagament no existeix" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "El pagament no es pot cancel·lar." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Gestiona comandes." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -926,12 +986,12 @@ msgstr "" "No podem assignar la comanda al teu compte, ja que les adreces de correu " "electrònic no són iguals" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "La comanda està assignada al teu compte" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Gestiona pàgines" @@ -941,58 +1001,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manual" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Autorització" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Carrega" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Retornar diners" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Captura" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Buida" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "No s'ha cobrat" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Diners retornats" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1004,18 +1059,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Estat de pagament" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "La comanda no ha estat cobrada." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "La data de pagament no és vàlida." @@ -1025,13 +1080,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "La comanda no pot ser processada" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "La moneda %(currency)s encara no està disponible." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Paga ara mitjançant Razorpay" @@ -1051,12 +1106,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "La comanda no ha estat cobrada." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Pagament total" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1101,12 +1156,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "sense estoc" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nom" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "preu" @@ -1116,33 +1171,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "última actualització" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Ordena per" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Preu" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s- %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Gestiona producte." -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Consulta" @@ -1188,170 +1243,190 @@ msgid "Spanish" msgstr "Espanyol" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 msgid "Persian" msgstr "Persa" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Francès" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Hongarès" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italià" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japonès" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Coreà" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongol" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Holandès" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polonès" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Portuguès de Brasil" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Romanès" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Rus" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Eslovac" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Suec" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turc" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ucrainès" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnamita" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Xinès simplificat" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Xinès tradicional" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Unió europea" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Porta d'enllaç de proves" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Enviament basat en el preu" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Enviament basat en el pes" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d països" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Gestiona enviament." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s i superior" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s a %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s i superior" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s a %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Gestiona configuracions." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1813,7 +1888,7 @@ msgstr "Cerca" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "El teu carret" #: templates/base.html:202 @@ -1825,44 +1900,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Guia d'estils" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotal" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Enviament i impostos calculats durant el procés de pagament" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Anar al carret" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Procés de pagament" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "No hi ha productes al teu carret." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Consulteu les nostres ofertes" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Inici" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotal" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Costs d'enviament per:" @@ -1872,9 +1923,9 @@ msgid "Total" msgstr "Total" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" -msgstr "Enviament i impostos calculats durant el procés de compra" +msgstr "Enviament i impostos calculats durant el procés de pagament" #: templates/checkout/details.html:7 msgctxt "Checkout page title" @@ -1927,45 +1978,55 @@ msgid "Total" msgstr "Total" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "El teu carret" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Carret" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "El producte ha estat esborrat del carret" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Producte" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Quantitat" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Preu" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" -msgstr "Procés de compra" +msgstr "Procés de pagament" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Buidar el carret" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "No hi ha productes al teu carret." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Consulteu les nostres ofertes" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2097,6 +2158,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Realitza comanda" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Enviament i impostos calculats durant el procés de pagament" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Anar al carret" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Procés de pagament" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2207,8 +2283,8 @@ msgstr "Descomptes" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2292,8 +2368,8 @@ msgstr "Pàgines" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "Buit:" +msgid "Release:" +msgstr "" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2542,7 +2618,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Afegeix nova col·lecció" @@ -2552,47 +2628,47 @@ msgstr "Afegeix nova col·lecció" msgid "Collections" msgstr "Col·leccions" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Elimina col·lecció" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Veure al lloc web" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Disponibilitat" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Cancel·la" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Actualitza" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Crea" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Publicat" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Esborrany" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "No es pot despublicar la col·lecció de la pàgina inicial" @@ -3166,7 +3242,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Total" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3401,393 +3477,393 @@ msgid "Edit address" msgstr "Edita adreça" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Adreça d'enviament" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Adreça de facturació" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Cancel·la comanda" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Elimina l'esborrany de comanda" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Imprimir" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detalls" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Pagaments" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Historial" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Pagaments" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/P" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Saldo pendent" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Quantitat pre-autoritzada" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/P" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Quantitat capturada" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Capturar" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Retornar diners" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Buida" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Marcar com a pagat" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Client" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Edita detalls del client" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Edita" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "No hi ha adreça d'enviament" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "La mateixa que l'adreça d'enviament" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "No hi ha adreça de facturació" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Esborrany de comanda #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Comanda #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Creada el" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Article" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Preu" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Quantitat" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Total" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Canvia quantitat" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Elimina línia" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Edita l'enviament" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Enviament (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Enviament" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Impostos (inclosos)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Impostos" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Descompte (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Descompte" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Edita val descompte" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Edita val de descompte" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Edita descompte" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Edita descompte" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Completar comanda" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Afegeix producte a la comanda" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Afegeix producte" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Crea comanda" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Crea comanda" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Factura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Veure al lloc web" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Número de seguiment: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Cancel·la" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Edita número de seguiment" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Edita seguiment" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Afegeix seguiment" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Nota de client" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "No hi ha cap nota del client associada a aquesta comanda." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Notes de comanda" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "No hi ha notes del client associades a aquesta comanda." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Afegeix nota" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Codi de transacció" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Data" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Estat de pagament" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Quantitat" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "# %(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "No hi ha pagaments fets per aquesta comanda." @@ -5805,24 +5881,25 @@ msgstr "Productes destacats" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(opcional)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Fitxer" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6395,6 +6472,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Adreça de facturació" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "No hi ha adreça de facturació" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6402,7 +6485,7 @@ msgid "Shipping address" msgstr "Adreça d'enviament" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "No es necessita enviament" diff --git a/locale/ca/LC_MESSAGES/djangojs.mo b/locale/ca/LC_MESSAGES/djangojs.mo index dca2db20551..26e7c273e8a 100644 Binary files a/locale/ca/LC_MESSAGES/djangojs.mo and b/locale/ca/LC_MESSAGES/djangojs.mo differ diff --git a/locale/cs/LC_MESSAGES/django.mo b/locale/cs/LC_MESSAGES/django.mo index 687bef6ba77..ff52b2b02e1 100644 Binary files a/locale/cs/LC_MESSAGES/django.mo and b/locale/cs/LC_MESSAGES/django.mo differ diff --git a/locale/cs/LC_MESSAGES/django.po b/locale/cs/LC_MESSAGES/django.po index c25df179e9a..861a71211c1 100644 --- a/locale/cs/LC_MESSAGES/django.po +++ b/locale/cs/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # # Translators: # Filip Pytloun , 2019 +# Adéla Štěpánová , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Filip Pytloun , 2019\n" +"Last-Translator: Adéla Štěpánová , 2019\n" "Language-Team: Czech (https://www.transifex.com/mirumee/teams/34782/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,32 +22,82 @@ msgstr "" "Language: cs\n" "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "Účet byl založen" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "Odkaz pro resetování hesla byl odeslán zákazníkovi" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "Heslo k účtu bylo resetováno" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "Objednávka byla přijata" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "Poznámka byla přidána" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "Digitální data byla stažena." + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "Zákazník byl odebrán" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "Jméno zákazníka bylo upraveno" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "Emailová adresa zákazníka byla upravena" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "Zákazníkova emailová adresa byla přidána" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Heslo" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Tento email je již registrován" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Jméno" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Příjmení" @@ -79,17 +130,17 @@ msgstr "" #: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" -msgstr "" +msgstr "Eircode" #: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" -msgstr "" +msgstr "emirát" #: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" -msgstr "" +msgstr "ostrov" #: saleor/account/i18n.py:27 msgctxt "Address field" @@ -104,12 +155,12 @@ msgstr "" #: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" -msgstr "" +msgstr "obec" #: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" -msgstr "" +msgstr "PIN" #: saleor/account/i18n.py:31 msgctxt "Address field" @@ -139,7 +190,7 @@ msgstr "Předměstí" #: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" -msgstr "" +msgstr "město" #: saleor/account/i18n.py:37 msgctxt "Address field" @@ -151,12 +202,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "PSČ" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Země" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Jméno" @@ -176,40 +227,40 @@ msgctxt "Address" msgid "Address" msgstr "Adresa" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Město" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Kraj" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "PSČ" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Stát" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefonní číslo" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" -msgstr "" +msgstr "ulice, poštovní schránka, název společnosti" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" -msgstr "" +msgstr "číslo bytu, budova, poschodí, atd" #: saleor/account/i18n.py:155 saleor/account/validators.py:11 msgid "The phone number entered is not valid." @@ -220,26 +271,26 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Tato hodnota není správná pro zvolenou zemi" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." -msgstr "" +msgstr "Spravovat zákazníky." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." -msgstr "" +msgstr "Spravovat zaměstnance." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." -msgstr "" +msgstr "Zosobnit zákazníky." #: saleor/account/templatetags/i18n_address_tags.py:12 #, python-format msgctxt "Address data" msgid "%(first_name)s %(last_name)s" -msgstr "" +msgstr "%(first_name)s%(last_name)s" #: saleor/account/templatetags/i18n_address_tags.py:16 #, python-format @@ -248,41 +299,43 @@ msgid "" "%(street_address_1)s\n" "%(street_address_2)s" msgstr "" +"%(street_address_1)s\n" +"%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Byl jste úspěšně odhlášen." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Uživatel byl vytvořen" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Heslo úspěšně změněno" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." -msgstr "" +msgstr "Účet byl úspěšně aktualizován." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adresa úspěšně aktualizována." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adresa úspěšně smazána" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Byl Vám zaslán potvrzující e-mail, prosím zkontrolujte Vaši poštu." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -291,98 +344,104 @@ msgstr "" "Účet byl úspěšně smazán. V případě jakýchkoli potíží nebo otázek nás " "neváhejte kontaktovat." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Fakturace" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Dopravné" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Množství" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Omlouváme se, ale tento produkt momentálně není dostupný." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Omlouváme se, ale tento produkt momentálně není skladem." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "Omlouváme se, tuto položku nemůžete zvolit víckrát než %d." + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Jejda. Tento produkt se nám nepodařilo najít." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Pouze %d kus skladem." -msgstr[1] "Pouze %dkusy skladem." -msgstr[2] "Pouze %dkusů skladem." -msgstr[3] "Pouze %dkusů skladem." +msgstr[0] "Skladem pouze %d." +msgstr[1] "Skladem pouze%d." +msgstr[2] "Skladem pouze %d." +msgstr[3] "Skladem pouze %d." -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Země" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Zadejte novou adresu" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adresa" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Zadejte novou adresu" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Stejná jako doručovací" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adresa" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Způsob dopravy" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Slevový kód není správný, anebo již vypršel" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Dárkový nebo slevový kód" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -390,182 +449,162 @@ msgstr "" "Je nám líto, ale tolik položek skladem nemáme. Množství bylo upraveno na " "maximální možné." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Vaše objednávka nevyžaduje poštovné." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Prosím zvolte nejprve způsob dopravy." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." -msgstr "" +msgstr "Tato nabídka není ve vaší zemi dostupná. " -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Tato nabídka je dostupná pouze pro vybranné zboží." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Voucher mezitím vypršel. Odeslání objednávky bylo přerušeno." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Tento voucher expiroval. Prosím zkontrolujte platbu." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Prosím zkontrolujte platbu." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "ubytování" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "vstup na kulturní akce" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "vstup na zábavní akce" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "vstup na sportovní akce" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reklama" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "agrokulturní zboží" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "dětská strava" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "kola" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "knihy" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "dětské oblečení" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "místní pohonné hmoty" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "místní služby" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-knihy" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "strava" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotelnictví" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "zdravotnictví" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "noviny" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "transport pasažérů" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "farmaceutické zboží" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "rekonstrukce nemovitostí" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restaurace" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "sociální bydlení" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "Standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "voda" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "víno" @@ -583,9 +622,9 @@ msgstr[3] "Nalezeno %(counter)d odpovídajících záznamů" #: saleor/core/i18n.py:5 msgctxt "Country choice" msgid "Any Country" -msgstr "" +msgstr "Všechny země" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Jste přihlášen jako {}" @@ -593,145 +632,149 @@ msgstr "Jste přihlášen jako {}" #: saleor/core/weight.py:32 msgctxt "Kilogram weight unit symbol" msgid "kg" -msgstr "" +msgstr "kg" #: saleor/core/weight.py:33 msgctxt "Pound weight unit symbol" msgid "lb" -msgstr "" +msgstr "lb" #: saleor/core/weight.py:34 msgctxt "Ounce weight unit symbol" msgid "oz" -msgstr "" +msgstr "oz" #: saleor/core/weight.py:35 msgctxt "Gram weight unit symbol" msgid "g" -msgstr "" +msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" -msgstr "" +msgstr "%" #: saleor/discount/__init__.py:23 msgctxt "Voucher: discount for" msgid "All products" -msgstr "" +msgstr "Všechny produkty" #: saleor/discount/__init__.py:24 msgctxt "Voucher: discount for" msgid "Specific products" -msgstr "" +msgstr "Konkrétní produkty" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" -msgstr "" +msgstr "Konkrétní kolekce produktů" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" -msgstr "" +msgstr "Konkrétní kategorie produktů" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Dopravné" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Doprava zdarma" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "Sleva %(discount)s na dopravu" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" -msgstr "" +msgstr "Sleva %(discount)s na %(product_num)d produkty" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" -msgstr "" +msgstr "Sleva %(discount)sna %(collections_num)d kolekce." -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" -msgstr "" +msgstr "Sleva %(discount)s na %(categories_num)dkategorií." -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "Sleva %(discount)s" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Tato nabídka je platná pouze pro objednávky přes %(amount)s" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." -msgstr "" +msgstr "Správa slev a poukázek." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Sleva není dostupná pro tento produkt" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "Vložit seznam hodnot. " + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -#: saleor/graphql/order/mutations/fulfillments.py:218 +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "Pouze %(quantity)d položka zbývá ke zpracování: %(order_line)s." +msgstr[1] "Pouze %(quantity)d položky zbývají ke zpracování: %(order_line)s." +msgstr[2] "Pouze %(quantity)d položek zbývá ke zpracování: %(order_line)s." +msgstr[3] "Pouze %(quantity)d položek zbývá ke zpracování: %(order_line)s." + +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Toto zpracování nemůže být zrušeno" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." -msgstr "" +msgstr "Změna lokace." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " -msgstr "" +msgstr "URL:" #: saleor/menu/models.py:74 msgctxt "Link object type description" msgid "Category: " msgstr "Kategorie: " -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Kolekce: " -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Stránka: " -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -742,187 +785,201 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Nezpracováno" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Částečně zpracováno" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Zpracováno" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Zrušeno" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Zpracováno" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Zrušeno" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "" - -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "" - -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "" - -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "Návrh objednávky byl vytvořen" #: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "" - -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "" - -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "Produkty byly přidány k návrhu objednávky. " + +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "Produkty byly odebrány z návrhu objednávky. " + +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "Objednávka byla přijata." + +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "Návrh objednávky byl přijat. " + +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "Objednávka byla zrušena" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "Objednávka byla ručně změněna jako kompletně uhrazená. " -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "Objednávka byla plně uhrazena" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "Adresa z přijaté objednávky byla aktualizována" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "Email byl odeslán" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "Platba byla přijata" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "Platba byla vrácena" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Objednávka byla odeslána" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "Platba byla zrušena" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "Platba byla neúspěšná" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "Zpracování bylo zrušeno" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "Zpracované položky byly naskladněny. " -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" -msgstr "" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "Některé položky byly zpracovány" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" +msgstr "Číslo zásilky bylo aktualizováno" + +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "Poznámka k objednávce byla přidána" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "Neznámá událost k objednávce obsahující zprávu." + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "Email o potvrzení přijetí platby byl odeslán" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "Email s potvrzením odeslání objednávky byl odeslán" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "Email s číslem zásilky byl odeslán" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "Email s potvrzením o přijetí objednávky byl odeslán" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "Email o předání zásilky dopravci byl odeslán. " + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "Email obsahující odkazy byl odeslán." #: saleor/order/forms.py:16 msgctxt "Payments form label" msgid "Payment Method" -msgstr "" +msgstr "Způsob platby" #: saleor/order/forms.py:36 msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Platba neexistuje" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." -msgstr "" +msgstr "Platba nemůže být zrušena" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." -msgstr "" +msgstr "Spravovat objednávky." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Zpracování #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -931,138 +988,133 @@ msgstr "" "Nepodařilo se nám přiřadit objednávku k Vašemu účtu, protože emailové adresy" " neodpovídají" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Objednávka je nyní přiřazena k Vašemu účtu" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." -msgstr "" +msgstr "Spravovat stránky. " #: saleor/payment/__init__.py:24 msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manuální" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" -msgstr "" +msgstr "Autorizace" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Vrácení platby" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Získat" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" -msgstr "" +msgstr "zrušit" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" -msgstr "" +msgstr "Není účtováno" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" -msgstr "" +msgstr "Částečně účtováno" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" -msgstr "" +msgstr "Plně účtováno" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" -msgstr "" +msgstr "Částečně vráceno" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" -msgstr "" +msgstr "Plně vráceno" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" -msgstr "" +msgstr "Nebylo možné provést transakci. Prosím, zkuste to za chvíli znovu. " #: saleor/payment/gateways/dummy/forms.py:9 msgctxt "Payment status form field" msgid "Payment status" msgstr "Stav platby" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." -msgstr "" +msgstr "Objednávka nebyla účtována." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." -msgstr "" +msgstr "Údaje o platbě byly neplatné. " #: saleor/payment/gateways/razorpay/errors.py:9 msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." -msgstr "" +msgstr "Objednávka nemůže být vyřízena. " -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." -msgstr "" +msgstr "Měna %(currency)s není akceptována." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" -msgstr "" +msgstr "Zaplatit hned pomocí Razorpay" #: saleor/payment/gateways/razorpay/forms.py:16 msgctxt "Razorpay payment gateway secondary title" msgid "Total payment" -msgstr "" +msgstr "Celková částka" #: saleor/payment/gateways/stripe/errors.py:4 msgctxt "Stripe payment error" msgid "Order was not authorized." -msgstr "" +msgstr "Objednávka nebyla autorizována. " #: saleor/payment/gateways/stripe/errors.py:6 msgctxt "Stripe payment error" msgid "Order was not charged." -msgstr "" +msgstr "Objednávka nebyla účtována." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" -msgstr "" +msgstr "Celková částka" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." -msgstr "" +msgstr "Objednávky s platbami nelze ručně označit jako zaplacené." #: saleor/product/__init__.py:15 msgctxt "Product status" @@ -1104,12 +1156,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "není skladem" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "název" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "cena" @@ -1117,46 +1169,46 @@ msgstr "cena" #: saleor/product/filters.py:15 msgctxt "Product list sorting option" msgid "last updated" -msgstr "" +msgstr "naposledy aktualizováno" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Řadit podle" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Cena" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" -msgstr "" +msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." -msgstr "" +msgstr "Spravovat produkty. " -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" -msgstr "" +msgstr "digital_product" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Vyhledávání" #: saleor/settings.py:61 msgid "Arabic" -msgstr "" +msgstr "arabština" #: saleor/settings.py:62 msgid "Azerbaijani" -msgstr "" +msgstr "azerbajdžánština" #: saleor/settings.py:63 msgid "Bulgarian" @@ -1164,11 +1216,11 @@ msgstr "Bulharština" #: saleor/settings.py:64 msgid "Bengali" -msgstr "" +msgstr "bengálština" #: saleor/settings.py:65 msgid "Catalan" -msgstr "" +msgstr "katalánština" #: saleor/settings.py:66 msgid "Czech" @@ -1176,7 +1228,7 @@ msgstr "Čeština" #: saleor/settings.py:67 msgid "Danish" -msgstr "" +msgstr "dánština" #: saleor/settings.py:68 msgid "German" @@ -1191,173 +1243,193 @@ msgid "Spanish" msgstr "Španělština" #: saleor/settings.py:71 -msgid "Estonian" -msgstr "" +msgid "Colombian Spanish" +msgstr "španělština (Kolumbie)" #: saleor/settings.py:72 -msgid "Persian" -msgstr "" +msgid "Estonian" +msgstr "estonština" #: saleor/settings.py:73 +msgid "Persian" +msgstr "perština" + +#: saleor/settings.py:74 msgid "French" msgstr "Francouzština" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" -msgstr "" +msgstr "hindština" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Maďarština" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "arménština" + +#: saleor/settings.py:78 msgid "Indonesian" -msgstr "" +msgstr "indonéština" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italština" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japonština" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" -msgstr "" +msgstr "korejština" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "litevština" + +#: saleor/settings.py:83 msgid "Mongolian" -msgstr "" +msgstr "mongolština" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" -msgstr "" +msgstr "norština" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" -msgstr "" +msgstr "holandština" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polština" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "portugalština" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" -msgstr "" +msgstr "portugalština (Brazílie)" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" -msgstr "" +msgstr "rumunština" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" -msgstr "" +msgstr "ruština" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovenština" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "albánština" + +#: saleor/settings.py:93 msgid "Serbian" -msgstr "" +msgstr "srbština" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" -msgstr "" +msgstr "svahilština" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" -msgstr "" +msgstr "švédština" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" -msgstr "" +msgstr "thajština" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" -msgstr "" +msgstr "turečtina" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" -msgstr "" +msgstr "ukrajinština" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" -msgstr "" +msgstr "vietnamština" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" -msgstr "" +msgstr "čínština (zjednodušená) " -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" -msgstr "" +msgstr "čínština (tradiční)" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" -msgstr "" +msgstr "Evropská unie" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" -msgstr "" +msgstr "Brána Dummy" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" -msgstr "" +msgstr "Doručení závislé na cenové kategorii. " -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" -msgstr "" +msgstr "Doručení závislé na hmotnosti" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" -msgstr "" +msgstr "%(num_of_countries)d zemí" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." -msgstr "" +msgstr "Spravovat dopravu." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" -msgstr "" +msgstr "%(min_price)s a více" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" -msgstr "" +msgstr "%(min_price)s až %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" -msgstr "" +msgstr "%(min_weight)s a více" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" -msgstr "" +msgstr "%(min_weight)s až %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." -msgstr "" +msgstr "Spravovat nastavení. " -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." -msgstr "" +msgstr "Spravovat překlady. " #: templates/404.html:6 msgctxt "Eror page not found" @@ -1367,7 +1439,7 @@ msgstr "Stránka nebyla nalezena" #: templates/_language_picker_modal.html:8 msgctxt "Change language modal title" msgid "Select language" -msgstr "" +msgstr "Vybrat jazyk" #: templates/_language_picker_modal.html:24 msgctxt "Close modal action button" @@ -1377,7 +1449,7 @@ msgstr "Zavřít" #: templates/_language_picker_modal.html:25 msgctxt "Change language action button" msgid "Change" -msgstr "" +msgstr "Změnit" #: templates/account/account_delete_prompt.html:8 msgctxt "Account deletetion confirmation page title" @@ -1488,7 +1560,7 @@ msgstr "Změnit heslo" #: templates/account/details.html:42 msgctxt "User profile tab" msgid "Contact details" -msgstr "" +msgstr "Kontaktní údaje" #: templates/account/details.html:47 msgctxt "User profile tab" @@ -1538,7 +1610,7 @@ msgstr "Změnit heslo" #: templates/account/details.html:129 msgctxt "User profile settings" msgid "Personal Data" -msgstr "" +msgstr "Osobní data" #: templates/account/details.html:136 msgctxt "User profile action" @@ -1548,7 +1620,7 @@ msgstr "Aktualizovat" #: templates/account/details.html:141 msgctxt "List of adresses in contact details" msgid "Addresses" -msgstr "" +msgstr "Adresy" #: templates/account/details.html:152 msgctxt "User address action" @@ -1614,11 +1686,11 @@ msgstr "Zapomenuté heslo?" #: templates/account/partials/login_form.html:29 msgid "Facebook" -msgstr "" +msgstr "Facebook" #: templates/account/partials/login_form.html:37 msgid "Google" -msgstr "" +msgstr "Google" #: templates/account/password_change.html:9 msgctxt "Password change breadcrumb" @@ -1812,56 +1884,32 @@ msgstr "Vyhledávat" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Váš košík" #: templates/base.html:202 msgid "Account" -msgstr "" +msgstr "Účet" #: templates/base.html:220 msgctxt "Main navigation item" msgid "Style guide" msgstr "Průvodce stylem" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Mezisoučet" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Dopravné a DPH bude vypočítáno na konci objednávky" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Přejít do košíku" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Objednat" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Ve Vašem košíku nejsou žádné produkty." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Podívejte se na náš sortiment" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Domů" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Mezisoučet" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Cena dopravy pro:" @@ -1871,7 +1919,7 @@ msgid "Total" msgstr "Celkem" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Dopravné a DPH bude vypočítáno na konci objednávky" @@ -1926,44 +1974,54 @@ msgid "Total" msgstr "Celkem" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Váš košík" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Košík" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produkt byl odebrán z košíku" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "Produkt byl odebrán" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produkt" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Množství" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Cena" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Objednat" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" -msgstr "" +msgstr "Odebrat vše z košíku" + +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Ve Vašem košíku nejsou žádné produkty." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Podívejte se na náš sortiment" #: templates/checkout/login.html:6 msgctxt "Checkout login page title" @@ -2035,6 +2093,9 @@ msgid "" " Please enter an alternative shipping address or contact us, if you think that's a mistake.\n" " " msgstr "" +"\n" +"Do Vámi vybrané země bohužel není možné doručovat. \n" +"
Zadejte prosím jinou doručovací adresu. Pokud si myslíte, že nastala chyba, kontaktuje nás prosím. " #: templates/checkout/snippets/addresses_form.html:4 msgctxt "Checkout addresses form label" @@ -2069,7 +2130,7 @@ msgstr "Fakturační adresa" #: templates/checkout/summary.html:11 msgctxt "Checkout shipping method" msgid "Change shipping method" -msgstr "" +msgstr "Změnit způsob doručení" #: templates/checkout/summary.html:12 msgctxt "Checkout summary note title" @@ -2096,6 +2157,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Odeslat objednávku" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Dopravné a DPH bude vypočítáno na konci objednávky" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Přejít do košíku" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Objednat" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2108,6 +2184,8 @@ msgid "" "Warning! You are previewing a collection that will become " "visible on %(date)s." msgstr "" +"Varování! Prohlížíte kolekci, která bude zobrazená " +"%(date)s." #: templates/collection/index.html:21 msgctxt "Unavailable collection detail text" @@ -2206,8 +2284,8 @@ msgstr "Slevy" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2291,8 +2369,8 @@ msgstr "Stránky" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Vydání:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2542,7 +2620,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Přidat novou kolekci" @@ -2552,50 +2630,50 @@ msgstr "Přidat novou kolekci" msgid "Collections" msgstr "Kolekce" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Smazat kolekci" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Zobrazit na stránce" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" -msgstr "" +msgstr "Dostupnost" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Zrušit" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Aktualizovat" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Vytvořit" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Zveřejněno" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Rozepsané" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" -msgstr "" +msgstr "Nelze publikovat domovskou stránku kolekce" #: templates/dashboard/collection/list.html:10 msgctxt "Collections list page title " @@ -2633,7 +2711,7 @@ msgstr "Nenaezeny žádné kolekce." #: templates/dashboard/collection/list.html:92 msgid "Homepage collection" -msgstr "" +msgstr "Domovská stránka kolekce" #: templates/dashboard/collection/list.html:102 msgctxt "Homepage collection save" @@ -2992,7 +3070,7 @@ msgstr "Použito" #: templates/dashboard/discount/voucher/list.html:58 msgctxt "Voucher table header" msgid "Min amount spent" -msgstr "" +msgstr "Minimální hodnota" #: templates/dashboard/discount/voucher/list.html:105 msgctxt "Empty vouchers table message" @@ -3171,7 +3249,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Celkem" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3408,393 +3486,393 @@ msgid "Edit address" msgstr "Upravit adresu" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Dodací adresa" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Fakturační adresa" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Zrušit objednávku" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Odstranění pořadí návrhů" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Tisk" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detaily" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Platby" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Historie" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Platby" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" -msgstr "" +msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Nevyrovnané zůstatky" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Paušální částka" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" -msgstr "" +msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Získaná částka" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Získat" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Vrácení platby" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" -msgstr "" +msgstr "zrušit" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Označit jako zaplacené" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Zákazník" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Upravit podrobnosti o zákaznících" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Upravit" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Žádná dodací adresa" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Stejné jako dodací adresa" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Žádná fakturační adresa" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Koncept objednávky #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Objednávka #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Vytvořeno" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Položka" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Cena" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Množství" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Celkem" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" -msgstr "" +msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Změnit množství" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Odstranit řádek" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Upravit dopravu" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Doprava (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Dopravné" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "DPH (zahrnuto)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "DPH" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Sleva (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Sleva" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Upravit voucher" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Upravit voucher" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Upravit slevu" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Upravit slevu" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Celkový součet" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Zpracovat objednávku" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Zpracovat" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Přidat produkt k objednávce" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Přidat produkt" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Vytvořit objednávku" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Vytvořit objednávku" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Faktura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Zobrazit na stránce" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Zpracování #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Sledovací číslo %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Zrušit zpracování" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Zrušit" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Upravit sledovací číslo" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Upravit sledování" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Přidat sledování" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Poštovní štítek" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" -msgstr "" +msgstr "Poznámka od zákazníka" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." -msgstr "" +msgstr "Zákazník nezadal k této objednávce žádnou poznámku. " -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Poznámky k objednávce" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "K této objednávce nejsou přiřazeny žádné poznámky" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Přidat poznámku" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID transakce" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Datum" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Stav platby" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Množství" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" -msgstr "" +msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Pro tuto objednávku nejsou žádné platby" @@ -3826,7 +3904,7 @@ msgstr "Množství" #, python-format msgctxt "Fulfill order table quantity unfulfilled" msgid "of %(quantity_unfulfilled)s" -msgstr "" +msgstr "z %(quantity_unfulfilled)s" #: templates/dashboard/order/fulfillment.html:139 msgctxt "Dashboard update action" @@ -4140,17 +4218,17 @@ msgstr "Odstranění pořadí návrhů" #: templates/dashboard/order/modal/void.html:11 msgctxt "Modal void payment text" msgid "Void payment" -msgstr "" +msgstr "neplatná platba" #: templates/dashboard/order/modal/void.html:17 msgctxt "Modal void payment text" msgid "Do you want to void the payment?" -msgstr "" +msgstr "Chcete zrušit platbu? " #: templates/dashboard/order/modal/void.html:22 msgctxt "Modal void payment primary action" msgid "Void" -msgstr "" +msgstr "zrušit" #: templates/dashboard/order/pdf/base_pdf.html:18 msgctxt "Order PDF footer page counter" @@ -4161,13 +4239,13 @@ msgstr "" #, python-format msgctxt "Order PDF header" msgid "Order #%(order_id)s" -msgstr "" +msgstr "Objednávka #%(order_id)s" #: templates/dashboard/order/pdf/invoice.html:9 #, python-format msgctxt "Invoice title" msgid "Invoice for Order #%(order_id)s" -msgstr "" +msgstr "Faktura k objednávce #%(order_id)s" #: templates/dashboard/order/pdf/invoice.html:15 msgctxt "Order invoice" @@ -4257,7 +4335,7 @@ msgstr "Celkový součet" #, python-format msgctxt "Packing slips title" msgid "Packing Slips for Fulfillment #%(fulfillment)s" -msgstr "" +msgstr "Dodací listy pro zpracování #%(fulfillment)s" #: templates/dashboard/order/pdf/packing_slip.html:14 msgctxt "Packing slips header" @@ -4392,7 +4470,7 @@ msgstr "Titul" #: templates/dashboard/page/list.html:43 msgctxt "Static pages table header url" msgid "URL" -msgstr "" +msgstr "URL" #: templates/dashboard/page/list.html:46 msgctxt "Pages table header" @@ -4547,7 +4625,7 @@ msgstr "Hodnoty atributů" #, python-format msgctxt "Modal delete attribute text" msgid "Delete attribute value %(value)s" -msgstr "" +msgstr "Smazat hodnotu atributu %(value)s" #: templates/dashboard/product/attribute/values/modal/confirm_delete.html:19 #, python-format @@ -4555,6 +4633,7 @@ msgctxt "Modal delete attribute text" msgid "" "Are you sure you want to remove attribute value %(value)s?" msgstr "" +"Jste si jistý, že chcete odebrat hodnotu atributu%(value)s?" #: templates/dashboard/product/attribute/zero_page.html:5 #: templates/dashboard/product/product_variant/form.html:82 @@ -5166,7 +5245,7 @@ msgstr "Žádné výsledky pro dotaz \"%(query)s\"." #: templates/dashboard/shipping/detail.html:19 msgctxt "Shipping zone form breadcrumbs" msgid "Shipping zones" -msgstr "" +msgstr "Oblasti doručení" #: templates/dashboard/shipping/detail.html:39 #, python-format @@ -5179,22 +5258,22 @@ msgstr "" #: templates/dashboard/shipping/detail.html:46 msgctxt "Shipping zone action" msgid "Edit shipping zone" -msgstr "" +msgstr "Upravit oblast doručení " #: templates/dashboard/shipping/detail.html:49 msgctxt "Shipping zone action" msgid "Remove shipping zone" -msgstr "" +msgstr "Odebrat oblast doručení" #: templates/dashboard/shipping/detail.html:54 msgctxt "Title of the shipping methods list" msgid "Price based shipping" -msgstr "" +msgstr "Doručení závislé na cenové kategorii. " #: templates/dashboard/shipping/detail.html:55 msgctxt "Title of the shipping methods list" msgid "Weight based shipping" -msgstr "" +msgstr "Doručení závislé na hmotnosti" #: templates/dashboard/shipping/form.html:9 msgctxt "Dashboard shipping zones" @@ -5205,12 +5284,12 @@ msgstr "Upravit" #: templates/dashboard/shipping/form.html:24 msgctxt "Shipping zone form page title" msgid "Add new shipping zone" -msgstr "" +msgstr "Přidat novou oblast doručení" #: templates/dashboard/shipping/form.html:32 msgctxt "Dashboard shipping zone" msgid "Shipping zones" -msgstr "" +msgstr "Oblasti doručení" #: templates/dashboard/shipping/form.html:48 msgctxt "Shipping zone form page title" @@ -5220,23 +5299,23 @@ msgstr "Upravit" #: templates/dashboard/shipping/form.html:54 msgctxt "Shipping zone form breadcrumbs" msgid "Add new shipping zone" -msgstr "" +msgstr "Přidat novou oblast doručení" #: templates/dashboard/shipping/list.html:10 #: templates/dashboard/shipping/list.html:20 msgctxt "Dashboard shipping zones list" msgid "Shipping zones" -msgstr "" +msgstr "Oblasti doručení" #: templates/dashboard/shipping/list.html:27 msgctxt "Shipping zone list add button text" msgid "Add shipping zone" -msgstr "" +msgstr "Přidat oblast doručení" #: templates/dashboard/shipping/list.html:42 msgctxt "Shipping zones table header, name of the shipping zone" msgid "Shipping zone" -msgstr "" +msgstr "Oblast doručení" #: templates/dashboard/shipping/list.html:46 msgctxt "" @@ -5254,11 +5333,11 @@ msgstr "Země" #: templates/dashboard/shipping/list.html:83 msgctxt "Empty shipping list message" msgid "No shipping zones found." -msgstr "" +msgstr "Oblasti doručení nebyly nalezeny. " #: templates/dashboard/shipping/list.html:95 msgid "Default Weight Unit" -msgstr "" +msgstr "Výchozí jednotka hmotnosti." #: templates/dashboard/shipping/methods/_shipping_methods_table.html:21 msgctxt "Header of the shipping methods list" @@ -5268,7 +5347,7 @@ msgstr "Jméno" #: templates/dashboard/shipping/methods/_shipping_methods_table.html:24 msgctxt "Header of the shipping methods list" msgid "Range" -msgstr "" +msgstr "Možnosti doručení" #: templates/dashboard/shipping/methods/_shipping_methods_table.html:27 msgctxt "Header of the shipping methods list" @@ -5283,7 +5362,7 @@ msgstr "Odstranit" #: templates/dashboard/shipping/methods/_shipping_methods_table.html:48 msgctxt "Empty list of shipping methods prices" msgid "No shipping methods" -msgstr "" +msgstr "Žádné možnosti doručení" #: templates/dashboard/shipping/methods/form.html:8 msgctxt "Dashboard shipping method edit page" @@ -5293,12 +5372,12 @@ msgstr "Upravit" #: templates/dashboard/shipping/methods/form.html:10 msgctxt "Shipping method edit page title" msgid "Add new shipping method" -msgstr "" +msgstr "Přidat způsob doručení" #: templates/dashboard/shipping/methods/form.html:31 msgctxt "Dashboard attributes list" msgid "Shipping zones" -msgstr "" +msgstr "Oblasti doručení" #: templates/dashboard/shipping/methods/form.html:49 msgctxt "Shipping method breadcrumbs" @@ -5308,7 +5387,7 @@ msgstr "Upravit metodu odeslání" #: templates/dashboard/shipping/methods/form.html:55 msgctxt "Shipping method breadcrumbs" msgid "Add shipping method" -msgstr "" +msgstr "Přidat způsob doručení" #: templates/dashboard/shipping/methods/form.html:72 msgctxt "Shipping method form title" @@ -5322,6 +5401,8 @@ msgid "" "\n" "Remove shipping zone %(shipping_zone)s\n" msgstr "" +"\n" +"Odebrat oblast doručení %(shipping_zone)s\n" #: templates/dashboard/shipping/modal/confirm_delete.html:20 #, python-format @@ -5331,12 +5412,14 @@ msgid "" " Are you sure you want to remove shipping zone %(shipping_zone)s?\n" " " msgstr "" +"\n" +"Jste si jistý, že chcete odebrat zvolenou oblast doručení %(shipping_zone)s?" #: templates/dashboard/shipping/modal/method_confirm_delete.html:12 #, python-format msgctxt "Modal remove shipping method title" msgid "Remove shipping method %(shipping_method)s" -msgstr "" +msgstr "Odebrat způsob doručení %(shipping_method)s" #: templates/dashboard/shipping/modal/method_confirm_delete.html:19 #, python-format @@ -5345,10 +5428,12 @@ msgid "" "Are you sure you want to remove shipping method " "%(shipping_method)s?" msgstr "" +"Jste si jistý, že chcete odebrat způsob " +"dorčení%(shipping_method)s?" #: templates/dashboard/shipping/zero_page.html:5 msgid "No shipping zones found." -msgstr "" +msgstr "Oblasti doručení nebyly nalezeny. " #: templates/dashboard/shipping/zero_page.html:8 #, python-format @@ -5806,24 +5891,25 @@ msgstr "Populární produkty" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(volitelný)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Soubor" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -5972,7 +6058,7 @@ msgstr "Objednávka %(order)s" #, python-format msgctxt "Order detail text" msgid "Order %(order)s: %(payment_status)s & %(order_status)s" -msgstr "" +msgstr "Objednávka %(order)s: %(payment_status)s & %(order_status)s" #: templates/order/details.html:56 msgctxt "Order details link text" @@ -5987,7 +6073,7 @@ msgstr "Zaplatit objednávku" #: templates/order/details.html:67 msgctxt "Customer order note" msgid "Your note" -msgstr "" +msgstr "Vaše poznámka" #: templates/order/details.html:73 msgctxt "Order note title" @@ -5997,7 +6083,7 @@ msgstr "Přidat poznámku k objednávce" #: templates/order/details.html:75 msgctxt "Customer panel - order details: add note submit button" msgid "Submit note" -msgstr "" +msgstr "Přidat poznámku" #: templates/order/payment.html:8 #, python-format @@ -6056,7 +6142,7 @@ msgstr "Zaplatit objednávku %(order)s" #: templates/order/payment.html:77 msgid "Choose payment method" -msgstr "" +msgstr "Změnit způsob platby" #: templates/order/payment.html:97 msgctxt "Payment details primary action" @@ -6098,12 +6184,12 @@ msgstr "Detail objednávky" #: templates/order/payment/stripe.html:11 msgctxt "Payment form (Stripe) secondary action" msgid "Change payment" -msgstr "" +msgstr "Změnit platbu" #: templates/order/payment/razorpay.html:11 msgctxt "Payment form (Razorpay) secondary action" msgid "Change payment" -msgstr "" +msgstr "Změnit platbu" #: templates/page/details.html:41 msgctxt "Unavailable page detail text" @@ -6146,7 +6232,7 @@ msgstr "Vymazat filtry" #: templates/product/_filters.html:59 msgctxt "Apply filters button" msgid "Update results" -msgstr "" +msgstr "Aktualizovat výsledky" #. Translators: Layout may break if character length is different than four. #: templates/product/_items.html:30 @@ -6260,6 +6346,11 @@ msgid "" "\n" "Please note that this action is permanent and cannot be reversed.\n" msgstr "" +"\n" +"Obdržel jste tento mail, protože Vy nebo někdo jiný jste požádal o smazání svého uživatelského účtu na %(domain)s.\n" +"Pro smazání Vašeho uživatelského účtu klidněte na odkaz níže.\n" +"\n" +"Upozorňujeme, že tato akce je definitvní a nelze změnit.\n" #: templates/templated_email/account/password_reset.email:4 msgctxt "Password reset e-mail subject" @@ -6274,6 +6365,9 @@ msgid "" "You're receiving this e-mail because you or someone else has requested a password for your user account at %(domain)s.\n" "It can be safely ignored if you did not request a password reset. Click the link below to reset your password.\n" msgstr "" +"\n" +"Obdržel jste tento mail, protože Vy nebo někdo jiný jste požádal o heslo k uživatelskému účtu na %(domain)s.\n" +"Pokud jste o obnovení hesla nepožádali, můžete tento email ignorovat. Pro obnovení Vašeho hesla klikněte na odkaz níže. \n" #: templates/templated_email/dashboard/customer/set_password.email:2 #, python-format @@ -6289,6 +6383,9 @@ msgid "" "You're receiving this e-mail because you have to set a password for your customer account at %(domain)s.\n" "Click the link below to reset your password.\n" msgstr "" +"\n" +"Obdržel jste tento email, protože je nutné nastavit heslo k Vašemu zákaznickému účtu na %(domain)s.\n" +"Pro obnovení hesla klikněte na odkaz níže.\n" #: templates/templated_email/dashboard/staff/promote_customer.email:2 #, python-format @@ -6302,6 +6399,8 @@ msgid "" "\n" "You're receiving this e-mail because you have been promoted to staff member at %(domain)s." msgstr "" +"\n" +"Obdržel jste tento email, protože jste se stal členem týmu %(domain)s." #: templates/templated_email/dashboard/staff/set_password.email:2 #, python-format @@ -6317,12 +6416,15 @@ msgid "" "You're receiving this e-mail because you have to set a password for your staff member account at %(domain)s.\n" "Click the link below to reset your password.\n" msgstr "" +"\n" +"Obdržel jste tento email, protože je nutné nastavit heslo k Vašemu zaměstnaneckému účtu na %(domain)s.\n" +"Pro obnovení hesla klikněte na odkaz níže.\n" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" msgid "Your order %(order)s has been fulfilled" -msgstr "" +msgstr "Vše objednávka %(order)s byla zpracována" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" @@ -6330,6 +6432,8 @@ msgid "" "\n" "Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" +"\n" +"Děkujeme za Vaši objednávku. Níže je seznam zpracovaných položek.\n" #: templates/templated_email/order/confirm_fulfillment.email:15 #: templates/templated_email/source/confirm_fulfillment.mjml:20 @@ -6351,6 +6455,9 @@ msgid "" "Thank you for your order. Below is the list of ordered products. To see your payment details please visit:\n" "%(order_details_url)s" msgstr "" +"\n" +"Děkujeme za Vaši objednávku. Níže je seznam objednaných produktů. Pro detaily platby navštivte prosím:\n" +" %(order_details_url)s" #: templates/templated_email/order/confirm_order.email:17 msgctxt "Order confirmation e-mail table header" @@ -6393,6 +6500,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Fakturační adresa" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Žádná fakturační adresa" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6400,7 +6513,7 @@ msgid "Shipping address" msgstr "Dodací adresa" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Není požadována žádná přeprava" @@ -6418,6 +6531,9 @@ msgid "" "Thank you for your payment. To see your payment details please visit:\n" "%(order_details_url)s\n" msgstr "" +"\n" +"Děkujeme za Vaši platbu. Pro více detailů navštivte prosím: \n" +"%(order_details_url)s\n" #: templates/templated_email/order/update_fulfillment.email:4 #, python-format @@ -6438,19 +6554,20 @@ msgctxt "Fulfillment update email text" msgid "" "You can track your shipment with the following code: %(tracking_number)s." msgstr "" +"Vaši objednávku můžete sledovat pod následujícím kódem: %(tracking_number)s." #: templates/templated_email/shared/_footer.email:2 #: templates/templated_email/source/shared/footer.mjml:4 msgctxt "Base email text" msgid "This is an automatically generated e-mail, please do not reply." -msgstr "" +msgstr "Toto je automaticky zasílaný email, prosím, neodpovídejte. " #: templates/templated_email/shared/_footer.email:5 #: templates/templated_email/source/shared/footer.mjml:13 #, python-format msgctxt "Base email footer" msgid "Sincerely, %(site_name)s" -msgstr "" +msgstr "S pozdravem, %(site_name)s" #: templates/templated_email/shared/_header.email:2 #: templates/templated_email/source/account_delete.mjml:13 @@ -6464,7 +6581,7 @@ msgstr "" #: templates/templated_email/source/update_fulfillment.mjml:13 msgctxt "Standard e-mail greeting" msgid "Hi!" -msgstr "" +msgstr "Ahoj!" #: templates/templated_email/source/account_delete.mjml:16 #, python-format @@ -6475,17 +6592,21 @@ msgid "" "delete your account. Please note that this action is permanent and cannot be" " reversed." msgstr "" +"Obdržel jste tento mail, protože Vy nebo někdo jiný jste požádal o smazání " +"svého uživatelského účtu na %(domain)s.
Pro smazání Vašeho uživatelského" +" účtu klikněte na odkaz níže. Upozorňujeme, že tato akce je definitivní a " +"nelze změnit." #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" msgid "Thank you for your order. Below is the list of fulfilled products." -msgstr "" +msgstr "Děkujeme za Vaši objednávku. Níže je seznam zpracovaných položek." #: templates/templated_email/source/confirm_fulfillment.mjml:27 msgctxt "Fulfillment digital products email text" msgid "" "You can download your digital products by clicking in download link(s)." -msgstr "" +msgstr "Vaše digitální data můžete stáhnout kliknutím na odkaz(y)." #: templates/templated_email/source/confirm_order.mjml:17 #, python-format @@ -6495,6 +6616,9 @@ msgid "" " payment details please visit: %(order_details_url)s" msgstr "" +"Děkujeme za Vaši objednávku. Níže je seznam objednaných produktů. Pro " +"detaily platby navštivte prosím: %(order_details_url)s" #: templates/templated_email/source/confirm_payment.mjml:16 #, python-format @@ -6503,6 +6627,8 @@ msgid "" "Thank you for your payment. To see your payment details please visit: %(order_details_url)s" msgstr "" +"Děkujeme za Vaši platbu. Pro více detailů navštivte prosím: %(order_details_url)s" #: templates/templated_email/source/partials/_order_lines.mjml:11 msgctxt "E-mail order lines summary table" @@ -6547,7 +6673,7 @@ msgstr "Množství" #: templates/templated_email/source/partials/_order_lines.mjml:60 msgctxt "Unit price of a product" msgid "Per unit" -msgstr "" +msgstr "Za položku" #: templates/templated_email/source/partials/_order_lines.mjml:61 msgctxt "Ordered item subtotal (unit price * quantity)" @@ -6563,6 +6689,10 @@ msgid "" "if you did not request a password reset. Click the link below to reset your " "password." msgstr "" +"Obdržel jste tento mail, protože Vy nebo někdo jiný jste požádal o heslo k " +"uživatelskému účtu na %(domain)s.
Pokud jste o obnovení hesla " +"nepožádali, můžete tento email ignorovat. Pro obnovení Vašeho hesla klikněte" +" na odkaz níže. " #: templates/templated_email/source/promote_customer.mjml:16 #, python-format @@ -6572,6 +6702,9 @@ msgid "" "at %(domain)s.
To access dashboard please visit: %(dashboard_url)s" msgstr "" +"Obdržel jste tento email, protože jste se stal členem týmu %(domain)s. " +"
K přístupu k datům použijte následující odkaz: %(dashboard_url)s" #: templates/templated_email/source/set_customer_password.mjml:16 #, python-format @@ -6581,6 +6714,9 @@ msgid "" "customer account at %(domain)s.
Click the link below to set up your " "password." msgstr "" +"Obdržel jste tento email, protože je nutné nastavit heslo k Vašemu " +"zákaznickému účtu na %(domain)s.
Pro nastavení hesla klikněte na odkaz " +"níže." #: templates/templated_email/source/set_password.mjml:16 #, python-format @@ -6590,6 +6726,9 @@ msgid "" " member account at %(domain)s.
Click the link below to set up your " "password." msgstr "" +"Obdržel jste tento email, protože je nutné nastavit heslo k Vašemu " +"zaměstnaneckému účtu na %(domain)s. Pro nastavení hesla klikněte na odkaz " +"níže." #: templates/templated_email/source/update_fulfillment.mjml:16 msgctxt "Fulfillment update email text" @@ -6597,6 +6736,8 @@ msgid "" "Your shipping status has been updated. Below is the list of ordered products" " that have been updated with new tracking number." msgstr "" +"Stav Vaší objednávky byl aktualizován. Níže je uveden list objednaných " +"produktů, kterým bylo přiřazeno nové číslo zásilky. " #: templates/templated_email/source/update_fulfillment.mjml:20 #, python-format diff --git a/locale/cs/LC_MESSAGES/djangojs.mo b/locale/cs/LC_MESSAGES/djangojs.mo index 9d35fa92b9f..122183f4f85 100644 Binary files a/locale/cs/LC_MESSAGES/djangojs.mo and b/locale/cs/LC_MESSAGES/djangojs.mo differ diff --git a/locale/cs/LC_MESSAGES/djangojs.po b/locale/cs/LC_MESSAGES/djangojs.po index 100a54af84e..f32b63dd95a 100644 --- a/locale/cs/LC_MESSAGES/djangojs.po +++ b/locale/cs/LC_MESSAGES/djangojs.po @@ -4,16 +4,17 @@ # Mirumee Software , 2017. # # Translators: -# Filip Pytloun , 2018 +# Filip Pytloun , 2019 +# Adéla Štěpánová , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Filip Pytloun , 2018\n" +"Last-Translator: Adéla Štěpánová , 2019\n" "Language-Team: Czech (https://www.transifex.com/mirumee/teams/34782/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,11 +24,11 @@ msgstr "" #: build/static/vendors~preview.3e127659ad09b01744f8.bundle.js:75 msgid "Missing source" -msgstr "" +msgstr "Chybějící zdroj" #: build/static/vendors~preview.3e127659ad09b01744f8.bundle.js:136 msgid "\n" -msgstr "" +msgstr "\n" #: saleor/static/dashboard/js/components/bulk-actions.js:89 msgid "item selected" @@ -373,5 +374,5 @@ msgstr "Množství" #: saleor/static/js/components/variantPicker/VariantPicker.js:167 msgctxt "Product details primary action" -msgid "Add to checkout" -msgstr "" +msgid "Add to cart" +msgstr "Do košíku" diff --git a/locale/da/LC_MESSAGES/django.mo b/locale/da/LC_MESSAGES/django.mo index 1d1dd10bd62..6da22672af5 100644 Binary files a/locale/da/LC_MESSAGES/django.mo and b/locale/da/LC_MESSAGES/django.mo differ diff --git a/locale/da/LC_MESSAGES/django.po b/locale/da/LC_MESSAGES/django.po index 1ca781e7d5c..1bfbb4f0a75 100644 --- a/locale/da/LC_MESSAGES/django.po +++ b/locale/da/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Mikkel, 2019\n" "Language-Team: Danish (https://www.transifex.com/mirumee/teams/34782/da/)\n" @@ -21,32 +21,82 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Kodeord" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Denne email er allerede blevet registeret" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Fornavn" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Efternavn" @@ -151,12 +201,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Postnummer" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Land" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Fornavn" @@ -176,37 +226,37 @@ msgctxt "Address" msgid "Address" msgstr "Adresse" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "By" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Distrikt" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Postnummer" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Stat eller provins" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefonnummer" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Gadenavn, postboks, virksomhedsnavn" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Lejlighed, suite, bygning, etage osv" @@ -220,17 +270,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Værdien er ugyldig for det valgte land" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Administrer kunder." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Administrer medarbejdere." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Se som kunde." @@ -251,40 +301,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Du er blevet logget ud." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Bruger er blevet oprettet" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Kodeord er blevet ændret." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Kontoen er opdateret." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adresse er blevet ænddret." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adresse er blevet fjernet." -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Check venligst din indbakke for bekræftelses-e-mail." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -293,96 +343,102 @@ msgstr "" "Din konto er blevet slettet. Hvis du har problemer eller spørgsmål, er du " "velkommen til at kontakte os." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Fakturering" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Forsendelse" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Kvantitet" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Desværre. Dette produkt er på nuværende tidspunkt ikke tilgængeligt." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Desværre. Dette produkt er på nuværende tidspunkt ikke på lager." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Hovsa. Vi kunne ikke finde produktet." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Kun %d tilbage på lager." -msgstr[1] "Kun %d tilbage på lager." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Land" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Indtast en ny adresse" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adresse" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Indtast en ny adresse" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Samme som forsendelse" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adresse" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Fragtmetode" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Rabatkode er forkert eller udløbet" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Gavekort eller rabatkode" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -390,182 +446,162 @@ msgstr "" "Desværre. Vi har desværre ikke så mange af varen på lager. Mængden er sat " "til det maksimale antal, der er tilgængelige." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Din ordre kræver ikke forsendelse." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Vælg venligst først din forsendelsesmetode." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Dette tilbud er ikke tilgængeligt i dit land." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Dette tilbud er kun tilgængeligt for udvalgte varer." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Rabatkode er udløbet i mellemtiden. Din ordre er blevet afbrudt." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Forsendelsesmetode er ikke angivet" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Afsendelsesadresse er ikke angivet" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Forsendelsesmetode er ikke gyldig for din forsendelsesadresse" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Faktureringsadresse er ikke angivet" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Denne rabatkode er udløbet. Gennemse venligst din checkout." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Gennemse venligst din checkout." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "indkvartering" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "Adgang til kulturelle arrangementer" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "Adgang til underholdnings arrangementer" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "Adgang til sports arrangementer" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reklame" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "landbrugsprodukter" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "baby fødevarer" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "cykler" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "bøger" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "børnetøj" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "husholdningsbrændstof" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "indenlandske tjenester" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "ebøger" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "fødevarer" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hoteller" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "medicinsk" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "aviser" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "passagertransport" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "lægemidler" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "ejendomsrenoveringer" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restauranter" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "sociale boliger" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "vand" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "vin" @@ -583,7 +619,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Alle Lande" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Du er nu logget ind som {}" @@ -608,7 +644,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -623,91 +659,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Specifikke produkter" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Specifik produktkollektioner" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Specifik produktskategorier" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Forsendelse" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Gratis forsendelse" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s fratrukket forsendelse" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s fratrukket %(product_num)d produkter" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s fratrukket %(collections_num)d kollektionen" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s fratrukket %(categories_num)d kategorier" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s fratrukket" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Dette tilbud er kun tilgængeligt for ordre over %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Administrer salg og kuponer." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Rabat gælder ikke dette produkt" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Kun %(quantity)d vare tilbage at pakke." -msgstr[1] "Kun %(quantity)d varer tilbage til forsendelse." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Denne ordrehandling kan ikke annulleres" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Administrer navigation." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -717,17 +757,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategori:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Kollektion:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Side:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -738,155 +778,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Uopfyldte" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Delvist opfyldt" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Pakket" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Annulleret" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Pakket" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Annulleret" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Betalingsbekræftelse" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Forsendelsesbekræftelse" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Pakkebekræftelse" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Ordrerbekræftelse" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Ordre oprettet fra ordreudkast af%(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Betalingen blev annulleret af %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Udbetalt succesfuldt: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Betalt med succes: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Bestil manuelt markeret som betalt af %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Ordren var annulleret af %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Var har %(quantity)d vare på lager igen" -msgstr[1] "Vi har %(quantity)d varer på lager igen" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s tilføjede noten: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Pakke #%(fulfillment)s blev annulleret af %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "Pakkede %(quantity_fulfilled)d vare" -msgstr[1] "Pakket %(quantity_fulfilled)d varer" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Ordren var placeret" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Ordre var betalt" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s email var sendt til kunden (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Ordredetaljer var opdateret for %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Pakke #%(fulfillment)s tracking var opdateret til %(tracking_number)s af " -"%(user_name)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "%(quantity)d vareline er oversolgt på denne ordre" -msgstr[1] "%(quantity)d varelinier er oversolgt på denne ordre." +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -898,23 +956,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Betalings findes ikke" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Betaling kan ikke annulleres." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Administrer ordrer." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Pakke #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -923,12 +981,12 @@ msgstr "" "Vi kunne ikke tildele ordren til din konto, da e-mailadresserne ikke stemmer" " overens" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Ordren er nu tildelt til din konto" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Administrer sider." @@ -938,58 +996,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manuelt" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Autorisation" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Betal" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Refunderet" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Trukket" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Annuller" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Ikke betalt" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "Delvist betalt" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "Fuldt betalt" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Delvist refunderet" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Fuldt refunderet" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "Kan ikke behandle transaktionen. Prøv igen om et øjeblik" @@ -999,7 +1052,7 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Betalingsstatus" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." @@ -1007,12 +1060,12 @@ msgstr "" "Indstilling af afgiftstatus til {} direkte understøttes ikke. Brug " "dashboardet til at refundere delvist." -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Ordren blev ikke opkrævet." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Betalingsoplysningerne var ugyldige." @@ -1022,13 +1075,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Ordren kunne ikke behandles." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "%(currency)s valutaen er ikke understøttet." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Betal med Razorpay" @@ -1048,12 +1101,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Ordren blev ikke opkrævet." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Samlet betaling" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "Ordrer med betalinger kan ikke manuelt markeres som betalt." @@ -1098,12 +1151,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "ikke på lager" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "Navn" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "pris" @@ -1113,33 +1166,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "sidst opdateret" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sortér efter" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Pris" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Administrer produkter." -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "digitalt_produkt" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Forespørgsel" @@ -1185,170 +1238,190 @@ msgid "Spanish" msgstr "Spansk" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Estland" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "Persisk" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Fransk" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Hindi" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Ungarnsk" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "Armensk" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Indonesien" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italiensk" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japansk" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Koreansk" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongolsk" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norsk" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Hollandsk" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polsk" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Brasiliansk portugisisk" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Rumænsk" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Russisk" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovakisk" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Serbisk" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "Swahili" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Svensk" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "Thai" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Tyrkisk" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukranisk" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnamesisk" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Forenklet kinesisk" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Traditionelt kinesisk" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Den Europæiske Union" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Dummy gateway" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Pris baseret på forsendelse" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Vægt baseret på forsendelse" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d lande" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Administrer fragt." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s og op" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s til %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s og op" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s til %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Administrer indstillinger." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "Administrer oversættelser" @@ -1806,7 +1879,7 @@ msgstr "Søg" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Din kurv" #: templates/base.html:202 @@ -1818,44 +1891,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Style guide" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotal" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Forsendelse og skatter beregnes ved bestilling" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Gå til kurv" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Bestilling" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Der er ingen varer i din indkøbskurv." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Tjek vores udsalg" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Hjem" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotal" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Forsendelsesomkostninger for:" @@ -1865,7 +1914,7 @@ msgid "Total" msgstr "Total" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Forsendelse og skatter beregnes ved bestilling" @@ -1920,45 +1969,55 @@ msgid "Total" msgstr "Total" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Din kurv" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Kurv" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produktet er blevet fjernet fra kurven" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produkt" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Kvantitet" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Pris" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Bestilling" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Ryd kurv" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Der er ingen varer i din indkøbskurv." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Tjek vores udsalg" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2094,6 +2153,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Placer ordre" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Forsendelse og skatter beregnes ved bestilling" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Gå til kurv" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Bestilling" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2209,8 +2283,8 @@ msgstr "Salg" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2294,8 +2368,8 @@ msgstr "Sider" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "Ugyldig:" +msgid "Release:" +msgstr "Frigør:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2544,7 +2618,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Tilføj ny kollektion" @@ -2554,47 +2628,47 @@ msgstr "Tilføj ny kollektion" msgid "Collections" msgstr "Kollektioner" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Fjern kollektion" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Vis på hjemmesiden" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Tilgængelig" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Annuller" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Opdater" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Opret" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Offentliggjort" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Udkast" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Kan ikke afpublicere hjemmesiden kollektionen" @@ -3173,7 +3247,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Total" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3408,393 +3482,393 @@ msgid "Edit address" msgstr "Skift adresse" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Forsendelsesadresse" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Betalingsadresse" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Annuller ordre" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Fjern ordreudkast " -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Print" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detaljer" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Betalinger" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Historik" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Betalinger" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Udestående saldo" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Preautoriseret beløb" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Trukket beløb" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Trukket" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Refunderet" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Annuller" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Markér som betalt" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Kunde" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Ændre kundedetaljer" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Rediger" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Ingen forsendelsesadresse" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Samme som forsendelsesadresse" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Ingen faktureringsadresse" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Udkastsordre #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Ordre #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Placeret" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Vare" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Pris" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Kvantitet" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Total" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Ændre kvantitet" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Fjern linje" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Rediger forsendelse" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Forsendelse (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Forsendelse" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Skatter (inkluderet)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Skatter" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Rabat (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Rabat" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Ændre rabatkode" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Ændre rabatkode" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Ændre rabat" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Ændre rabat" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Total" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Pakket ordrer" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Pakket" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Tilføj produkt til ordre" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Tilføj produkt" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Opret ordre" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Opret ordre" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Faktura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Vis på hjemmesiden" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Pakke #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Trackingnummer: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Annuller pakke" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Annuller" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Rediger sporingsnummer" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Rediger tracking" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Tilføj tracking" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Pakningslister" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Kundenote" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Der er ingen noter fra kunden i forbindelse med denne ordre." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Ordrenoter" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Der er ingen noter forbundet med denne ordre." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Tilføj note" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Transaktions ID" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Dato" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Betalingsstatus" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Beløb" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Ingen betalinger til denne ordre." @@ -5815,24 +5889,25 @@ msgstr "Fremhævede produkter" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(valgfri)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Fil" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6422,6 +6497,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Betalingsadresse" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Ingen faktureringsadresse" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6429,7 +6510,7 @@ msgid "Shipping address" msgstr "Forsendelsesadresse" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Ingen fragt kræves" diff --git a/locale/da/LC_MESSAGES/djangojs.mo b/locale/da/LC_MESSAGES/djangojs.mo index 41ba9122bdc..c1a5731885e 100644 Binary files a/locale/da/LC_MESSAGES/djangojs.mo and b/locale/da/LC_MESSAGES/djangojs.mo differ diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index a1033d6a6bf..e95eb9e4a0b 100644 Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index d5f02f2ef2a..5ab70b216d8 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -7,25 +7,26 @@ # Rapahel Wierscher , 2018 # Patryk Zawadzki , 2018 # Irina Treichl, 2018 -# Jens-Erik Weber , 2018 # Till Hinrichs , 2018 -# H3 iM , 2018 # NyаnKiyoshi , 2018 # Claudio Schmidt , 2018 -# Sebastian Dominik , 2019 -# Max Wessendorf , 2019 +# Hendrik Bursian , 2019 # Herr Hausfrau , 2019 +# H3 iM , 2019 +# Jens-Erik Weber , 2019 +# Max Wessendorf , 2019 +# Sebastian Dominik , 2019 # Michael Bykovski , 2019 -# Hendrik Bursian , 2019 +# Steffen Exler , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Hendrik Bursian , 2019\n" +"Last-Translator: Steffen Exler , 2019\n" "Language-Team: German (https://www.transifex.com/mirumee/teams/34782/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,142 +34,192 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "E-Mail" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Passwort" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "E-Mail" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Diese E-Mail-Adresse wurde bereits registriert." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Vorname" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Nachname" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "Gegend" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "Bezirk" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "Abteilung" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "Kreis" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "Do/si" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "Eircode" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "Emirate" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "Island" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "Nachbarschaft" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" msgstr "Gebiet" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "Gemeinde" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "PIN" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "Postleitzahl" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "Präfektur" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "Provinz" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "Staat" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "Vorort" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "Ortschaft" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "Dorf" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "Postleitzahl" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Land" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Vorname" @@ -188,57 +239,61 @@ msgctxt "Address" msgid "Address" msgstr "Anschrift" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Stadt" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Bezirk" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Postleitzahl" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Staat oder Provinz" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefonnummer" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Straße, Postfach, Firmenname" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Wohnung, Suite, Einheit, Gebäude, Etage usw. " -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "Die eingegebene Telefonnummer ist ungültig." + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Der Wert ist für das gewählte Land ungütlig" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Kunden verwalten" -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Personal verwalten" -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Als andere Benutzer auftreten" @@ -259,44 +314,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "Die eingegebene Telefonnummer ist ungültig." - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Sie wurden abgemeldet." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Nutzer wurde angelegt" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Adresse wurde aktualisiert." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Benutzer wurde aktualisiert." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adresse wurde aktualisiert." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adresse entfernt" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Bitte überprüfen Sie ihren Posteingang nach der Bestätigungsmail. " -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -305,96 +356,102 @@ msgstr "" "Ihr Benutzerkonto wurde erfolgreich gelöscht. Bei Probleme oder Fragen " "kontaktieren Sie uns einfach." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Abrechnung" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Versand" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" -msgstr "Anzahl" +msgstr "Menge" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Entschuldigung. Das Produkt ist zur Zeit nicht verfügbar." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Entschuldigung. Das Produkt ist zur Zeit nicht auf Lager." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oohh. Wir konnten das Produkt nicht finden." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "nur noch %d auf Lager." -msgstr[1] "nur noch %d auf Lager." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Land" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "E-Mail" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Geben Sie eine neue Adresse ein." -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Anschrift" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Geben Sie eine neue Adresse ein." -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "An Versandadresse senden" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Anschrift" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Versandmethode" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Code abgelaufen oder ungültig" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Geschenkkarte oder Rabattcode" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -402,182 +459,162 @@ msgstr "" "Entschuldigung. So viele Produkte haben wir zur Zeit nicht auf Lager. Die " "Menge wurde auf die zur Zeit verfügbare Menge gesetzt." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Ihre Bestellung muss nicht versendet werden." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Bitte wählen Sie eine Versandmethode." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Dieses Angebot ist in Ihrem Land nicht verfügbar." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Das Angebot gilt nur für einzelne Produkte" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Dieser Code ist inzwischen abgelaufen. Bestellung abgebrochen." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Versandart ist nicht gesetzt" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Versandadresse ist nicht gesetzt" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Die Versandart ist nicht gültig für die gewählte Versandadresse" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Rechnungsadresse ist nicht gesetzt" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Der Code ist abgelaufen. Bitte überprüfen Sie Ihre Bestellung." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Bitte überprüfen Sie Ihre Daten." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "Beherbergung" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "Kulturveranstaltungen" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "Unterhaltungsveranstaltungen" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "Sportveranstaltungen" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "Werbung" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "landwirtschaftliche Materialien" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "Babynahrung" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "Fahrräder" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "Bücher" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "Kinderkleidung" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "Heizöl" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "Hausdienstleistungen" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "E-Books" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "Nahrung" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "Hotels" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "Medizinisch" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "Zeitungen" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "Personenbeförderung" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "Arzneimittel" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "Renovierung" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "Restaurants" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "Sozialwohnung" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "Standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "Wasser" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -595,7 +632,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Irgendein Land" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Sie sind eingeloggt als {}" @@ -620,7 +657,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "Gramm" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -635,91 +672,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Bestimmte Produkte" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Bestimmte Produktkollektion" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Bestimmte Produktkategorie" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Versand" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "An Versandadresse senden" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s auf Versand" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s von %(product_num)d Produkten" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s von %(collections_num)d Kollektionen" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s von %(categories_num)d Kategorien" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s auf" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Das Angebot gilt nur fuur Bestellungen über %(amount)s." -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Rabatte und Gutscheine verwalten." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Rabeatt kann auf diese Produkt nicht angewendet werden." -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Nur noch %(quantity)d Produkt, um die Bestellung abzuschließen." -msgstr[1] "Noch %(quantity)d Produkte, um die Bestellung abzuschließen." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Diese Auftragsabwicklung kann nicht abgebrochen werden" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Navigation verwalten" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -729,17 +770,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategorie:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Collection:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Seite:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -750,157 +791,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Noch nicht abgeschlossen" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Zum Teil abgeschlossen" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Abgeschlossen" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Abgebrochen" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Abgeschlossen" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Abgebrochen" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Bezahlbestätigung" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Versandbestätigung" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" + +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Abschlussbestätigung" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Bestellbestätigung" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Bestellung wurde Bestellungsentwurf erstellt von %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Bestellung wurde storniert von %(user_name)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Erfolgreich erstattet: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Erfolgreich abgerufen: %(amount)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Bestellung erfolgreich als bezahlt markiert von %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Bestellung wurde storniert von %(user_name)s" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Wir haben %(quantity)d Produkt aufgefüllt" -msgstr[1] "We haben %(quantity)d Produkte aufgefüllt" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s hat eine Notiz hinzugefügt: %(note)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Auftragsabwickung #%(fulfillment)s abgebrochen von %(user_name)s" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "%(quantity_fulfilled)d Produkt abgewickelt" -msgstr[1] "%(quantity_fulfilled)d Produkte abgewickelt" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Bestellung wurde aufgegeben" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Bestellung wurde vollständig bezahlt" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s email wurde dem Kunden (%(email)s) versendet" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Bestelldaten wurden von %(user_name)s aktualisiert" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" msgstr "" -"Die Versandverfolgung der Auftragsabwicklung #%(fulfillment)s wurde zu " -"%(tracking_number)s aktualisiert von %(user_name)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -"%(quantity)d Position wurde zu teuer verkauft für diese Bestellung." -msgstr[1] "" -"%(quantity)d Positionen wurden zu teuer verkauft für diese Bestellung" +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -912,23 +969,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Zahlung existiert nicht" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Zahlung kann nicht abgebrochen werden." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Bestellungen verwalten." -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Abschluss #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -937,12 +994,12 @@ msgstr "" "Wir konnten Ihre Bestellung nicht Ihrem Account zuordnen, da die E-Mail-" "Adressen nicht übereinstimmen" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Die Bestellungen wurde ihrem Benutzerkonto zugewiesen" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Seiten verwalten." @@ -952,58 +1009,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manuell" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Autorisierung" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Abbuchen" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Erstatten" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Einlösen" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Storniert" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Nicht abgebucht" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" -msgstr "" +msgstr "Teilweise bezahlt" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" -msgstr "" +msgstr "Bezahlt" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" -msgstr "" +msgstr "Teilweise zurückerstattet" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Voll zurückerstattet" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1015,7 +1067,7 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Zahlungsstatus" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." @@ -1023,12 +1075,12 @@ msgstr "" "Das Setzen des Abbuchungsstatus auf {} ist nicht unterstützt. Bitte benutzen" " Sie das Dashboard um anteilig zu erstatten." -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Bestellung konnte nicht abgebucht werden." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Die Bezahldaten waren ungültig." @@ -1038,13 +1090,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Die Bestellen konnte nicht verarbeitet werden." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "Die Währung %(currency)s wird nicht unterstützt." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Bezahlen Sie jetzt mit Razorpay" @@ -1064,15 +1116,16 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Bestellung konnte nicht abgebucht werden." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Gesamtzahlung" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" +"Bestellungen mit Zahlung können nicht manuell als bezahlt markiert werden. " #: saleor/product/__init__.py:15 msgctxt "Product status" @@ -1114,12 +1167,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "nicht lagernd" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "Name" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "Preis" @@ -1129,28 +1182,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "letzte Änderung" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sortieren nach" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Preis" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Produkte verwalten." -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Suche" @@ -1196,169 +1254,193 @@ msgid "Spanish" msgstr "Spanisch" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 msgid "Persian" msgstr "Persisch" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Französisch" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Ungarisch" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italienisch" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japanisch" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Koreanisch" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongolisch" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norwegisch" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Niederländisch" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polnisch" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "brasilianisch Portugiesisch" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Rumänisch" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Russisch" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slowakisch" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Serbisch" -#: saleor/settings.py:89 +#: saleor/settings.py:94 +msgid "Swahili" +msgstr "" + +#: saleor/settings.py:95 msgid "Swedish" msgstr "Schwedisch" -#: saleor/settings.py:90 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:91 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Türkisch" -#: saleor/settings.py:92 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukrainisch" -#: saleor/settings.py:93 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnamesisch" -#: saleor/settings.py:94 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Chinesisch vereinfacht" -#: saleor/settings.py:95 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Chinesisch traditionell" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Europäische Union" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Dummy Gateway" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Preisabhängiger Versand" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Gewichtsabhängiger Versand" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d Länder" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Versand verwalten" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s und mehr" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s bis %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s und höher" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s bis %(max_weight)s" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Einstellungen verwalten." -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." -msgstr "" +msgstr "Übersetzung verwalten." #: templates/404.html:6 msgctxt "Eror page not found" @@ -1816,56 +1898,32 @@ msgstr "Suche" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" -msgstr "Ihr Warenkorb" +msgid "Your cart" +msgstr "In den Warenkorb" #: templates/base.html:202 msgid "Account" -msgstr "" +msgstr "Konto" #: templates/base.html:220 msgctxt "Main navigation item" msgid "Style guide" msgstr "Stil Richtlinie" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Zwischensumme" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Versand und Steuern werden beim Abschluss berechnet" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Zum Warenkorb" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Bestellung abschließen" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Ihr Einkaufswagen ist leer." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Sehen Sie sich unsere Angebote an" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Start" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Zwischensumme" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Versandkosten für:" @@ -1875,7 +1933,7 @@ msgid "Total" msgstr "Gesamtsumme" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Versand und Steuern werden beim Abschluss berechnet" @@ -1930,45 +1988,55 @@ msgid "Total" msgstr "Gesamtsumme" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "In den Warenkorb" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Warenkorb" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produkt wurde aus dem Warenkorb entfernt" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "Produkt wurde aus der Bestellung entfernt" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produkt" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" -msgstr "Anzahl" +msgstr "Menge" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Preis" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Abschluss" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Warenkorb leeren" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Ihr Einkaufswagen ist leer." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Sehen Sie sich unsere Angebote an" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2039,6 +2107,11 @@ msgid "" " Please enter an alternative shipping address or contact us, if you think that's a mistake.\n" " " msgstr "" +"\n" +" Wir versenden leider nicht in Ihr ausgewähltes Land\n" +"
\n" +" Bitte geben Sie eine alternative Verdandadresse an oder kontaktieren Sie uns, wenn Sie denken, dass dies ein Fehler ist.\n" +" " #: templates/checkout/snippets/addresses_form.html:4 msgctxt "Checkout addresses form label" @@ -2100,6 +2173,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Bestellung abschicken" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Versand und Steuern werden beim Abschluss berechnet" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Zum Warenkorb" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Abschluss" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2216,8 +2304,8 @@ msgstr "Angebote" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2301,8 +2389,8 @@ msgstr "Seiten" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "Umgebung" +msgid "Release:" +msgstr "Freigeben:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2553,7 +2641,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Neue Kollektion erstellen" @@ -2563,47 +2651,47 @@ msgstr "Neue Kollektion erstellen" msgid "Collections" msgstr "Sammlungen" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Sammlung löschen" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Auf der Website ansehen" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Verfügbarkeit" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Abbrechen" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Ändern" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Erstellen" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Veröffentlicht" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Entwurf" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Homepage-Sammlung kann nicht veröffentlich werden" @@ -3189,7 +3277,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Gesamtsumme" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3427,393 +3515,393 @@ msgid "Edit address" msgstr "Adresse ändern" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Versandadresse" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Rechnungsadresse" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Bestellung abbrechen" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Entwurfsbestellung löschen" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Drucken" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Details" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Zahlungen" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Historie" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Zahlungen" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Offene Summe" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Authorisierter Betrag" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Eingelöste Summe" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Einlösen" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Erstatten" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Storniert" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Als bezahlt markieren" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Kunde" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Kundeninformationen bearbeiten" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Bearbeiten" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Keine Versanadresse" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "An Versandadresse" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Keine Rechnungsadresse" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Entwurfsbestellung #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Bestellung #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "plaziert am" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Position" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Preis" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Menge" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Gesamtsumme" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Anzahl ändern" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Zeile löschen" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Bestellung bearbeiten" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Versand (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Versand" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Steuern (inkl.)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Steuern" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Rabatt (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Rabatt" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Gutschein bearbeiten" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Gutschein bearbeiten" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Rabatt bearbeiten" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Rabatt bearbeiten" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Gesamtsumme" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Bestellung abschließen" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Abschluss" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Produkt zur Bestellung hinzufügen" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Produkt hinzufügen" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Bestellung erstellen" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Bestellung erstellen" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Rechnung" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Auf der Website ansehen" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Auftragsabwicklung #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Trackingnummer: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Auftragsabwicklung abbrechen" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Abbrechen" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Sendungsnummer bearbeiten" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Sendungsverfolgung bearbeiten" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Sendungsverfolgung hinzufügen" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Packzettel" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Kundennotiz" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Es gibt keine Kundennotizen zu dieser Bestellung" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Notizen" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Es gibt keine Notien zu dieser Bestellung." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Notiz hinzufügen" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Transaktions-ID" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Datum" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Zahlungsstatus" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Betrag" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Für die Bestellung erfolgte keine Zahlung." @@ -5851,24 +5939,25 @@ msgstr "beworbene Produkte" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(optional)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Datei" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6017,7 +6106,7 @@ msgstr "Bestellung %(order)s: " #, python-format msgctxt "Order detail text" msgid "Order %(order)s: %(payment_status)s & %(order_status)s" -msgstr "" +msgstr "Bestellung %(order)s: %(payment_status)s & %(order_status)s" #: templates/order/details.html:56 msgctxt "Order details link text" @@ -6102,7 +6191,7 @@ msgstr "Bestellung %(order)s bezahlen" #: templates/order/payment.html:77 msgid "Choose payment method" -msgstr "" +msgstr "Wählen Sie Zahleungsmethode" #: templates/order/payment.html:97 msgctxt "Payment details primary action" @@ -6306,6 +6395,11 @@ msgid "" "\n" "Please note that this action is permanent and cannot be reversed.\n" msgstr "" +"\n" +"Sie oder jemand anderes hat eine Accountlöschung angefragt für %(domain)s.\n" +"Klicken Sie auf den unten stehenden Link, um Ihren Account zu löschen.\n" +"\n" +"Bitte beachten Sie, dass Sie diese Aktion nicht rückgängig machen können.\n" #: templates/templated_email/account/password_reset.email:4 msgctxt "Password reset e-mail subject" @@ -6339,6 +6433,9 @@ msgid "" "You're receiving this e-mail because you have to set a password for your customer account at %(domain)s.\n" "Click the link below to reset your password.\n" msgstr "" +"\n" +"Sie erhalten diese Email weil Sie ein Passwort für Ihr Konto bei %(domain)s setzen müssen.\n" +"Klicken Sie hier, um das Passwort einzugeben.\n" #: templates/templated_email/dashboard/staff/promote_customer.email:2 #, python-format @@ -6352,6 +6449,8 @@ msgid "" "\n" "You're receiving this e-mail because you have been promoted to staff member at %(domain)s." msgstr "" +"\n" +"Sie wurden zum Mitarbeiter befördert bei %(domain)s." #: templates/templated_email/dashboard/staff/set_password.email:2 #, python-format @@ -6367,19 +6466,24 @@ msgid "" "You're receiving this e-mail because you have to set a password for your staff member account at %(domain)s.\n" "Click the link below to reset your password.\n" msgstr "" +"\n" +"Bitte ändern Sie ihr Mitarbeiterpasswort bei %(domain)s.\n" +"Klicken Sie auf den unten stehenden Link, um das Passwort zu ändern.\n" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" -msgstr "Ihre Bestellung %(order)s ist auf dem Weg" +msgid "Your order %(order)s has been fulfilled" +msgstr "Ihre Bestellung %(order)s wurde versandt." #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" +"\n" +"Vielen Dank für Ihre Bestellung. Nachfolgend die Liste der versandten Produkte.\n" #: templates/templated_email/order/confirm_fulfillment.email:15 #: templates/templated_email/source/confirm_fulfillment.mjml:20 @@ -6402,6 +6506,9 @@ msgid "" "Thank you for your order. Below is the list of ordered products. To see your payment details please visit:\n" "%(order_details_url)s" msgstr "" +"\n" +"Vielen Dank für Ihre Bestellung. Nachfolgend ist die Liste der bestellten Produkte. Um die Zahlungsdetails einzusehen, klicken Sie hier:\n" +"%(order_details_url)s" #: templates/templated_email/order/confirm_order.email:17 msgctxt "Order confirmation e-mail table header" @@ -6444,6 +6551,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Rechnungsadresse" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Keine Rechnungsadresse" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6451,7 +6564,7 @@ msgid "Shipping address" msgstr "Versandadresse" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Kein Versand benötigt" @@ -6469,6 +6582,9 @@ msgid "" "Thank you for your payment. To see your payment details please visit:\n" "%(order_details_url)s\n" msgstr "" +"\n" +"Vielen Dank für ihre Zahlung. Um die Zahlungsdetails zu einzusehen, klicken Sie hier:\n" +"%(order_details_url)s\n" #: templates/templated_email/order/update_fulfillment.email:4 #, python-format @@ -6482,6 +6598,8 @@ msgid "" "\n" "Your shipping status has been updated. Below is the list of ordered products that have been updated with new tracking number.\n" msgstr "" +"\n" +"Ihr Versandstatus wurde aktualisiert. Nachfolgend die Liste der bestellten Produkte die unter dem neuen Trackingcode aktualisiert wurden.\n" #: templates/templated_email/order/update_fulfillment.email:15 #, python-format @@ -6489,12 +6607,16 @@ msgctxt "Fulfillment update email text" msgid "" "You can track your shipment with the following code: %(tracking_number)s." msgstr "" +"Sie können Ihre Bestellung mit dem Trackingcode %(tracking_number)s " +"verfolgen." #: templates/templated_email/shared/_footer.email:2 #: templates/templated_email/source/shared/footer.mjml:4 msgctxt "Base email text" msgid "This is an automatically generated e-mail, please do not reply." msgstr "" +"Dies ist eine automatisch generierte E-Mail, bitte antworten Sie nicht auf " +"diese E-Mail-Adresse." #: templates/templated_email/shared/_footer.email:5 #: templates/templated_email/source/shared/footer.mjml:13 @@ -6532,10 +6654,18 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" +"Vielen dankf für Ihre Bestellung. Nachfolgend finden Sie die Liste der " +"verschickten Produkte." + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." msgstr "" -"Vielen Dank für Ihre Bestellung. Unten stehend sehen Sie eine Liste Ihrer " -"versandten Produkte." +"Sie können Ihre digitalen Produkte mit Klick auf den Downloadlink(s) " +"herunterladen." #: templates/templated_email/source/confirm_order.mjml:17 #, python-format @@ -6643,6 +6773,8 @@ msgid "" "customer account at %(domain)s.
Click the link below to set up your " "password." msgstr "" +"Bitte ändern Sie ihr Kunden Passwort bei %(domain)s.
Klicken Sie auf " +"den unten stehenden Link, um das Passwort zu ändern." #: templates/templated_email/source/set_password.mjml:16 #, python-format diff --git a/locale/de/LC_MESSAGES/djangojs.mo b/locale/de/LC_MESSAGES/djangojs.mo index b631b2c45d0..42360391ebf 100644 Binary files a/locale/de/LC_MESSAGES/djangojs.mo and b/locale/de/LC_MESSAGES/djangojs.mo differ diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 31ce865c1f1..66dcc3a08d1 100644 Binary files a/locale/en/LC_MESSAGES/django.mo and b/locale/en/LC_MESSAGES/django.mo differ diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index b2aad4f1cdd..bf8986f376e 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-06-04 11:45-0500\n" +"POT-Creation-Date: 2019-07-03 05:42-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -430,44 +430,49 @@ msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:139 +#: saleor/checkout/utils.py:179 msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:676 +#: saleor/checkout/utils.py:718 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "" -#: saleor/checkout/utils.py:682 +#: saleor/checkout/utils.py:724 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:690 +#: saleor/checkout/utils.py:732 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:716 +#: saleor/checkout/utils.py:763 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:861 +#: saleor/checkout/utils.py:977 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" +#: saleor/checkout/utils.py:1039 +msgctxt "Gift card not applicable" +msgid "Gift card has expired. Order placement cancelled." +msgstr "" + #: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:40 +#: saleor/checkout/views/summary.py:43 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" @@ -635,36 +640,41 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:11 +#: saleor/discount/__init__.py:14 msgctxt "Discount type" msgid "%" msgstr "" -#: saleor/discount/__init__.py:23 +#: saleor/discount/__init__.py:28 msgctxt "Voucher: discount for" -msgid "All products" +msgid "Entire order" msgstr "" -#: saleor/discount/__init__.py:24 +#: saleor/discount/__init__.py:29 msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:27 +#: saleor/discount/__init__.py:32 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:31 +#: saleor/discount/__init__.py:36 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:33 +#: saleor/discount/__init__.py:38 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "" +#: saleor/discount/__init__.py:42 +msgctxt "Voucher: discount for" +msgid "Specific products, collections and categories" +msgstr "" + #: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" @@ -711,11 +721,16 @@ msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:48 +#: saleor/discount/utils.py:42 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "" +#: saleor/giftcard/models.py:50 +msgctxt "Permission description" +msgid "Manage gift cards." +msgstr "" + #: saleor/graphql/core/filters.py:8 msgid "Enter a list of values." msgstr "" @@ -952,12 +967,12 @@ msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:149 +#: saleor/order/models.py:151 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:397 +#: saleor/order/models.py:399 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" @@ -1093,7 +1108,7 @@ msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:259 +#: saleor/payment/utils.py:265 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1169,12 +1184,12 @@ msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:153 +#: saleor/product/models.py:155 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:379 +#: saleor/product/models.py:381 msgctxt "File as a digital product" msgid "digital_product" msgstr "" @@ -1348,12 +1363,12 @@ msgstr "" msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:342 +#: saleor/settings.py:335 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:593 +#: saleor/settings.py:586 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" diff --git a/locale/en/LC_MESSAGES/djangojs.mo b/locale/en/LC_MESSAGES/djangojs.mo index 29908b29615..6c5906d1cd0 100644 Binary files a/locale/en/LC_MESSAGES/djangojs.mo and b/locale/en/LC_MESSAGES/djangojs.mo differ diff --git a/locale/en/LC_MESSAGES/djangojs.po b/locale/en/LC_MESSAGES/djangojs.po index 403602a3732..c3ebf6c1062 100644 --- a/locale/en/LC_MESSAGES/djangojs.po +++ b/locale/en/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-06-04 11:45-0500\n" +"POT-Creation-Date: 2019-07-03 05:42-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -321,45 +321,6 @@ msgctxt "Rich text editor option" msgid "Link" msgstr "" -#: saleor/static/dashboard/js/components/editor.js:61 -msgctxt "Rich text editor option" -msgid "Image (converts selected text to an image tag)" -msgstr "" - -#: saleor/static/dashboard/js/components/editor.js:66 -msgctxt "Rich text editor option" -msgid "Left align" -msgstr "" - -#: saleor/static/dashboard/js/components/editor.js:71 -msgctxt "Rich text editor option" -msgid "Center align" -msgstr "" - -#: saleor/static/dashboard/js/components/editor.js:76 -msgctxt "Rich text editor option" -msgid "Right align" -msgstr "" - -#: saleor/static/dashboard/js/components/editor.js:81 -msgctxt "Rich text editor option" -msgid "Justify" -msgstr "" - -#: saleor/static/dashboard/js/components/editor.js:86 -msgctxt "Rich text editor option" -msgid "Remove formatting" -msgstr "" - -#: saleor/static/dashboard/js/components/google-preview.js:46 -msgid "" -"Your input might be a little too short, think of something more descriptive" -msgstr "" - -#: saleor/static/dashboard/js/components/google-preview.js:50 -msgid "Your input fits between the recommended lengths" -msgstr "" - #: saleor/static/js/components/variantPicker/QuantityInput.js:22 msgctxt "Add to cart form field label" msgid "Quantity" diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo index 56f8adb7b2f..f015755c269 100644 Binary files a/locale/es/LC_MESSAGES/django.mo and b/locale/es/LC_MESSAGES/django.mo differ diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 391b614c155..b75a3c8f13a 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -9,23 +9,24 @@ # Israel Zuñiga de la Mora , 2018 # Nicolás Pinzón , 2018 # Joaquín Bravo Contreras , 2018 -# Renzo Manganiello , 2018 # Emmanuel Perez , 2018 -# Eduardo , 2019 # Jack Ripper , 2019 # Cristian Vargas , 2019 -# Matías Saguir , 2019 # Daniel Tamez , 2019 # Carlos Horowicz , 2019 +# Renzo Manganiello , 2019 +# Eduardo , 2019 +# Matías Saguir , 2019 +# Hector Garcia , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Carlos Horowicz , 2019\n" +"Last-Translator: Hector Garcia , 2019\n" "Language-Team: Spanish (https://www.transifex.com/mirumee/teams/34782/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,32 +34,82 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "La cuenta ha sido creada" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Correo electrónico" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Constraseña" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Correo electrónico" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Este correo electrónico ya ha sido registrado." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Nombre" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Apellido" @@ -163,12 +214,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Código ZIP" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "País" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Nombre" @@ -188,37 +239,37 @@ msgctxt "Address" msgid "Address" msgstr "Dirección" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Ciudad" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Distrito" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Código Postal" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Estado o provincia" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Número de teléfono" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -232,17 +283,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Este valor es inválido para el pais seleccionado" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Gestione clientes." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Administrar el personal." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Hacerse pasar por clientes." @@ -263,41 +314,41 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Has terminado sesión exitosamente." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "El usuario ha sido creado" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Se cambió el password exitosamente." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Cuenta actualizada correctamente." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Se cambió la dirección exitosamente." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "La dirección se ha borrado exitosamente" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" "Por favor revisa tu bandeja de entrada para un e-mail de confirmación." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -306,96 +357,102 @@ msgstr "" "Su cuenta se eliminó correctamente. En caso de cualquier problema o pregunta" " no dude en ponerse en contacto con nosotros." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Facturación" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Envío" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Cantidad" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Disculpas. El producto no está disponible en este momento." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Disculpas. El producto no tiene stock en este momento." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Ups. No pudimos encontrar ese producto." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Solo queda %d en stock." -msgstr[1] "Solo quedan %d en stock." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "País" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Correo electrónico" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Ingrese una nueva dirección" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Dirección" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Ingrese una nueva dirección" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Igual que el envío" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Dirección" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Método de Envío" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "El código de descuento es incorrecto o está vencido" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Tarjeta de regalo o código de descuento" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -403,182 +460,162 @@ msgstr "" "Disculpas. No tenemos tantos productos en inventario. La cantidad fue " "colocada al máximo disponible por ahora." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Su pedido no requiere envío." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Por favor primero seleccione un método de envío." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Esta oferta no es válida en su país." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Esta oferta solo es válida para productos seleccionados." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "El cupón expiró mientras tanto. Pedido anulado." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "El método de envío no está establecido" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "La dirección de envío no está configurada" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "El método de envío no es válido para su dirección de envío" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "La dirección de facturación no está configurada" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Este cupón está vencido. Por favor revise su compra." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Por favor revise su compra." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "alojamiento" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "admisión a eventos culturales" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "admisión a eventos de entretenimiento" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "admisión a eventos deportivos" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "publicidad" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "suministros agrícolas" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "alimentos para bebés" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "bicicletas" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "libros" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "ropa para niños" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "combustible doméstico" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "servicios domésticos" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "libros electrónicos" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "productos alimenticios" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hoteles" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "médico" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "periódicos" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "transporte de pasajeros" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "productos farmacéuticos" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "renovaciones de la propiedad" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restaurantes" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "vivienda social" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "estándar" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "agua" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "vino" @@ -596,7 +633,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Cualquier país" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Has iniciado sesión como {}" @@ -621,7 +658,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "gr" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -636,91 +673,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Productos específicos" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Colecciones específicas de productos" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Categorías específicas de productos" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Envío" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Envío gratuito" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s de envío" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s de" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Esta oferta solo es válida para compras mayores a %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "El descuento no aplica a este producto" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Este envío no puede ser cancelado" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL: " @@ -730,17 +771,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Categoría: " -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Colección: " -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Página: " -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -751,153 +792,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "No completada" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Parcialmente completada" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Completada" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Completada" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "El pedido fue enviado" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -909,35 +970,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "El pago no existe" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -947,58 +1008,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Reembolso" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Captura" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1008,18 +1064,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Estado del Pago" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1029,13 +1085,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1055,12 +1111,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1105,12 +1161,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "agotado" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nombre" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "precio" @@ -1120,33 +1176,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "ultima actualización" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Ordenar por" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Precio" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Búsqueda" @@ -1192,170 +1248,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1813,7 +1889,7 @@ msgstr "Buscar" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Tu carro" #: templates/base.html:202 @@ -1825,44 +1901,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Guía de Estilo" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotal" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Ir al carro" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Checkout" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "No hay productos en tu carro de compras." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Revisa nuestros productos a la venta" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Inicio" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotal" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Costo de envío para:" @@ -1872,7 +1924,7 @@ msgid "Total" msgstr "Total" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1927,45 +1979,55 @@ msgid "Total" msgstr "Total" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Tu carro" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Carro" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "El producto ha sido removido del carro" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Producto" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Cantidad" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Precio" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Checkout" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "No hay productos en tu carro de compras." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Revisa nuestros productos a la venta" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2097,6 +2159,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Realizar pedido" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Ir al carro" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Checkout" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2207,8 +2284,8 @@ msgstr "Ventas" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2292,8 +2369,8 @@ msgstr "Páginas" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Publicación:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2543,7 +2620,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2553,47 +2630,47 @@ msgstr "" msgid "Collections" msgstr "Colecciones" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Ver en el sitio" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Cancelar" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Actualizar" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Crear" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Publicado" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Boceto" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3165,7 +3242,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Total" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3395,393 +3472,393 @@ msgid "Edit address" msgstr "Modificar dirección" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Dirección de Envío" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Dirección de Facturación" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Cancelar Pedido" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Imprimir" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detalles" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Pagos" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Historia" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Pagos" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Saldo pendiente" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Monto preautorizado" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Cantidad retenida" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Retención" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Reembolso" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Editar" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Realizado el" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Producto" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Precio" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Cantidad" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Total" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Cambiar cantidad" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Quitar línea" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Envío" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Impuestos (incluidos)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Impuestos" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Total general" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Agregar producto al pedido" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Agregar producto" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Factura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Ver en el sitio" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Completado #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Número de seguimiento: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Cancelar" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Hojas de embalaje" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Notas de Pedido" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "No hay notas asociadas con este pedido." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Agregar nota" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID de Transacción" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Fecha" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Estado del Pago" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Cantidad" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "No hay pagos para este pedido." @@ -5797,24 +5874,25 @@ msgstr "Productos destacados" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(opcional)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Archivo" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6403,6 +6481,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Dirección de facturación" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6410,7 +6494,7 @@ msgid "Shipping address" msgstr "Dirección de envío" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "No se requiere envío" diff --git a/locale/es/LC_MESSAGES/djangojs.mo b/locale/es/LC_MESSAGES/djangojs.mo index 8b13e8df5cf..a087f378bdf 100644 Binary files a/locale/es/LC_MESSAGES/djangojs.mo and b/locale/es/LC_MESSAGES/djangojs.mo differ diff --git a/locale/es/LC_MESSAGES/djangojs.po b/locale/es/LC_MESSAGES/djangojs.po index 1d7f126b488..ad3108c9e7e 100644 --- a/locale/es/LC_MESSAGES/djangojs.po +++ b/locale/es/LC_MESSAGES/djangojs.po @@ -5,18 +5,19 @@ # # Translators: # Israel Zuñiga de la Mora , 2018 -# Eduardo , 2018 # Renzo Manganiello , 2018 # Osmar Pérez Bautista , 2018 +# Eduardo , 2019 +# Hector Garcia , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Osmar Pérez Bautista , 2018\n" +"Last-Translator: Hector Garcia , 2019\n" "Language-Team: Spanish (https://www.transifex.com/mirumee/teams/34782/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,7 +27,7 @@ msgstr "" #: build/static/vendors~preview.3e127659ad09b01744f8.bundle.js:75 msgid "Missing source" -msgstr "" +msgstr "origen no encontrado" #: build/static/vendors~preview.3e127659ad09b01744f8.bundle.js:136 msgid "\n" @@ -374,5 +375,5 @@ msgstr "Cantidad" #: saleor/static/js/components/variantPicker/VariantPicker.js:167 msgctxt "Product details primary action" -msgid "Add to checkout" -msgstr "" +msgid "Add to cart" +msgstr "Agregar al carro" diff --git a/locale/es_CO/LC_MESSAGES/django.mo b/locale/es_CO/LC_MESSAGES/django.mo index 97ba860d14e..a9e2a54110a 100644 Binary files a/locale/es_CO/LC_MESSAGES/django.mo and b/locale/es_CO/LC_MESSAGES/django.mo differ diff --git a/locale/es_CO/LC_MESSAGES/django.po b/locale/es_CO/LC_MESSAGES/django.po index 731f13a387b..f0d8bfc0db0 100644 --- a/locale/es_CO/LC_MESSAGES/django.po +++ b/locale/es_CO/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # # Translators: # C0D3C , 2019 +# ildebrando mora , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: C0D3C , 2019\n" +"Last-Translator: ildebrando mora , 2019\n" "Language-Team: Spanish (Colombia) (https://www.transifex.com/mirumee/teams/34782/es_CO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,32 +22,82 @@ msgstr "" "Language: es_CO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Password" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Este email ya ha estado registrado." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "" @@ -151,12 +202,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "" @@ -176,37 +227,37 @@ msgctxt "Address" msgid "Address" msgstr "Dirección" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Ciudad" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Número Teléfonico" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -220,17 +271,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -249,317 +300,303 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Cantidad" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Dirección" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Dirección" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Método de envío" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Su pedido no requiere envío." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -577,7 +614,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -602,7 +639,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "" @@ -617,91 +654,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -711,17 +752,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -732,153 +773,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -890,35 +951,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -928,58 +989,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -989,18 +1045,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1010,13 +1066,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1036,12 +1092,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1086,12 +1142,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1101,33 +1157,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Ordenar por" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1173,170 +1229,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1783,7 +1859,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1795,44 +1871,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1842,7 +1894,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1897,45 +1949,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Cantidad" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2067,6 +2129,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2177,8 +2254,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2262,7 +2339,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2305,7 +2382,7 @@ msgstr "" #: templates/dashboard/category/detail.html:83 msgctxt "Category field" msgid "Description" -msgstr "" +msgstr "Descripción" #: templates/dashboard/category/detail.html:94 msgctxt "Category detail view action" @@ -2335,13 +2412,13 @@ msgstr "" #: templates/dashboard/category/list.html:49 msgctxt "Category list table header name" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/category/detail.html:119 #: templates/dashboard/category/list.html:52 msgctxt "Category list table header description" msgid "Description" -msgstr "" +msgstr "Descripción" #: templates/dashboard/category/detail.html:140 msgctxt "Category edit action" @@ -2506,7 +2583,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2516,47 +2593,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -2574,7 +2651,7 @@ msgstr "" #: templates/dashboard/collection/list.html:40 msgctxt "Collections list table header name" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/collection/list.html:43 msgctxt "Voucher table header" @@ -2742,7 +2819,7 @@ msgstr "" #: templates/dashboard/customer/list.html:40 msgctxt "Customers table header" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/customer/list.html:43 msgctxt "Customers table header" @@ -2848,7 +2925,7 @@ msgstr "" #: templates/dashboard/discount/sale/list.html:42 msgctxt "Sale (discount) table header" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/discount/sale/list.html:45 msgctxt "Sale (discount) table header" @@ -2917,7 +2994,7 @@ msgstr "" #: templates/dashboard/discount/voucher/list.html:43 msgctxt "Voucher table header" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/discount/voucher/list.html:46 msgctxt "Voucher table header" @@ -3021,7 +3098,7 @@ msgstr "" #: templates/dashboard/includes/_menu_items.html:23 msgctxt "Menu items list table header name" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/includes/_menu_items.html:26 msgctxt "Menu items list table header points to" @@ -3115,7 +3192,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3345,393 +3422,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Cantidad" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -4434,7 +4511,7 @@ msgstr "" #: templates/dashboard/product/attribute/list.html:42 msgctxt "Dashboard attributes list table header name" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/product/attribute/list.html:44 msgctxt "Name of product type related to the attribute" @@ -4537,7 +4614,7 @@ msgstr "" #: templates/dashboard/product/detail.html:100 msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/product/detail.html:101 msgid "Status" @@ -4699,7 +4776,7 @@ msgstr "" #: templates/dashboard/product/list.html:61 msgctxt "Products list table header" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/product/list.html:64 msgctxt "Products list table header" @@ -4843,7 +4920,7 @@ msgstr "" #: templates/dashboard/product/product_type/list.html:44 msgctxt "Dashboard product types list table header name" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/product/product_type/list.html:48 msgctxt "Product type item list text" @@ -5162,7 +5239,7 @@ msgstr "" #: templates/dashboard/shipping/methods/_shipping_methods_table.html:21 msgctxt "Header of the shipping methods list" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/shipping/methods/_shipping_methods_table.html:24 msgctxt "Header of the shipping methods list" @@ -5301,7 +5378,7 @@ msgstr "" #: templates/dashboard/sites/detail.html:55 msgctxt "Site settings field" msgid "Description" -msgstr "" +msgstr "Descripción" #: templates/dashboard/sites/detail.html:65 msgctxt "Site settings action" @@ -5316,7 +5393,7 @@ msgstr "" #: templates/dashboard/sites/detail.html:87 msgctxt "Header of authorization keys list" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/sites/detail.html:90 msgctxt "Header of authorization keys list" @@ -5411,7 +5488,7 @@ msgstr "" #: templates/dashboard/staff/list.html:42 msgctxt "Staff members table header" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/staff/list.html:45 msgctxt "Staff members table header" @@ -5466,7 +5543,7 @@ msgstr "" #: templates/dashboard/taxes/details.html:50 msgctxt "Country tax rates list header" msgid "Name" -msgstr "" +msgstr "Nombre" #: templates/dashboard/taxes/details.html:53 msgctxt "Country tax rates list header" @@ -5683,24 +5760,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6053,7 +6131,7 @@ msgstr "" #: templates/product/details.html:194 msgctxt "Product details title" msgid "Description" -msgstr "" +msgstr "Descripción" #: templates/product/product_list_base.html:83 msgctxt "Filter heading title" @@ -6247,6 +6325,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6254,7 +6338,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/es_CO/LC_MESSAGES/djangojs.mo b/locale/es_CO/LC_MESSAGES/djangojs.mo index d7d41cfc8b4..33637447b7b 100644 Binary files a/locale/es_CO/LC_MESSAGES/djangojs.mo and b/locale/es_CO/LC_MESSAGES/djangojs.mo differ diff --git a/locale/et/LC_MESSAGES/django.mo b/locale/et/LC_MESSAGES/django.mo index ee79be2f164..0dd117b58d9 100644 Binary files a/locale/et/LC_MESSAGES/django.mo and b/locale/et/LC_MESSAGES/django.mo differ diff --git a/locale/et/LC_MESSAGES/django.po b/locale/et/LC_MESSAGES/django.po index e14ae1ba7a7..1e76e862b34 100644 --- a/locale/et/LC_MESSAGES/django.po +++ b/locale/et/LC_MESSAGES/django.po @@ -6,17 +6,17 @@ # Translators: # Keijo Laas , 2019 # Carmel Vaher , 2019 -# Henri Tamvere , 2019 # Chris Laas , 2019 +# Henri Tamvere , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Chris Laas , 2019\n" +"Last-Translator: Henri Tamvere , 2019\n" "Language-Team: Estonian (https://www.transifex.com/mirumee/teams/34782/et/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,32 +24,82 @@ msgstr "" "Language: et\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Meil" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Parool" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Meil" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "See meil on juba registreeritud." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Eesnimi" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Perekonnanimi" @@ -154,12 +204,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Postiindeks" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Riik" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Eesnimi" @@ -179,37 +229,37 @@ msgctxt "Address" msgid "Address" msgstr "Aadress" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Linn" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Rajoon" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Postiindeks" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Osariik või provints" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefoninumber" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Tänav, postkasti number, ettevõtte nimi" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Korter, sviit, üksus, hoone, korrus vms" @@ -223,17 +273,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "See väärtus ei kehti valitud riigis" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Halda kliente." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Halda meeskonda." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Kehasta kliente." @@ -254,40 +304,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Olete edukalt välja loginud." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Kasutaja on loodud" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Parool edukalt muudetud." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Konto edukalt uuendatud." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Aadress edukalt uuendatud." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Aadress edukalt eemaldatud" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Palun vaadake oma postkasti meili kinnitamiseks." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -296,96 +346,102 @@ msgstr "" "Teie konto kustutati edukalt. Probleemide või küsimuste korral võtke meiega " "ühendust." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Arveldamine" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Transport" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Kogus" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Vabandust. See toode ei ole hetkel saadaval." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Vabandust. See toode on hetkel välja müüdud." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oih. Toodet ei leitud." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Ainult %d laos alles." -msgstr[1] "Ainult %d laos alles." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Riik" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Meil" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Sisesta uus aadress" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Aadress" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Sisesta uus aadress" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Sama, mis kohaletoimetamise aadress" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Aadress" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Kohaletoimetamise meetod" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Allahindluskood väär või aegunud" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Kinkekaart või allahindluskood" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -393,182 +449,162 @@ msgstr "" "Vabandust. Meil ei ole laos nii palju tooteid. Kogus määrati võimalikult " "suureks." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Sinu tellimus ei vaja kohaletoimetamist." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Palun valige kohaletoimetamise viis esimesena." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "See pakkumine ei kehti Teie riigis." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "See pakkumine kehtib ainult valitud toodetele." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Vautšer on vahepeal aegunud. Tellimus tühistatud." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Kohaletoimetamise viis ei ole määratud" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Kohaletoimetamise aadress ei ole määratud" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Kohaletoimetamise viis ei sobi Teie aadressiga" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Arve aadress määramata" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Vautšer on aegunud. Palun vaata oma kassa üle." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Palun vaata oma kassa üle." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "majutus" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "sissepääs kultuurisündmustele" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "sissepääs meelelahutus sündmustele" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "sissepääs spordiüritustele" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reklaamimine" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "põllumajandussaadused" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "imikutoit" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "rattad" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "raamatud" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "lasteriided" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "kodumaine kütus" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "kodumaised teenused" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-raamatud" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "toiduained" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotellid" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "meditsiiniline" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "ajalehed" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "reisijatevedu" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "ravimid" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "hoonete renoveerimine" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restoranid" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "sotsiaalmajutus" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "vesi" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "vein" @@ -586,7 +622,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Ükskõik milline Riik" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Sa oled nüüd sisselogitud {}" @@ -611,7 +647,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -626,91 +662,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Spetsiifilised tooted" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Spetsiifilised toodete kollektsioonid" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Spetsiifilised toodete kategooriad" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Saatmine" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Tasuta kohaletoimetamine" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s allahindlust saatmishinnast" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s allahindlust %(product_num)d tootelt" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s allahindlust %(collections_num)d kollektsioonilt" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr " %(discount)s allahindlust %(categories_num)d kategoorialt" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s allahindlust" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "See pakkumine ei kehti tellimustele üle %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Halda müüke ja vautšereid." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Allahindlus ei kehti sellele tootele" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Ainult %(quantity)d asi ootab täitmist." -msgstr[1] "Ainult %(quantity)d asja ootavad täitmist." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Seda saadetist ei ole võimalik tühistada" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Navigeerimise haldamine." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -720,17 +760,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategooria:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Kollektsioon:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Lehekülg:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -741,157 +781,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Täitmata" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Pooleldi täidetud" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Täidetud" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Tühistatud" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Täidetud" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Tühistatud" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Makse kinnitus" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Saatmiskinnitus" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Saadetise kinnitus" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Tellimuse kinnitus" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Tellimus loodus tellimuse mustandist %(user_name)s poolt" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "%(user_name)s tühistas makse" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Edukalt tagasi makstud: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Edukalt laekunud: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "%(user_name)s märkis käsitsi tellimuse \"makstud\"" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "%(user_name)s tühistas tellimuse" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Ladu täidetud %(quantity)d tootega" -msgstr[1] "Ladu täidetud %(quantity)d tootega" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s lisas märkme: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Saadetis #%(fulfillment)s tühistatud %(user_name)s poolt" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "%(quantity_fulfilled)d toode saadetud" -msgstr[1] "%(quantity_fulfilled)d toodet saadetud" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Tellimus edastati" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Tellimus oli täielikult tasutud" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s meil saadeti klientidele (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "%(user_name)s uuendas tellimuse andmeid" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Saadetis #%(fulfillment)s jälgimise numbrit uuendati %(tracking_number)s " -"%(user_name)spoolt" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -"%(quantity)dtoode üle olemasolevate varude müüdud antud tellimuses " -msgstr[1] "" -"%(quantity)d toodet üle olemasolevate varude müüdud antud tellimuses." +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -903,35 +959,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Makset ei eksisteeri" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Makset ei ole võimalik tühistada." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Halda tellimusi." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Saadetis #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "Me ei saanud tellimust kontole määrata, kuna meilid ei ühti" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "See tellimus on määratud nüüd sinu kasutajale" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Halda lehekülgi." @@ -941,58 +997,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manuaal" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Volitamine" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Debiteeri" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Tagastamine" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Laekuma" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Tühistamine" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Tasumata" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "Osaliselt tasutud" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "Täielikult tasutud" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Osaliselt tagasi makstud" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Täielikult tagasi makstud" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1003,7 +1054,7 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Makse seisund" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." @@ -1011,12 +1062,12 @@ msgstr "" "Tasumise staatust otse muuta {} ei ole võimalik. Palun kasutage töölauda, et" " osalist tagasimakset sooritada." -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Tellimuse eest ei võetud tasu." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Makse detailid olid kehtetud." @@ -1026,13 +1077,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Tellimust ei olnud võimalik edastada." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "%(currency)s valuutat ei toetata." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Maksa kohe kasutades Razorpay'd" @@ -1052,12 +1103,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Tellimuse eest ei võetud tasu." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Kogu makse" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "Tellimused maksetega ei ole võimalik märkida käsitsi makstuna." @@ -1102,12 +1153,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "väljamüüdud" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nimi" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "hind" @@ -1117,33 +1168,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "viimati uuendatud" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sorteeri" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Hind" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Halda tooteid." -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Päring" @@ -1189,170 +1240,190 @@ msgid "Spanish" msgstr "Hispaania" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Eesti" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "Pärsia" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Prantsuse" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Hindi" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Ungari" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Indoneesia" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Itaalia" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Jaapani" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Korea" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongoolia" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norra" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Hollandi" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Poola" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Brasiilia Portugali" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Rumeenia" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Vene" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovakkia" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Serbia" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Rootsi" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Türgi" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukraina" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnami" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Lihtsustatud hiina keel" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Traditsionaalne hiina keel" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Euroopa Liit" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Ajutine lüüs" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Hinnapõhine saatmine" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Kaalupõhine saatmine" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d riigid" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Halda saatmist." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s ja üles" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s kuni %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s ja üles" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s kuni %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Halda seadeid." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "Halda tõlkeid." @@ -1812,8 +1883,8 @@ msgstr "Otsi" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" -msgstr "Sinu ostukorv" +msgid "Your cart" +msgstr "Teie ostukorv" #: templates/base.html:202 msgid "Account" @@ -1824,44 +1895,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Stiili juhend" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Vahesumma" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Kohaletoimetamise tasu ja maksud arvutatakse juurde kassas" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Mine ostukorvi" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Kassa" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Teil ei ole ühtegi toodet ostukorvis." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Vaata meie sooduspakkumisi" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Kodu" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Vahesumma" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Postikulu:" @@ -1871,7 +1918,7 @@ msgid "Total" msgstr "Kokku" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Kohaletoimetamise tasu ja maksud arvutatakse juurde kassas" @@ -1926,45 +1973,55 @@ msgid "Total" msgstr "Kokku" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Teie ostukorv" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Ostukorv" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Toode on ostukorvist eemaldatud" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Toode" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Kogus" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Hind" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Kassa" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Puhasta ostukorv" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Teil ei ole ühtegi toodet ostukorvis." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Vaata meie sooduspakkumisi" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2100,6 +2157,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Esita tellimus" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Kohaletoimetamise tasu ja maksud arvutatakse juurde kassas" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Mine ostukorvi" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Kassa" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2215,8 +2287,8 @@ msgstr "Müügid" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2300,8 +2372,8 @@ msgstr "Leheküljed" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "Tühi:" +msgid "Release:" +msgstr "" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2551,7 +2623,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Lisa uus kollektsioon" @@ -2561,47 +2633,47 @@ msgstr "Lisa uus kollektsioon" msgid "Collections" msgstr "Kollektsioonid" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Eemalda kollektsioon" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Vaata saidil" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Saavadus" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Tühista" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Uuenda" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Loo" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Avaldatud" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Mustand" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "pealehe kollektsiooni ei ole võimalik mitte avaldada" @@ -3180,7 +3252,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Kokku" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3416,393 +3488,393 @@ msgid "Edit address" msgstr "Muuda aadressi" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Postiaadress" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Arveldusaadress" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Tühista tellimus" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Eemalda tellimuse mustand" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Prindi" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Andmed" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Maksed" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Ajalugu" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Maksed" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Esilekerkiv tasakaal" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Eelnevalt kinnitatud summa" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Laekunud summa" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Laekuma" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Tagastamine" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Tühistamine" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Märgi makstuna" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Klient" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Muuda kliendi andmeid" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Muuda" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Postiaadress puudub" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Postiaadressiga sama" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Arveldusaadress puudub" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Tellimuse mustand #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Tellimus #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Esitatud" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Element" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Hind" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Kogus" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Kokku" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "Tootekood: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Muuda kogust" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Eemalda rida" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Muuda saatmist" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Kohale toimetamas (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Saatmine" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Maksud (kaasa arvatud)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Maksud" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Allahindlus(%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Allahindlus" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Muuda vautšerit" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Muuda vautšerit" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Muuda allahindlust" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Muuda allahindlust" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Kogusumma" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Täida tellimus" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Täida" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Lisa toode tellimusse" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Lisa toode" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Loo tellimus" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Loo tellimus" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Arve" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Vaata saidil" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Saadetis #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Jälgimisnumber: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Tühista saadetis" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Tühista" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Muuda jälgimisnumbrit" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Muuda jälgimist" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Lisa jälgimine" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Pakkimissedelid" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Kliendi märkus" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Sellele tellimusele ei ole kliendilt ühtegi märkust." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Tellimuse märkused" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Sellele tellimusele ei ole ühtegi märkust." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Lisa märkus" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Maksekorralduse number" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Kuupäev" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Makse seisund" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Kogus" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Maksed sellele tellimusele puuduvad." @@ -5824,24 +5896,25 @@ msgstr "Soovitatud tooted" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(valikuline)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Fail" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6426,6 +6499,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Arveldusaadress" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Arveldusaadress puudub" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6433,7 +6512,7 @@ msgid "Shipping address" msgstr "Postiaadress" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Saatmist pole vaja" diff --git a/locale/et/LC_MESSAGES/djangojs.mo b/locale/et/LC_MESSAGES/djangojs.mo index 30d7b31e82c..06b5e2e37ac 100644 Binary files a/locale/et/LC_MESSAGES/djangojs.mo and b/locale/et/LC_MESSAGES/djangojs.mo differ diff --git a/locale/fa/LC_MESSAGES/django.mo b/locale/fa/LC_MESSAGES/django.mo index f7a2d0f92ff..702375eae94 100644 Binary files a/locale/fa/LC_MESSAGES/django.mo and b/locale/fa/LC_MESSAGES/django.mo differ diff --git a/locale/fa/LC_MESSAGES/django.po b/locale/fa/LC_MESSAGES/django.po index 83b2fdf105b..2a5408233b9 100644 --- a/locale/fa/LC_MESSAGES/django.po +++ b/locale/fa/LC_MESSAGES/django.po @@ -5,18 +5,18 @@ # # Translators: # shahnaz sehati , 2018 -# Patryk Zawadzki , 2019 -# hossein0440 , 2019 # usef enayati , 2019 +# hossein0440 , 2019 +# Patryk Zawadzki , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: usef enayati , 2019\n" +"Last-Translator: Patryk Zawadzki , 2019\n" "Language-Team: Persian (https://www.transifex.com/mirumee/teams/34782/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,32 +24,82 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "ایمیل" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "رمزعبور" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "ایمیل" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "این ایمیل قبلا ثبت شده است." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "نام" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "نام خانوادگی" @@ -154,12 +204,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "کد پستی" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "کشور" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "نام" @@ -179,37 +229,37 @@ msgctxt "Address" msgid "Address" msgstr "آدرس" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "شهر" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "منطقه" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "کد پستی" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "استان" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "شماره تلفن" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "آدرس خیابان ، صندوق پستی ، نام شرکت" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "آپارتمان، سوئیت، واحد، ساختمان، طبقه، و غیره" @@ -223,17 +273,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "این مقدار برای کشور انتخاب شده نامعتبر است" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "مدیریت مشتریان" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "مدیریت کارکنان" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "جعل هویت مشتریان" @@ -254,40 +304,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "با موفقت خارج شدید." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "اکانت درست شد." -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "کلمه عبور با موفقیت تغییر یافت." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "حساب کاربری با موفقیت به روز رسانی شد" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "آدرس آپدیت شد." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "آدرس با موفقیت پاک شد." -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "لطفا صندوق ورودی خود را برای ایمیل تایید بررسی کنید." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -296,96 +346,102 @@ msgstr "" "حساب کاربری شما با موفقیت حذف شد. در صورت وجود هرگونه مشکل لطفا با ما در " "تماس باشید." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "صورتحساب" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "ارسال" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "تعداد" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "پوزش. محصول در حال حاضر موجود نیست." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "پوزش. موجودی این محصول در انبار تمام شده." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "محصول پیدا نشد." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "تنها %dای در انبار مانده." -msgstr[1] "تنها %d تا در انبار مانده." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "کشور" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "ایمیل" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "آدرس جدید را وارد کنید" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "آدرس" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "آدرس جدید را وارد کنید" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "همان آدرس ارسال" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "آدرس" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "روش ارسال" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "کد تخفیف نامعتبر است یا منقضی شده است." -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "گیفت کارت یا کد تخیف" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -393,182 +449,162 @@ msgstr "" "معذرت. به تعداد وارد شده در انبار موجودی نداریم تعداد سفارش به بیشترین مقدار" " موجودی تغییر پیدا کرد." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "سفارش شما به پست احتیاحی ندارد." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "لطفا در ابتدا یک روس ارسال را انتخاب نمایید." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "این پیشنهاد در کشور شما موجود نیست." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "این پیشنهاد تنها برای آیتم های انتخاب شده معتبر است." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "در حال حاضر کد تخفیف منقضی شده است. سفارش شما لغو شد. " -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "روش حمل و نقل انتخاب نشده است" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "آدرس حمل و نقل انتخاب نشده است" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "کد تخفیف منقضی شده. سفارش خود را یک بار دیگر مرور کنید." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "لطفا اطلاعات را بازبینی نمایید." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "محل زندگی" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "دعوت به رویدادهای فرهنگی" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "دعوت به رویدادهای تفریحی" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "دعوت به رویدادهای ورزشی" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "تبلیغات" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "ابزار و لوازم کشاورزی" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "خوراک بچه" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "دوچرخه" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "کتاب" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "لباس پچه ها" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "سرویس‌های محلی" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "کتابـخوان ها" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "خوراکی‌ها" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "هتل ها" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "پزشکی" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "روزنامه ها" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "حمل و نقل مسافران" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "دارویی" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "بازسازی ملک" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "رستوران ها" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "مسکن سازمانی" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "معمولی" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "آب" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -586,7 +622,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "هر کشوری" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "حالا شما به جای {} در سیستم هستید." @@ -611,7 +647,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "گرم" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "٪" @@ -626,91 +662,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "محصولات خاص" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "دسته‌ای خاص از محصولات" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "دسته‌ای خاص از محصولات" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "ارسال" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "ارسال رایگان" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s درصد تخفیف ارسال" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s تخفیف %(product_num)d محصولات" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s تخفیف %(collections_num)d دسته‌ها" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s تخفیف %(categories_num)d دسته‌بندی‌ها" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s تخفیف" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "این تخفیف تنها برای سفارش های بالای %(amount)s معتبر است." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "مدیریت فروش و تخفیف‌ها" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "تخفیف برای این کالا ممکن نیست" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "مدیریت حمل و نقل" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "لینک: " @@ -720,17 +760,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "دسته بندی: " -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "مجموعه: " -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "صفحه: " -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -741,153 +781,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "غیرنهایی" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "نیمه کامل" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "کامل شده" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "لغو شده" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "نهایی شده" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "لغو شده" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "تائیدیه پرداخت" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "تاییدیه حمل و نقل" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "تایید سفارش" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "پرداخت توسط %(user_name)s لغو گردید" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "باز پرداخت %(amount)s موفقیت آمیز." +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "پرداخت دستی برای این سفارش توسط%(user_name)s انتخاب شده" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "سفارش لغو شد توسط%(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "یادداشت اضافه شده توسط %(user_name)s : %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "سفارش داده شد." +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "هزینه سفارش بطور کامل پرداخت شده." +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -899,35 +959,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "پرداخت وجود ندارد" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "پرداخت را نمی توان لغو کرد." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "مدیریت سفارشات." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "اجرای #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "حالا سفارش به حساب شما لینک شد." -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "مدیریت صفحات" @@ -937,58 +997,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "دستی" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "مجوز" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "شارژ" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "بازپرداخت" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "ضبط" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "انتخاب نشده" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "شارژ نشده" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -998,18 +1053,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "وضعیت پرداخت" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "سفارش پرداخت نشد" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1019,13 +1074,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1045,12 +1100,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "سفارش پرداخت نشد" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "مبلغ کل قابل پرداخت" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1095,12 +1150,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "ناموجود" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "نام" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "قیمت" @@ -1110,33 +1165,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "آخرین به روزرسانی" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "مرتب سازی بر اساس" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "قیمت" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "مدیریت محصولات" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "متن جستجو" @@ -1182,170 +1237,190 @@ msgid "Spanish" msgstr "اسپانیا" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 msgid "Persian" msgstr "فارسی" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "فرانسه" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "مجارستان" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "ایتالیا" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "ژاپن" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "کره جنوبی" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "مغولستان" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "نروج" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "هلند" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "لهستانی" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "پرتغالی برزیل" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "رومانی" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "روسیه" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "اسلواکی" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "صربستان" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "سوئدی" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "ترکیه" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "اکراین" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "ویتنام" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "چینی ساده شده" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "چینی سنتی" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "اتحادیه اروپا" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "قیمت با حمل و نقل" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "حمل و نقل بر اساس وزن" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "مدیریت حمل و نقل" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "مدیریت تنظیمات" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1801,8 +1876,8 @@ msgstr "جستجو" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" -msgstr "سبد خرید شما" +msgid "Your cart" +msgstr "سبد شما" #: templates/base.html:202 msgid "Account" @@ -1813,44 +1888,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "راهنمای چینش" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "مجموع" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "هزینه ی پست و مالیات افزوده در صفحه ی پرداخت" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "برو به سبد" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "خرید و پرداخت" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "محصولی در سبد خرید شما وجود ندارد." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "بررسی مجدد محصولات" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "خانه" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "مجموع" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "هزینه ی ارسال:" @@ -1860,9 +1911,9 @@ msgid "Total" msgstr "مجموع کل" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" -msgstr "هزینه ی پست و مالیات در قسمت نهایی اعمال می شود." +msgstr "هزینه ی پست و مالیات افزوده در صفحه ی پرداخت" #: templates/checkout/details.html:7 msgctxt "Checkout page title" @@ -1915,45 +1966,55 @@ msgid "Total" msgstr "مجموع" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "سبد شما" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "سبد خرید" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "محصول از سبد برداشته شد." +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "کالا" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "تعداد" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "قیمت" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" -msgstr "خرید و پرداخت" +msgstr "صفحه ی سفارش" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "حذف سبد خرید" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "محصولی در سبد خرید شما وجود ندارد." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "بررسی مجدد محصولات" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2085,6 +2146,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "ثبت سفارش" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "هزینه ی پست و مالیات افزوده در صفحه ی پرداخت" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "برو به سبد" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "صفحه ی سفارش" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2195,8 +2271,8 @@ msgstr "فروش" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2280,8 +2356,8 @@ msgstr "صفحات" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "انتخاب نشده" +msgid "Release:" +msgstr "نسخه ی:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2527,7 +2603,7 @@ msgstr "آیا از حذف مجموعه ی %(collection)s مط #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "افزودن مجموعه ی جدید" @@ -2537,47 +2613,47 @@ msgstr "افزودن مجموعه ی جدید" msgid "Collections" msgstr "مجموعه ها" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "حذف مجموعه" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "مشاهده در سایت" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "دسترسی" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "لغو" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "به روزرسانی" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "ایجاد" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "منتشر شده" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "چرک نویس" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3150,7 +3226,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "مجموع" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3380,393 +3456,393 @@ msgid "Edit address" msgstr "ویرایش آدرس" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "آدرس ارسال" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "آدرس فاکتور" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "لغو سفارش" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "حذف چرک نویس سفارش" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "چاپ" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "جزییات" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "پرداخت ها" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "تاریخ خرید" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "پرداخت ها" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "م/ن" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "مقدار پیش پرداخت" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "م/ن" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "مقدار ضبط شده" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "ضبط" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "بازپرداخت" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "انتخاب نشده" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "تایید پرداخت" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "مشتری" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "ویرایش مشخصات مشتری" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "ویرایش" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "بدون آدرس ارسال" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "همان آدرس ارسال" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "صورت حساب ناموجود" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "پیش نویس سفارش #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "سفارش %(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "سفارش در" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "آیتم" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "قیمت" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "تعداد" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "مجموع" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "تغییر ظرفیت" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "حذف خط" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "ویرایش نحوه ارسال" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "ارسال (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "ارسال" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "مالیات (لحاظ شده)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "مالیات" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "تخفیف (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "تخفیف" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "ویرایش کوپن" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "ویرایش کوپن" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "ویرایش کد تخفیف" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "ویرایش کد تخفیف" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "جمع کل" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "نهایی سازی سفارش" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "نهایی سازی" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "اضافه کردن محصول به سفارش" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "اضافه کردن محصول" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "ایجاد سفارش" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "ایجاد سفارش" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "صورت حساب" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "مشاهده در سایت" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "اجرای #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "کد پیگیری: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "لغو اجرا" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "لغو" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "ویرایش کد پیگیری" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "ویرایش نحوه پیگیری" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "افزودن پیگیری" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "نوع بسته بندی" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "یادداشت مشتری" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "هیچ یادداشتی از مشتری برای این سفارش وجود ندارد." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "یادداشت های سفارش" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "یادداشتی مربوط به این سفارش وجود ندارد." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "افزودن یادداشت" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "شناسه پرداخت" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "تاریخ" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "وضعیت پرداخت" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "مبلغ" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "پرداختی برای سفارش انجام نشده." @@ -5746,24 +5822,25 @@ msgstr "محصولات برجسته" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(اختیاری)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "فایل" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6324,6 +6401,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "آدرس فاکتور" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "صورت حساب ناموجود" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6331,7 +6414,7 @@ msgid "Shipping address" msgstr "آدرس ارسال" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "این خرید نیاز به تایید ندارد." diff --git a/locale/fa/LC_MESSAGES/djangojs.mo b/locale/fa/LC_MESSAGES/djangojs.mo index d759fac4f54..3c080fc3f0e 100644 Binary files a/locale/fa/LC_MESSAGES/djangojs.mo and b/locale/fa/LC_MESSAGES/djangojs.mo differ diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index d120092006d..d1d06977200 100644 Binary files a/locale/fr/LC_MESSAGES/django.mo and b/locale/fr/LC_MESSAGES/django.mo differ diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 8e4d2117306..3c699fac268 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -9,19 +9,19 @@ # Patryk Zawadzki , 2018 # capi tech , 2019 # Da Costa Faro Rémy , 2019 +# Marouane Fawzi , 2019 +# Yann Terzibachian , 2019 # benoit barthelet , 2019 # NyаnKiyoshi , 2019 -# Yann Terzibachian , 2019 -# Marouane Fawzi , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Marouane Fawzi , 2019\n" +"Last-Translator: NyаnKiyoshi , 2019\n" "Language-Team: French (https://www.transifex.com/mirumee/teams/34782/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,142 +29,192 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Courriel" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Mot de passe" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Courriel" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Ce courriel est déjà associé à un compte." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Prénom" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Nom de famille" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "Localité" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "Comté" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "Département" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "District" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "Do/si" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "Eircode" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "Émirat" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "Île" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "Quartier" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" msgstr "Oblast" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "Paroisse" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "Code PIN" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "Code postal" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "Préfecture" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "Province" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "État" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "Banlieue" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "Townland" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "Village" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "Code postal" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Pays" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Prénom" @@ -184,57 +234,61 @@ msgctxt "Address" msgid "Address" msgstr "Adresse" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Ville" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Quartier" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Code postal" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "État ou province" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Numéro de téléphone" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "Le numéro de téléphone entré est invalide." + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Cette valeur est incorrecte pour le pays choisi" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Gestion des clients." -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Gestion du personnel." -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Contrôle des comptes clients." @@ -255,44 +309,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "Le numéro de téléphone entré est invalide." - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Vous êtes désormais déconnecté." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "L'utilisateur à été crée" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Le mot de passe a été mis à jour" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "L'adresse a été mise à jour" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "L'adresse a été supprimée" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Vérifiez votre boite de réception pour le courriel de confirmation." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -301,96 +351,102 @@ msgstr "" "Votre compte a été supprimé. En cas de problèmes ou questions, n'hésitez pas" " à nous contacter." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Facturation" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Livraison" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Quantité" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Désolé, ce produit est actuellement indisponible." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Désolé, ce produit est en rupture de stock." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oups. Nous ce produit n'a pas été trouvé." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Seulement %d restant en stock." -msgstr[1] "Seulement %d restants en stock." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Pays" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Courriel" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Entrer une nouvelle adresse" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adresse" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Entrer une nouvelle adresse" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Identique à l'adresse de livraison" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adresse" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Méthode de livraison" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Code de remise inexact ou expiré" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Carte cadeau ou code de remise" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -398,182 +454,162 @@ msgstr "" "Désolé. Nous n'avons pas autant d'articles en stock. La quantité a été " "remplacée par le maximum actuellement disponible." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Votre commande ne nécessite pas de livraison." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Veuillez d'abord choisir une méthode de livraison." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Cette remise n'est pas disponible pour votre pays." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Cette offre n'est valide que pour les objets sélectionnés." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Le bon de réduction a expiré. La commande a donc été annulée." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Aucune méthode de livraison selectionée" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Aucune addresse de livraison selectionée" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Ce bon d'achat a expiré. Merci de revoir votre panier." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Merci de revoir votre panier." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "logement" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "admission à des événements culturaux" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "admission à des événements de divertissement" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "admission à des événements sportifs" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "publicité" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "fournitures agricoles" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "alimentaires pour bébés" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "vélos" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "livres" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "vêtements pour enfants" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "carburant domestique" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "services domestiques" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "livres électroniques" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "produits alimentaires" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hôtels" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "médical" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "journaux" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "transports de passagers" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "médicaments" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "rénovations immobilières" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restaurants" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "logement social" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "eau" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "vin" @@ -591,7 +627,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Le monde entier" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Vous êtes désormais connecté en tant que {}" @@ -616,7 +652,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -631,57 +667,57 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Des produits spécifiques" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Des collections spécifiques" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Des catégories spécifiques" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "La livraison" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Livraison gratuite" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s sur la livraison" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s remisés sur %(product_num)d produits" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s remisés sur %(collections_num)d collections" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s remisés sur %(categories_num)d catégories" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s sur" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." @@ -689,35 +725,39 @@ msgstr "" "Cette promotion est valide uniquement pour les commandes supérieures à " "%(amount)s." -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Gestion des promotions et bons d'achat." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Remise non disponible pour ce produit" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Cet envoi ne peut pas être annulé" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Gestion des barres de navigation." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "Lien hypertexte : " @@ -727,17 +767,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Catégorie :" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Collection : " -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Page : " -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -748,153 +788,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "En attente" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "En cours de traitement" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Traitée" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Annulée" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Traitée" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Annulée" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Confirmation de paiement" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Confirmation de livraison" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Confirmation de la commande" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Commande créée depuis le brouillon de commandes par %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "%(amount)sremboursé avec succès" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Commande annulée par %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "%(quantity_fulfilled)d article expédié" -msgstr[1] "%(quantity_fulfilled)d articles expédiés" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "La commande a été passée" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -906,23 +966,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Le paiement n'existe pas" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "paiement ne peut pas être annulé." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Gestion des commandes." -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Expédition #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -931,12 +991,12 @@ msgstr "" "Nous n'avons pas pu assigner la commande à votre compte, les adresses mails " "ne correspondent pas" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "La commande est désormais assignée à votre compte" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Gestion des pages statiques." @@ -946,58 +1006,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manuel" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "authorisation." -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Remboursement" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Saisie" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Totalement remboursé" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1007,18 +1062,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Statut du paiement" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Les données du paiement sont invalides" @@ -1028,13 +1083,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Payer maintenant avec Razorpay" @@ -1054,12 +1109,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Paiement total" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1104,12 +1159,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "en rupture de stock" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nom" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "prix" @@ -1119,28 +1174,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "dernière mise à jour" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Trier par" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Prix" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Gestion des produits." -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Demande" @@ -1186,166 +1246,190 @@ msgid "Spanish" msgstr "Espagnol" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Estonien" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "Perse" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Français" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Hindi" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Hongrois" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Indonésien" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italien" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japonais" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Coréen" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongolien" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norvégien" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Néerlandais" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polonais" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Roumain" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Russe" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovaque" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Serbe" -#: saleor/settings.py:89 +#: saleor/settings.py:94 +msgid "Swahili" +msgstr "" + +#: saleor/settings.py:95 msgid "Swedish" msgstr "Suédois" -#: saleor/settings.py:90 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:91 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turque" -#: saleor/settings.py:92 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukrainien" -#: saleor/settings.py:93 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnamien" -#: saleor/settings.py:94 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Chinois simplifié" -#: saleor/settings.py:95 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Chinois traditionnel" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Union Européenne" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Livraison basée sur le prix" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Livraison basée sur le poids" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d pays" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Gestion des méthodes de livraison." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s et plus" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s a %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s et plus" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s a %(max_weight)s" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Gestion des paramètres du magasin." -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1807,7 +1891,7 @@ msgstr "Recherche" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Votre panier" #: templates/base.html:202 @@ -1819,44 +1903,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Guide stylistique" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Sous-total" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Les frais de livraison et la TVA sont calculés au moment du paiement" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Aller au panier" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Paiement" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Il n'y a pas de produits dans votre panier." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Jetez un coup d’œil à nos offres" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Accueil" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Sous-total" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Frais de livraison pour :" @@ -1866,7 +1926,7 @@ msgid "Total" msgstr "Total" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Les frais de livraison et la TVA sont calculés au moment du paiement" @@ -1921,45 +1981,55 @@ msgid "Total" msgstr "Total" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Votre panier" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Panier" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Le produit a été supprimé de votre panier" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produit" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Quantité" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Prix" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Paiement" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Vider le panier" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Il n'y a pas de produits dans votre panier." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Jetez un coup d’œil à nos offres" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2091,6 +2161,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Commander" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Les frais de livraison et la TVA sont calculés au moment du paiement" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Aller au panier" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Paiement" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2201,8 +2286,8 @@ msgstr "Ventes" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2286,8 +2371,8 @@ msgstr "Pages" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Version :" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2540,7 +2625,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Ajouter une nouvelle collection" @@ -2550,47 +2635,47 @@ msgstr "Ajouter une nouvelle collection" msgid "Collections" msgstr "Collections" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Supprimer la collection" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Voir sur le site" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Disponibilité" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Annuler" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Mettre à jour" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Créer" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Publié" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Brouillon" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3167,7 +3252,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Total" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3404,393 +3489,393 @@ msgid "Edit address" msgstr "Modifier l'adresse" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Adresse de livraison" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Adresse de facturation" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Annuler la commande" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Supprimer la commande brouillon" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Imprimer" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Détails" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Paiements" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Historique" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Paiements" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Balance restante" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Montant pré-autorisé" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Montant saisi" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Saisie" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Remboursement" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Marquer payé" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Client" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Modifier les détails du client" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Modifier" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Aucune adresse de livraison" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Même adresse que la livraison" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Aucune adresse de facturation" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Commande brouillon #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Commande #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Effectué le" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Article" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Prix" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Quantité" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Total" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "Référence : %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Changer la quantité" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Enlever la ligne" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Modifier la livraison" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Livraison (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Livraison" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "TVA (Incluse)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "TVA" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Remise (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Remise" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Modifier le bon d'achat" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Modifier le bon d'achat" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Modifier la remise" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Modifier la remise" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Total" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Expédier la commande" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Expédier" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Ajouter un produit à la commande" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Ajouter un produit" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Créer la commande" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Créer la commande" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Facture" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Voir sur le site" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Expédition #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Numéro de suivi : %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Annuler l'expédition" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Annuler" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Modifier le code de suivi de l'expédition" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Modifier le suivi" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Ajouter un suivi" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Reçu de livraison" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Note client" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Il n'y a aucune note de la part du client sur cette commande." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Notes de commande" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Il n'y a pas de notes associées à cet commande" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Ajouter une note" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID de transaction" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Date" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Statut du paiement" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Montant" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Aucun paiement n'a été effectué pour cette commande" @@ -5814,24 +5899,25 @@ msgstr "Produits à l'affiche" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(optionnel)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Fichier" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6330,14 +6416,14 @@ msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" -msgstr "Un envoi de la commande %(order)s est en route" +msgid "Your order %(order)s has been fulfilled" +msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:15 @@ -6402,6 +6488,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Adresse de facturation" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Aucune adresse de facturation" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6409,7 +6501,7 @@ msgid "Shipping address" msgstr "Adresse de livraison" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Aucune livraison nécessaire." @@ -6493,10 +6585,14 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." msgstr "" -"Merci pour votre commande. Vous retrouverez ci-dessous la liste des produits" -" expédiés." #: templates/templated_email/source/confirm_order.mjml:17 #, python-format diff --git a/locale/fr/LC_MESSAGES/djangojs.mo b/locale/fr/LC_MESSAGES/djangojs.mo index 88d4ea41837..c757d8ed9aa 100644 Binary files a/locale/fr/LC_MESSAGES/djangojs.mo and b/locale/fr/LC_MESSAGES/djangojs.mo differ diff --git a/locale/hi/LC_MESSAGES/django.mo b/locale/hi/LC_MESSAGES/django.mo index 1774e0fc510..b0bbaa6d545 100644 Binary files a/locale/hi/LC_MESSAGES/django.mo and b/locale/hi/LC_MESSAGES/django.mo differ diff --git a/locale/hi/LC_MESSAGES/django.po b/locale/hi/LC_MESSAGES/django.po index f3fae801266..f64da2db44a 100644 --- a/locale/hi/LC_MESSAGES/django.po +++ b/locale/hi/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Hari Nadar , 2019\n" "Language-Team: Hindi (https://www.transifex.com/mirumee/teams/34782/hi/)\n" @@ -22,32 +22,82 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "ईमेल" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "पासवर्ड" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "ईमेल" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "यह ईमेल पहले ही पंजीकृत हो चुका है।" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "" @@ -152,12 +202,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "पिन कोड" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "" @@ -177,37 +227,37 @@ msgctxt "Address" msgid "Address" msgstr "" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "जिला" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "PIN कोड" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -221,17 +271,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -250,317 +300,303 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "मात्रा" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "ईमेल" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -578,7 +614,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -603,7 +639,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "" @@ -618,91 +654,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -712,17 +752,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -733,153 +773,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -891,35 +951,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -929,58 +989,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -990,18 +1045,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1011,13 +1066,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1037,12 +1092,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1087,12 +1142,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "नाम" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1102,33 +1157,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "छँटाई" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1174,170 +1229,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1784,7 +1859,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1796,44 +1871,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1843,7 +1894,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1898,45 +1949,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "मात्रा" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2068,6 +2129,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2178,8 +2254,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2263,7 +2339,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2507,7 +2583,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2517,47 +2593,47 @@ msgstr "" msgid "Collections" msgstr "संग्रह" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3116,7 +3192,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3346,393 +3422,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "मात्रा" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5684,24 +5760,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6248,6 +6325,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6255,7 +6338,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/hi/LC_MESSAGES/djangojs.mo b/locale/hi/LC_MESSAGES/djangojs.mo index 7f6ac1a69ce..518235668d3 100644 Binary files a/locale/hi/LC_MESSAGES/djangojs.mo and b/locale/hi/LC_MESSAGES/djangojs.mo differ diff --git a/locale/hu/LC_MESSAGES/django.mo b/locale/hu/LC_MESSAGES/django.mo index a0b7a7a4b9b..9343b5d5def 100644 Binary files a/locale/hu/LC_MESSAGES/django.mo and b/locale/hu/LC_MESSAGES/django.mo differ diff --git a/locale/hu/LC_MESSAGES/django.po b/locale/hu/LC_MESSAGES/django.po index 55fd50f5cef..aa62c35bead 100644 --- a/locale/hu/LC_MESSAGES/django.po +++ b/locale/hu/LC_MESSAGES/django.po @@ -4,18 +4,18 @@ # Mirumee Software , 2017. # # Translators: -# Marci Wéber , 2018 -# Lehner Viktor , 2019 # Tóth Péter , 2019 +# Lehner Viktor , 2019 +# Marci Wéber , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Tóth Péter , 2019\n" +"Last-Translator: Marci Wéber , 2019\n" "Language-Team: Hungarian (https://www.transifex.com/mirumee/teams/34782/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,142 +23,192 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Jelszó" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Ez az email cím már használatban van." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Keresztnév" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Vezetéknév" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "Ország" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "Kerület" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" msgstr "" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "Irányítószám" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "Provincia" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "Állam" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "Irányítószám" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Ország" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Keresztnév" @@ -178,57 +228,61 @@ msgctxt "Address" msgid "Address" msgstr "Cím" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Város" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Kerület" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Irányítószám" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Állam vagy tartomány" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefonszám" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "A beírt telefonszám nem helyes" + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Az érték nem érvényes a kiválasztott országban" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Ügyfelek kezelése" -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Személyzet kezelése" -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -247,140 +301,142 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "A beírt telefonszám nem helyes" - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Sikeresen kijelentkeztél" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Felhasználó sikeresen létrehozva" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "A jelszó sikeresen megváltozott" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "A cím sikeresen megváltozott" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "A cím sikeresen el lett távolítva" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Kérem ellenőrizze postafiókját amegerősítéshez" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Számlázás" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Szállításra" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Mennyiség" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Bocsánat. Ez a termék jelenleg nem elérhető." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Bocsánat. Ebből a termékből jelenleg nincs raktáron." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Hoppá. Nincs ilyen termék." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Csak %d darab van raktáron." -msgstr[1] "Csak %d darab van raktáron." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Ország" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Add meg az új címet" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Cím" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Add meg az új címet" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Megegyezik a szállítási címmel" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Cím" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Szállítási mód" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Promóció kód helytelen vagy lejárt" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Ajándék vagy promóció kód" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -388,182 +444,162 @@ msgstr "" "Sajnáljuk a termékből nincs a kívánt mennyiség raktáron. A mennyiséget " "átállítottuk az elérhető mennyiségre" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "A rendeléséhez nincs szükség szállításra." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Kérem előszőr válasszon szállítási módot." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Ez az ajánlat az Ön országában nem érvényes." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Ez az ajánlat csak a kiválasztott termékekre szól" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "A voucher időközben lejárt. A rendelést töröltük." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Nics szállítási mód kiválasztva" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "szállás" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "Gyerekruha" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -581,7 +617,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Bejelentkezve mint {}" @@ -606,7 +642,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -621,91 +657,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Szállításra" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Ingyenes szállítás" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Ez a termék nem akciós" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -715,17 +755,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategória:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -736,153 +776,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Rendelés leadva" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -894,35 +954,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -932,58 +992,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Visszatérítés" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -993,18 +1048,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Fizetés állapota" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1014,13 +1069,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1040,12 +1095,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1090,12 +1145,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "nincs raktáron" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "név" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "ár" @@ -1105,28 +1160,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "utóljára frissítve" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Rendezés" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Ár" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Lekérdezés" @@ -1172,166 +1232,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swedish" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Thai" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Turkish" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Ukrainian" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Vietnamese" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Simplified Chinese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 +msgid "Swedish" +msgstr "" + +#: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1778,7 +1862,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Kosarad" #: templates/base.html:202 @@ -1790,44 +1874,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Kosár" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Fizetés" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Főoldal" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1837,7 +1897,7 @@ msgid "Total" msgstr "Összesen" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1892,45 +1952,55 @@ msgid "Total" msgstr "Összesen" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Kosarad" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Kosár" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Termék" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Mennyiség" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Ár" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Fizetés" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2062,6 +2132,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Kosár" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Fizetés" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2172,8 +2257,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2257,7 +2342,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2501,7 +2586,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2511,47 +2596,47 @@ msgstr "" msgid "Collections" msgstr "Kollekciók" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Mégse" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Frissít" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Publikált" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3110,7 +3195,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Összesen" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3340,393 +3425,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Számlázási cím" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Fizetések" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Fizetések" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Visszatérítés" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Megjelölve fizetettként" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Vásárló" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Szerkesztés" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Megrendelve" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Ár" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Mennyiség" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Összesen" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Szállításra" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Termék hozzáadása a rendeléshez" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Termék hozzáadás" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Rendelés felvitel" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Rendelés felvitel" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Mégse" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Ügyfél megjegyzése" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Fizetés állapota" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Mennyiség" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5678,24 +5763,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6170,14 +6256,14 @@ msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" +msgid "Your order %(order)s has been fulfilled" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:15 @@ -6242,6 +6328,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Számlázási cím" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6249,7 +6341,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" @@ -6327,7 +6419,13 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." msgstr "" #: templates/templated_email/source/confirm_order.mjml:17 diff --git a/locale/hu/LC_MESSAGES/djangojs.mo b/locale/hu/LC_MESSAGES/djangojs.mo index cd1dbbda9e7..610467aa350 100644 Binary files a/locale/hu/LC_MESSAGES/djangojs.mo and b/locale/hu/LC_MESSAGES/djangojs.mo differ diff --git a/locale/hy/LC_MESSAGES/django.mo b/locale/hy/LC_MESSAGES/django.mo index 5283b4419a1..b8579b01e46 100644 Binary files a/locale/hy/LC_MESSAGES/django.mo and b/locale/hy/LC_MESSAGES/django.mo differ diff --git a/locale/hy/LC_MESSAGES/django.po b/locale/hy/LC_MESSAGES/django.po index 7866a87222a..7232c824b8b 100644 --- a/locale/hy/LC_MESSAGES/django.po +++ b/locale/hy/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Vachagan , 2019\n" "Language-Team: Armenian (https://www.transifex.com/mirumee/teams/34782/hy/)\n" @@ -21,142 +21,192 @@ msgstr "" "Language: hy\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" msgstr "" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "" @@ -176,57 +226,61 @@ msgctxt "Address" msgid "Address" msgstr "" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "" + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -245,321 +299,303 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "" - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -577,7 +613,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -602,7 +638,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "" @@ -617,91 +653,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -711,17 +751,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -732,153 +772,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -890,35 +950,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -928,58 +988,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -989,18 +1044,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1010,13 +1065,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1036,12 +1091,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1086,12 +1141,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "Անուն" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1101,28 +1156,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Տեսակավորել ըստ" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1168,166 +1228,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swedish" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Thai" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Turkish" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Ukrainian" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Vietnamese" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Simplified Chinese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 +msgid "Swedish" +msgstr "" + +#: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1774,7 +1858,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1786,44 +1870,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1833,7 +1893,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1888,45 +1948,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2058,6 +2128,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2168,8 +2253,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2253,7 +2338,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2497,7 +2582,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2507,47 +2592,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Հրապարակված" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3106,7 +3191,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3336,393 +3421,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5674,24 +5759,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6166,14 +6252,14 @@ msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" +msgid "Your order %(order)s has been fulfilled" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:15 @@ -6238,6 +6324,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6245,7 +6337,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" @@ -6323,7 +6415,13 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." msgstr "" #: templates/templated_email/source/confirm_order.mjml:17 diff --git a/locale/id/LC_MESSAGES/django.mo b/locale/id/LC_MESSAGES/django.mo index 804f698c84a..71268894acc 100644 Binary files a/locale/id/LC_MESSAGES/django.mo and b/locale/id/LC_MESSAGES/django.mo differ diff --git a/locale/id/LC_MESSAGES/django.po b/locale/id/LC_MESSAGES/django.po index 24e569d4fae..fc80b1e2193 100644 --- a/locale/id/LC_MESSAGES/django.po +++ b/locale/id/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Chetabahana , 2019\n" "Language-Team: Indonesian (https://www.transifex.com/mirumee/teams/34782/id/)\n" @@ -23,142 +23,192 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "Akun telah dibuat" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Kata sandi" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Email ini sudah terdaftar." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Nama Depan" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Nama Belakang" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "Area" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "Negara" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "Bagian" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "Distrik" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "Do/si" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "Eircode" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "Emirat" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "Pulau" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "Lingkungan" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" -msgstr "Oblast" +msgstr "Wilayah" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "Paroki" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "PIN" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "Kode pos" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "Prefektur" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "Provinsi" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "Provinsi" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "Daerah pinggiran" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "Kota" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "Desa/kota" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "Kode Pos" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Negara" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Nama Depan" @@ -178,57 +228,61 @@ msgctxt "Address" msgid "Address" msgstr "Alamat" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Kota" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Distrik" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Kode pos" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Provinsi" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Nomor telepon" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Alamat jalan, P.O. box, nama perusahaan" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Apartemen, suite, unit, gedung, lantai, dll" -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "Nomor telepon yang dimasukan tidak tepat." + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Keterangan ini tidak valid untuk negara yang dipilih" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Kelola pelanggan." -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Kelola staf." -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Pelanggan tiruan." @@ -249,44 +303,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "Nomor telepon yang dimasukan tidak tepat." - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Kamu sudah keluar." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Akun sudah dibuat" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Sukses mengganti password." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Sukses memperbarui akun." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Sukses memperbarui alamat." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Sukses menghapus alamat" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Silakan periksa kotak masuk Anda untuk konfirmasi email." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -295,95 +345,101 @@ msgstr "" "Akun Anda berhasil dihapus. Jika ada masalah atau pertanyaan, jangan ragu " "untuk menghubungi kami." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Penagihan" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Pengiriman" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Jumlah" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Maaf. Produk ini tidak tersedia saat ini." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Maaf. Produk ini saat ini kehabisan stok." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Ups. Kami tidak dapat menemukan produk itu." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Hanya %d tersisa dalam stok." +msgstr[0] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Negara" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Masukkan alamat baru" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Alamat" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Masukkan alamat baru" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Sama dengan pengiriman" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Alamat" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Metode pengiriman" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Kode diskon salah atau kadaluwarsa" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Kartu hadiah atau kode diskon" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -391,182 +447,162 @@ msgstr "" "Maaf. Kami tidak memiliki banyak persediaan. Jumlah item ditetapkan ke " "maksimum yang tersedia untuk saat ini." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." -msgstr "Pesanan Anda tidak membutuhkan pengiriman." +msgstr "Pesanan Anda tidak memerlukan pengiriman." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Silakan pilih metode pengiriman terlebih dahulu." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Penawaran ini tidak berlaku di negara Anda." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Penawaran ini hanya berlaku untuk item yang dipilih." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Masa berlaku Voucher sudah habis. Pesanan dibatalkan." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Metode pengiriman belum dipilih" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Alamat pengiriman belum diisi" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Metode pengiriman tidak valid untuk alamat pengiriman Anda" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Alamat penagihan tidak disetel" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Voucher ini telah kedaluwarsa. Harap periksa kembali." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Harap periksa pembayaran Anda." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "Akomodasi" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "masuk ke acara-acara kebudayaan" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "masuk kategori acara hiburan" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "masuk ke acara-acara kebugaran" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "periklanan" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "pasokan pertanian" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "bahan makanan bayi" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "sepeda" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "buku" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "pakaian anak anak" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "bahan bakar domestik" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "layanan domestik" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-book" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "bahan makanan" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotel" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "medis" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "koran" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "transportasi penumpang" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "obat-obatan" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "renovasi properti" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restoran" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "pemukiman sosial" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standar" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "air bersih" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "minuman anggur" @@ -576,14 +612,14 @@ msgstr "minuman anggur" msgctxt "Number of matching records in the dashboard list" msgid "Found %(counter)d matching record" msgid_plural "Found %(counter)d matching records" -msgstr[0] "Ditemukan%(counter)drekaman yang cocok " +msgstr[0] "Ditemukan%(counter)d rekaman yang cocok " #: saleor/core/i18n.py:5 msgctxt "Country choice" msgid "Any Country" msgstr "Negara mana pun" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Anda login sebagai {}" @@ -608,7 +644,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "gr" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -621,92 +657,96 @@ msgstr "Semua produk" #: saleor/discount/__init__.py:24 msgctxt "Voucher: discount for" msgid "Specific products" -msgstr "Produk spesifik" +msgstr "Produk tertentu" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Koleksi produk tertentu" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Kategori produk tertentu" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Pengiriman" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Gratis ongkos kirim" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s ongkos kirim" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s dari%(product_num)d produk" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s dari %(collections_num)d koleksi" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)sdari %(categories_num)d kategori" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Hanya berlaku untuk pesanan lebih dari%(amount)s." -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Kelola penjualan dan voucher." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Diskon tidak berlaku untuk produk ini" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Tinggal %(quantity)dbarang yang tersisa." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Pesanan ini tidak dapat dibatalkan" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Kelola menu." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL: " @@ -716,17 +756,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategori: " -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Koleksi: " -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Halaman.: " -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -737,152 +777,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Tidak terpenuhi" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Sebagian terpenuhi" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Terpenuhi" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Dibatalkan" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Terpenuhi" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Dibatalkan" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Konfirmasi pembayaran" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Konfirmasi pengiriman" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Konfirmasi pesanan terpenuhi" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Konfirmasi pesanan" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Pesanan dibuat dari draf pesanan oleh %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Pembayaran dibatalkan oleh%(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Berhasil dikembalikan: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Berhasil direkam: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Pesanan ditandai secara manual oleh %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Pesanan dibatalkan oleh %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Kami isi lagi stok %(quantity)d item" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s catatan ditambahkan: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Pesanan #%(fulfillment)s dibatalkan oleh %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "Selesai %(quantity_fulfilled)d item" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Pesanan telah dicatat" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Pesanan sudah dibayar penuh" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s email dikirim ke pelanggan (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Detail pesanan diperbarui oleh %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Pelacakan #%(fulfillment)s telah diperbarui ke %(tracking_number)s oleh " -"%(user_name)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "%(quantity)d jenis item terjual pada pesanan ini." +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -894,23 +955,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Pembayaran tidak ditemukan" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Pembayaran tidak dapat dibatalkan." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Kelola pesanan." -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Selesai #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -919,12 +980,12 @@ msgstr "" "Kami tidak dapat menetapkan pesanan ke akun Anda karena alamat email tidak " "cocok" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Pesanan sudah ditetapkan ke akun Anda" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Kelola halaman." @@ -934,58 +995,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manual" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Otorisasi" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Biaya" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Pengembalian dana" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Rekaman" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Kosong" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Tidak dikenakan biaya" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "Dibebankan sebagian" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "Dibebankan sepenuhnya" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Dikembalikan sebagian" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Pengembalian dana sepenuhnya" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "Tidak dapat memproses transaksi. Silakan coba lagi sebentar lagi" @@ -995,7 +1051,7 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Status pembayaran" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." @@ -1003,12 +1059,12 @@ msgstr "" "Mengatur status pembebanan ke {} secara langsung tidak didukung. Silakan " "gunakan dasbor untuk pengembalian sebagian." -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Pesanan tidak dikenakan biaya." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Data pembayaran tidak valid." @@ -1018,13 +1074,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Pesanan tidak dapat diproses." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "Mata uang %(currency)s tidak didukung." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Bayar sekarang dengan Razorpay" @@ -1044,12 +1100,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Pesanan tidak dikenakan biaya." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Total pembayaran" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1095,12 +1151,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "stok habis" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nama" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "harga" @@ -1110,28 +1166,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "terakhir diperbarui" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Urutkan dengan" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Harga" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Kelola produk." -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Pencarian" @@ -1177,166 +1238,190 @@ msgid "Spanish" msgstr "Spanyol" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Estonia" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "Persia" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Perancis" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "India" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Hongaria" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Indonesia" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italia" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Jepang" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Korea" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongolia" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norwegia" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Belanda" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polandia" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Portugis Brazil" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Rumania" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Rusia" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovakia" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Serbia" -#: saleor/settings.py:89 +#: saleor/settings.py:94 +msgid "Swahili" +msgstr "" + +#: saleor/settings.py:95 msgid "Swedish" msgstr "Swedia" -#: saleor/settings.py:90 +#: saleor/settings.py:96 msgid "Thai" msgstr "Thai" -#: saleor/settings.py:91 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turki" -#: saleor/settings.py:92 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukraina" -#: saleor/settings.py:93 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnam" -#: saleor/settings.py:94 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Cina disederhanakan" -#: saleor/settings.py:95 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Cina tradisional" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Uni Eropa" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Gerbang boneka" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Harga dasar pengiriman" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr " Berat dasar pengiriman" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)dnegara" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Kelola pengiriman." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s dan ke atas" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s s/d %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s dan ke atas" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s s/d %(max_weight)s" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Kelola pengaturan." -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "Kelola terjemahan." @@ -1525,7 +1610,7 @@ msgstr "Data pribadi" #: templates/account/details.html:136 msgctxt "User profile action" msgid "Update" -msgstr "Perbaruan" +msgstr "Perbarui" #: templates/account/details.html:141 msgctxt "List of adresses in contact details" @@ -1799,7 +1884,7 @@ msgstr "Cari" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Keranjang" #: templates/base.html:202 @@ -1811,44 +1896,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Panduan Styling" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotal" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Biaya pengiriman dan pajak dihitung saat checkout" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Ke keranjang" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Checkout" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Tidak ada produk di keranjang anda" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Lihat penjualan kami" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Beranda" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotal" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Biaya pengiriman untuk: " @@ -1858,7 +1919,7 @@ msgid "Total" msgstr "Total" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Biaya pengiriman dan pajak dihitung saat checkout" @@ -1913,45 +1974,55 @@ msgid "Total" msgstr "Total" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Keranjang" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Keranjang" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produk berhasil dihapus dari keranjang" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produk" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Jumlah" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Harga" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Checkout" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Bersihkan keranjang" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Tidak ada produk di keranjang anda" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Lihat penjualan kami" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2088,6 +2159,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Tempatkan pesanan" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Biaya pengiriman dan pajak dihitung saat checkout" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Ke keranjang" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Checkout" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2204,8 +2290,8 @@ msgstr "Penjualan" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2289,8 +2375,8 @@ msgstr "Halaman" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "Kosong:" +msgid "Release:" +msgstr "" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2425,7 +2511,7 @@ msgstr "Tambah kategori baru" #: templates/dashboard/taxes/form.html:103 msgctxt "Dashboard update action" msgid "Update" -msgstr "Perbaruan" +msgstr "Perbarui" #: templates/dashboard/category/form.html:127 #: templates/dashboard/discount/sale/form.html:123 @@ -2536,7 +2622,7 @@ msgstr "Anda yakin ingin menghapus koleksi %(collection)s?" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Tambah koleksi baru" @@ -2546,47 +2632,47 @@ msgstr "Tambah koleksi baru" msgid "Collections" msgstr "Koleksi" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Hapus koleksi" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Lihat di situs" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Ketersediaan" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Batal" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" -msgstr "Perbaruan" +msgstr "Perbarui" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Buat" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Diterbitkan" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Draf" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Tidak dapat membatalkan publikasi koleksi beranda" @@ -3169,7 +3255,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Total" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3405,393 +3491,393 @@ msgid "Edit address" msgstr "Edit alamat" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Alamat pengiriman" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Alamat tagihan" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Batalkan pesanan" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Hapus draf pesanan" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Cetak" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detail" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Pembayaran" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Riwayat" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Pembayaran" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "Tidak Ada" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Sisa saldo" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Jumlah yang diotorisasi" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "Tidak Ada" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Jumlah yang direkam" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Rekaman" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Pengembalian dana" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Kosong" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Telah dibayar" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Pelanggan" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Edit detail pelanggan" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Edit" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Tidak ada alamat pengiriman" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Sama seperti alamat pengiriman" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Tidak ada alamat penagihan" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Draf pesanan #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Pesanan #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Ditempatkan di" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Item" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Harga" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Jumlah" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Total" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Ubah kuantitas" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Hapus baris" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Edit pengiriman" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Pengiriman (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "pengiriman" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Panjak (termasuk)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Pajak" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Diskon (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Diskon" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Edit voucher" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Edit voucher" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Edit diskon" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Edit diskon" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Total keseluruhan" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Penuhi pesanan" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Penuhi" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Tambahkan produk ke pesanan" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Tambahkan produk" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Buat pesanan" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Buat pesanan" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Faktur" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Lihat di situs" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Pemenuhan #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Melacak nomor: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Batalkan pemenuhan" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Batal" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Edit nomor pelacakan" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Edit pelacakan" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Tambahkan pelacakan" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Slip Kemasan" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Catatan pelanggan" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Tidak ada catatan dari pelanggan yang terkait dengan pesanan ini." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Catatan pesanan" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Tidak ada catatan yang terkait dengan pesanan ini." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Tambah catatan" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID transaksi" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Tanggal" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Status pembayaran" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Jumlah" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Tidak ada pembayaran yang dilakukan untuk pesanan ini." @@ -3985,8 +4071,8 @@ msgid "" "Connect an order with an account of an existing customer or provide a " "contact email address." msgstr "" -"Hubungkan pesanan dengan akun pelanggan yang ada atau berikan alamat email " -"kontak." +"Hubungkan pesanan dengan akun pelanggan yang ada atau berikan kontak alamat " +"email." #: templates/dashboard/order/modal/edit_customer.html:34 msgctxt "Dashboard edit draft order remove action" @@ -3996,7 +4082,7 @@ msgstr "Hapus pelanggan dari pesanan" #: templates/dashboard/order/modal/edit_customer.html:40 msgctxt "Modal edit customer primary action" msgid "Update" -msgstr "Perbaruan" +msgstr "Perbarui" #: templates/dashboard/order/modal/edit_discount.html:11 msgctxt "Modal edit discount title" @@ -4006,7 +4092,7 @@ msgstr "Edit diskon" #: templates/dashboard/order/modal/edit_discount.html:21 msgctxt "Modal edit discount primary action" msgid "Update" -msgstr "Perbaruan" +msgstr "Perbarui" #: templates/dashboard/order/modal/edit_shipping.html:11 msgctxt "Modal edit shipping title" @@ -4021,7 +4107,7 @@ msgstr "Hapus pengiriman dari pesanan" #: templates/dashboard/order/modal/edit_shipping.html:29 msgctxt "Modal edit shipping primary action" msgid "Update" -msgstr "Perbaruan" +msgstr "Perbarui" #: templates/dashboard/order/modal/edit_voucher.html:11 msgctxt "Modal edit voucher title" @@ -4036,7 +4122,7 @@ msgstr "Hapus voucher dari pesanan" #: templates/dashboard/order/modal/edit_voucher.html:29 msgctxt "Modal edit voucher primary action" msgid "Update" -msgstr "Perbaruan" +msgstr "Perbarui" #: templates/dashboard/order/modal/fulfillment_tracking.html:12 msgctxt "Modal change fulfillment tracking title" @@ -4051,7 +4137,7 @@ msgstr "Tambahkan pelacakan" #: templates/dashboard/order/modal/fulfillment_tracking.html:27 msgctxt "Modal change fulfillment tracking primary action" msgid "Update" -msgstr "Perbaruan" +msgstr "Perbarui" #: templates/dashboard/order/modal/fulfillment_tracking.html:29 msgctxt "Modal change fulfillment tracking primary action" @@ -4916,9 +5002,8 @@ msgid "" "Product Type is a template used for creating new products. It also controls " "which attributes can be used during product creation process." msgstr "" -"Jenis Produk adalah templat yang digunakan untuk membuat produk baru. Ini " -"juga mengontrol atribut mana yang dapat digunakan selama proses pembuatan " -"produk." +"Jenis Produk adalah template yang digunakan untuk produk baru. Juga " +"mengontrol atribut yang dapat digunakan saat pembuatan produk." #: templates/dashboard/product/product_type/list.html:18 msgctxt "Product type list add button text" @@ -4938,7 +5023,7 @@ msgstr "Atribut produk" #: templates/dashboard/product/product_type/list.html:51 msgctxt "Product type item list text" msgid "Variant attributes" -msgstr "Atribut variasi" +msgstr "Atribut varian" #: templates/dashboard/product/product_type/list.html:89 msgctxt "Empty product type list message" @@ -5805,7 +5890,7 @@ msgstr "dari Kutub Utara" #: templates/home.html:15 templates/home.html:30 templates/home.html:42 msgctxt "Homepage action" msgid "Shop now" -msgstr "Berbelanja sekarang" +msgstr "Belanja Sekarang" #: templates/home.html:29 msgctxt "Homepage title" @@ -5828,24 +5913,25 @@ msgstr "Produk Unggulan" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(pilihan)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "File" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6060,11 +6146,10 @@ msgid "" "before attempting a new payment. Please be warned that if you try again and " "the previous transaction succeeds you might end up being charged twice." msgstr "" -"Kecuali Anda benar-benar yakin bahwa prosesnya tidak akan selesai (misalnya " -"Anda telah menutup jendela browser sebelum membayar), Anda harus menunggu " -"sebelum mencoba pembayaran baru. Harap diingat bahwa jika Anda mencoba lagi " -"dan transaksi sebelumnya berhasil, Anda mungkin akan dikenakan biaya dua " -"kali." +"Kecuali Anda benar-benar yakin bahwa prosesnya tidak selesai (misalnya Anda " +"telah menutup jendela broser sebelum membayar), Anda harus menunggu sebelum " +"mengulang pembayaran. Harap diingat bahwa jika Anda ulang dan transaksi " +"sebelumnya berhasil, Anda mungkin akan dikenakan biaya dua kali." #: templates/order/payment.html:67 msgctxt "Payment pending action" @@ -6304,7 +6389,7 @@ msgid "" msgstr "" "\n" "Anda menerima email ini karena Anda atau orang lain telah meminta kata sandi untuk akun pengguna Anda di %(domain)s.\n" -"Itu dapat diabaikan dengan aman jika Anda tidak meminta pengaturan ulang kata sandi. Klik tautan di bawah untuk mengatur ulang kata sandi Anda.\n" +"Hal ini dapat diabaikan dengan aman jika Anda tidak atur ulang kata sandi. Klik tautan di bawah untuk ubah kata sandi Anda.\n" #: templates/templated_email/dashboard/customer/set_password.email:2 #, python-format @@ -6360,17 +6445,15 @@ msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" -msgstr "Pengiriman dari pesanan %(order)s sedang dalam perjalanan" +msgid "Your order %(order)s has been fulfilled" +msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" -"\n" -"Terima kasih atas pesanan anda Di bawah ini adalah daftar produk yang dikirim.\n" #: templates/templated_email/order/confirm_fulfillment.email:15 #: templates/templated_email/source/confirm_fulfillment.mjml:20 @@ -6437,6 +6520,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Alamat tagihan" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Tidak ada alamat penagihan" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6444,7 +6533,7 @@ msgid "Shipping address" msgstr "Alamat pengiriman" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Tidak perlu biaya pengiriman" @@ -6532,10 +6621,14 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." msgstr "" -"Terima kasih atas pesanan anda Di bawah ini adalah daftar produk yang " -"dikirim." #: templates/templated_email/source/confirm_order.mjml:17 #, python-format diff --git a/locale/id/LC_MESSAGES/djangojs.mo b/locale/id/LC_MESSAGES/djangojs.mo index e1b28dcbfb8..5ff3881739c 100644 Binary files a/locale/id/LC_MESSAGES/djangojs.mo and b/locale/id/LC_MESSAGES/djangojs.mo differ diff --git a/locale/is/LC_MESSAGES/django.mo b/locale/is/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..1e13c42465e Binary files /dev/null and b/locale/is/LC_MESSAGES/django.mo differ diff --git a/locale/is/LC_MESSAGES/django.po b/locale/is/LC_MESSAGES/django.po new file mode 100644 index 00000000000..cfcc279d2b1 --- /dev/null +++ b/locale/is/LC_MESSAGES/django.po @@ -0,0 +1,6542 @@ +# Saleor +# Copyright (C) 2017 Mirumee Software +# This file is distributed under the same license as the Saleor package. +# Mirumee Software , 2017. +# +# Translators: +# Samúel Jón Gunnarsson , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" +"PO-Revision-Date: 2017-02-08 11:00+0000\n" +"Last-Translator: Samúel Jón Gunnarsson , 2019\n" +"Language-Team: Icelandic (https://www.transifex.com/mirumee/teams/34782/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "Viðskiptavin var eytt" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "Nafn viðskiptavinar var breytt" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "Netfang viðskiptavinar var breytt" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 +msgctxt "Form field" +msgid "Email" +msgstr "Netfang" + +#: saleor/account/forms.py:83 +msgctxt "Password" +msgid "Password" +msgstr "Lykilorð" + +#: saleor/account/forms.py:86 +msgctxt "Email" +msgid "Email" +msgstr "Netfang" + +#: saleor/account/forms.py:89 +msgctxt "Registration error" +msgid "This email has already been registered." +msgstr "Þetta netfang er núþegar skráð." + +#: saleor/account/forms.py:147 +msgctxt "Customer form: Given name field" +msgid "Given name" +msgstr "Fornafn" + +#: saleor/account/forms.py:150 +msgctxt "Customer form: Family name field" +msgid "Family name" +msgstr "Eftirnafn" + +#: saleor/account/i18n.py:19 +msgctxt "Address field" +msgid "Area" +msgstr "Svæði" + +#: saleor/account/i18n.py:20 +msgctxt "Address field" +msgid "County" +msgstr "Sýsla" + +#: saleor/account/i18n.py:21 +msgctxt "Address field" +msgid "Department" +msgstr "Deild" + +#: saleor/account/i18n.py:22 +msgctxt "Address field" +msgid "District" +msgstr "" + +#: saleor/account/i18n.py:23 +msgctxt "Address field" +msgid "Do/si" +msgstr "" + +#: saleor/account/i18n.py:24 +msgctxt "Address field" +msgid "Eircode" +msgstr "" + +#: saleor/account/i18n.py:25 +msgctxt "Address field" +msgid "Emirate" +msgstr "" + +#: saleor/account/i18n.py:26 +msgctxt "Address field" +msgid "Island" +msgstr "" + +#: saleor/account/i18n.py:27 +msgctxt "Address field" +msgid "Neighborhood" +msgstr "" + +#: saleor/account/i18n.py:28 +msgctxt "Address field" +msgid "Oblast" +msgstr "" + +#: saleor/account/i18n.py:29 +msgctxt "Address field" +msgid "Parish" +msgstr "" + +#: saleor/account/i18n.py:30 +msgctxt "Address field" +msgid "PIN" +msgstr "PIN" + +#: saleor/account/i18n.py:31 +msgctxt "Address field" +msgid "Postal code" +msgstr "Póstnúmer" + +#: saleor/account/i18n.py:32 +msgctxt "Address field" +msgid "Prefecture" +msgstr "" + +#: saleor/account/i18n.py:33 +msgctxt "Address field" +msgid "Province" +msgstr "" + +#: saleor/account/i18n.py:34 +msgctxt "Address field" +msgid "State" +msgstr "" + +#: saleor/account/i18n.py:35 +msgctxt "Address field" +msgid "Suburb" +msgstr "Úthverfi" + +#: saleor/account/i18n.py:36 +msgctxt "Address field" +msgid "Townland" +msgstr "" + +#: saleor/account/i18n.py:37 +msgctxt "Address field" +msgid "Village/township" +msgstr "" + +#: saleor/account/i18n.py:38 +msgctxt "Address field" +msgid "ZIP code" +msgstr "Póstnúmer" + +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 +msgctxt "Country" +msgid "Country" +msgstr "Land" + +#: saleor/account/i18n.py:95 +msgctxt "Personal name" +msgid "Given name" +msgstr "Fornafn" + +#: saleor/account/i18n.py:96 +msgctxt "Personal name" +msgid "Family name" +msgstr "Eftirnafn" + +#: saleor/account/i18n.py:98 +msgctxt "Company or organization" +msgid "Company or organization" +msgstr "Fyrirtæki eða stofnun" + +#: saleor/account/i18n.py:100 +msgctxt "Address" +msgid "Address" +msgstr "Heimilisfang" + +#: saleor/account/i18n.py:102 +msgctxt "City" +msgid "City" +msgstr "Borg" + +#: saleor/account/i18n.py:103 +msgctxt "City area" +msgid "District" +msgstr "" + +#: saleor/account/i18n.py:104 +msgctxt "Postal code" +msgid "Postal code" +msgstr "Póstnúmer" + +#: saleor/account/i18n.py:106 +msgctxt "Country area" +msgid "State or province" +msgstr "" + +#: saleor/account/i18n.py:107 +msgctxt "Phone number" +msgid "Phone number" +msgstr "Símanúmer" + +#: saleor/account/i18n.py:111 +msgctxt "Address" +msgid "Street address, P.O. box, company name" +msgstr "" + +#: saleor/account/i18n.py:114 +msgctxt "Address" +msgid "Apartment, suite, unit, building, floor, etc" +msgstr "" + +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "Innslegið símanúmer var ekki gilt." + +#: saleor/account/i18n.py:195 +msgctxt "Address form" +msgid "This value is invalid for selected country" +msgstr "" + +#: saleor/account/models.py:162 +msgctxt "Permission description" +msgid "Manage customers." +msgstr "" + +#: saleor/account/models.py:164 +msgctxt "Permission description" +msgid "Manage staff." +msgstr "" + +#: saleor/account/models.py:167 +msgctxt "Permission description" +msgid "Impersonate customers." +msgstr "" + +#: saleor/account/templatetags/i18n_address_tags.py:12 +#, python-format +msgctxt "Address data" +msgid "%(first_name)s %(last_name)s" +msgstr "" + +#: saleor/account/templatetags/i18n_address_tags.py:16 +#, python-format +msgctxt "Address data" +msgid "" +"%(street_address_1)s\n" +"%(street_address_2)s" +msgstr "" + +#: saleor/account/views.py:36 +msgid "You have been successfully logged out." +msgstr "" + +#: saleor/account/views.py:49 +msgid "User has been created" +msgstr "Notandi var stofnaður" + +#: saleor/account/views.py:111 +msgctxt "Storefront message" +msgid "Password successfully changed." +msgstr "Lykilorði var breytt." + +#: saleor/account/views.py:121 +msgctxt "Storefront message" +msgid "Account successfully updated." +msgstr "" + +#: saleor/account/views.py:134 +msgctxt "Storefront message" +msgid "Address successfully updated." +msgstr "" + +#: saleor/account/views.py:148 +msgctxt "Storefront message" +msgid "Address successfully removed" +msgstr "" + +#: saleor/account/views.py:165 +msgctxt "Storefront message, when user requested his account removed" +msgid "Please check your inbox for a confirmation e-mail." +msgstr "" + +#: saleor/account/views.py:182 +msgctxt "Account deleted" +msgid "" +"Your account was deleted successfully. In case of any trouble or questions " +"feel free to contact us." +msgstr "" + +#: saleor/checkout/__init__.py:13 +msgctxt "Type of address used to fulfill order" +msgid "Billing" +msgstr "" + +#: saleor/checkout/__init__.py:14 +msgctxt "Type of address used to fulfill order" +msgid "Shipping" +msgstr "" + +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" +msgid "Quantity" +msgstr "Magn" + +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" +msgid "Sorry. This product is currently not available." +msgstr "" + +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" +msgid "Sorry. This product is currently out of stock." +msgstr "" + +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" +msgid "Oops. We could not find that product." +msgstr "" + +#: saleor/checkout/forms.py:63 +#, python-format +msgctxt "Add to checkout form error" +msgid "Only %d remaining in stock." +msgid_plural "Only %d remaining in stock." +msgstr[0] "" +msgstr[1] "" + +#: saleor/checkout/forms.py:187 +msgctxt "Country form field label" +msgid "Country" +msgstr "Land" + +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 +msgctxt "Address form field label" +msgid "Email" +msgstr "Netfang" + +#: saleor/checkout/forms.py:243 +msgctxt "Shipping addresses form choice" +msgid "Enter a new address" +msgstr "Sláðu inn nýtt heimilisfang" + +#: saleor/checkout/forms.py:248 +msgctxt "Shipping addresses form field label" +msgid "Address" +msgstr "Heimilisfang" + +#: saleor/checkout/forms.py:269 +msgctxt "Billing addresses form choice" +msgid "Enter a new address" +msgstr "Sláðu inn nýtt heimilisfang" + +#: saleor/checkout/forms.py:273 +msgctxt "Billing addresses form choice" +msgid "Same as shipping" +msgstr "Sama og afhendingarstaður" + +#: saleor/checkout/forms.py:278 +msgctxt "Billing addresses form field label" +msgid "Address" +msgstr "Heimilisfang" + +#: saleor/checkout/forms.py:310 +msgctxt "Shipping method form field label" +msgid "Shipping method" +msgstr "Sendingaraðferð" + +#: saleor/checkout/forms.py:357 +msgctxt "Voucher form error" +msgid "Discount code incorrect or expired" +msgstr "" + +#: saleor/checkout/forms.py:370 +msgctxt "Checkout discount form label for voucher field" +msgid "Gift card or discount code" +msgstr "Gjafakort eða afsláttarkóði" + +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" +msgid "" +"Sorry. We don't have that many items in stock. Quantity was set to maximum " +"available for now." +msgstr "" + +#: saleor/checkout/utils.py:676 +msgctxt "Voucher not applicable" +msgid "Your order does not require shipping." +msgstr "" + +#: saleor/checkout/utils.py:682 +msgctxt "Voucher not applicable" +msgid "Please select a shipping method first." +msgstr "" + +#: saleor/checkout/utils.py:690 +msgctxt "Voucher not applicable" +msgid "This offer is not valid in your country." +msgstr "" + +#: saleor/checkout/utils.py:716 +msgctxt "Voucher not applicable" +msgid "This offer is only valid for selected items." +msgstr "" + +#: saleor/checkout/utils.py:861 +msgctxt "Voucher not applicable" +msgid "Voucher expired in meantime. Order placement aborted." +msgstr "" + +#: saleor/checkout/views/discount.py:69 +msgctxt "Checkout warning" +msgid "This voucher has expired. Please review your checkout." +msgstr "" + +#: saleor/checkout/views/summary.py:40 +msgctxt "Checkout warning" +msgid "Please review your checkout." +msgstr "" + +#: saleor/core/__init__.py:60 +msgctxt "VAT rate type" +msgid "accommodation" +msgstr "" + +#: saleor/core/__init__.py:63 +msgctxt "VAT rate type" +msgid "admission to cultural events" +msgstr "" + +#: saleor/core/__init__.py:67 +msgctxt "VAT rate type" +msgid "admission to entertainment events" +msgstr "" + +#: saleor/core/__init__.py:71 +msgctxt "VAT rate type" +msgid "admission to sporting events" +msgstr "" + +#: saleor/core/__init__.py:73 +msgctxt "VAT rate type" +msgid "advertising" +msgstr "" + +#: saleor/core/__init__.py:76 +msgctxt "VAT rate type" +msgid "agricultural supplies" +msgstr "" + +#: saleor/core/__init__.py:78 +msgctxt "VAT rate type" +msgid "baby foodstuffs" +msgstr "" + +#: saleor/core/__init__.py:79 +msgctxt "VAT rate type" +msgid "bikes" +msgstr "reiðhjól" + +#: saleor/core/__init__.py:80 +msgctxt "VAT rate type" +msgid "books" +msgstr "bækur" + +#: saleor/core/__init__.py:81 +msgctxt "VAT rate type" +msgid "childrens clothing" +msgstr "Barnaföt" + +#: saleor/core/__init__.py:82 +msgctxt "VAT rate type" +msgid "domestic fuel" +msgstr "" + +#: saleor/core/__init__.py:83 +msgctxt "VAT rate type" +msgid "domestic services" +msgstr "" + +#: saleor/core/__init__.py:84 +msgctxt "VAT rate type" +msgid "e-books" +msgstr "rafbækur" + +#: saleor/core/__init__.py:85 +msgctxt "VAT rate type" +msgid "foodstuffs" +msgstr "" + +#: saleor/core/__init__.py:86 +msgctxt "VAT rate type" +msgid "hotels" +msgstr "hótel" + +#: saleor/core/__init__.py:87 +msgctxt "VAT rate type" +msgid "medical" +msgstr "" + +#: saleor/core/__init__.py:88 +msgctxt "VAT rate type" +msgid "newspapers" +msgstr "fréttablöð" + +#: saleor/core/__init__.py:89 +msgctxt "VAT rate type" +msgid "passenger transport" +msgstr "" + +#: saleor/core/__init__.py:90 +msgctxt "VAT rate type" +msgid "pharmaceuticals" +msgstr "" + +#: saleor/core/__init__.py:91 +msgctxt "VAT rate type" +msgid "property renovations" +msgstr "" + +#: saleor/core/__init__.py:92 +msgctxt "VAT rate type" +msgid "restaurants" +msgstr "veitingastaðir" + +#: saleor/core/__init__.py:93 +msgctxt "VAT rate type" +msgid "social housing" +msgstr "" + +#: saleor/core/__init__.py:94 +msgctxt "VAT rate type" +msgid "standard" +msgstr "" + +#: saleor/core/__init__.py:95 +msgctxt "VAT rate type" +msgid "water" +msgstr "Vatn" + +#: saleor/core/__init__.py:96 +msgctxt "VAT rate type" +msgid "wine" +msgstr "Áfengi" + +#: saleor/core/filters.py:27 +#, python-format +msgctxt "Number of matching records in the dashboard list" +msgid "Found %(counter)d matching record" +msgid_plural "Found %(counter)d matching records" +msgstr[0] "" +msgstr[1] "" + +#: saleor/core/i18n.py:5 +msgctxt "Country choice" +msgid "Any Country" +msgstr "" + +#: saleor/core/views.py:49 +msgctxt "Impersonation message" +msgid "You are now logged as {}" +msgstr "Þú ert innskráð/ur sem {}" + +#: saleor/core/weight.py:32 +msgctxt "Kilogram weight unit symbol" +msgid "kg" +msgstr "kg" + +#: saleor/core/weight.py:33 +msgctxt "Pound weight unit symbol" +msgid "lb" +msgstr "lb" + +#: saleor/core/weight.py:34 +msgctxt "Ounce weight unit symbol" +msgid "oz" +msgstr "únsa" + +#: saleor/core/weight.py:35 +msgctxt "Gram weight unit symbol" +msgid "g" +msgstr "g" + +#: saleor/discount/__init__.py:11 +msgctxt "Discount type" +msgid "%" +msgstr "%" + +#: saleor/discount/__init__.py:23 +msgctxt "Voucher: discount for" +msgid "All products" +msgstr "Allar vörur" + +#: saleor/discount/__init__.py:24 +msgctxt "Voucher: discount for" +msgid "Specific products" +msgstr "" + +#: saleor/discount/__init__.py:27 +msgctxt "Voucher: discount for" +msgid "Specific collections of products" +msgstr "" + +#: saleor/discount/__init__.py:31 +msgctxt "Voucher: discount for" +msgid "Specific categories of products" +msgstr "" + +#: saleor/discount/__init__.py:33 +msgctxt "Voucher: discount for" +msgid "Shipping" +msgstr "" + +#: saleor/discount/models.py:92 +msgctxt "Voucher type" +msgid "Free shipping" +msgstr "Frí sending" + +#: saleor/discount/models.py:93 +#, python-format +msgctxt "Voucher type" +msgid "%(discount)s off shipping" +msgstr "" + +#: saleor/discount/models.py:100 +#, python-format +msgctxt "Voucher type" +msgid "%(discount)s off %(product_num)d products" +msgstr "" + +#: saleor/discount/models.py:106 +#, python-format +msgctxt "Voucher type" +msgid "%(discount)s off %(collections_num)d collections" +msgstr "" + +#: saleor/discount/models.py:112 +#, python-format +msgctxt "Voucher type" +msgid "%(discount)s off %(categories_num)d categories" +msgstr "" + +#: saleor/discount/models.py:114 +#, python-format +msgctxt "Voucher type" +msgid "%(discount)s off" +msgstr "" + +#: saleor/discount/models.py:144 +#, python-format +msgctxt "Voucher not applicable" +msgid "This offer is only valid for orders over %(amount)s." +msgstr "" + +#: saleor/discount/models.py:199 +msgctxt "Permission description" +msgid "Manage sales and vouchers." +msgstr "" + +#: saleor/discount/utils.py:48 +msgctxt "Voucher not applicable" +msgid "Discount not applicable for this product" +msgstr "" + +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 +#, python-format +msgctxt "Fulfill order line mutation error" +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" + +#: saleor/graphql/order/mutations/fulfillments.py:184 +msgctxt "Cancel fulfillment mutation error" +msgid "This fulfillment can't be canceled" +msgstr "" + +#: saleor/menu/models.py:22 +msgctxt "Permission description" +msgid "Manage navigation." +msgstr "" + +#: saleor/menu/models.py:70 +msgctxt "Link object type description" +msgid "URL: " +msgstr "" + +#: saleor/menu/models.py:74 +msgctxt "Link object type description" +msgid "Category: " +msgstr "Flokkur:" + +#: saleor/menu/models.py:76 +msgctxt "Link object type description" +msgid "Collection: " +msgstr "" + +#: saleor/menu/models.py:78 +msgctxt "Link object type description" +msgid "Page: " +msgstr "Síða:" + +#: saleor/order/__init__.py:17 +msgctxt "" +"Status for a fully editable, not confirmed order created by staff users" +msgid "Draft" +msgstr "Drög" + +#: saleor/order/__init__.py:23 +msgctxt "Status for an order with no items marked as fulfilled" +msgid "Unfulfilled" +msgstr "" + +#: saleor/order/__init__.py:30 +msgctxt "Status for an order with some items marked as fulfilled" +msgid "Partially fulfilled" +msgstr "" + +#: saleor/order/__init__.py:36 +msgctxt "Status for an order with all items marked as fulfilled" +msgid "Fulfilled" +msgstr "" + +#: saleor/order/__init__.py:41 +msgctxt "Status for a permanently canceled order" +msgid "Canceled" +msgstr "" + +#: saleor/order/__init__.py:55 +msgctxt "Status for a group of products in an order marked as fulfilled" +msgid "Fulfilled" +msgstr "" + +#: saleor/order/__init__.py:63 +msgctxt "" +"Status for a fulfilled group of products in an order marked as canceled" +msgid "Canceled" +msgstr "" + +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" + +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" + +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" + +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" + +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" + +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" + +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" + +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" + +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" + +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" + +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" + +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" + +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" + +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" + +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" + +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" + +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" + +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" + +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" +msgstr "" + +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" + +#: saleor/order/forms.py:16 +msgctxt "Payments form label" +msgid "Payment Method" +msgstr "" + +#: saleor/order/forms.py:36 +msgctxt "Payment delete form error" +msgid "Payment does not exist" +msgstr "" + +#: saleor/order/forms.py:42 +msgctxt "Payment delete form error" +msgid "Payment cannot be cancelled." +msgstr "" + +#: saleor/order/models.py:149 +msgctxt "Permission description" +msgid "Manage orders." +msgstr "" + +#: saleor/order/models.py:397 +#, python-format +msgctxt "Fulfillment str" +msgid "Fulfillment #%s" +msgstr "" + +#: saleor/order/views.py:204 +msgctxt "Connect order with user warning message" +msgid "" +"We couldn't assign the order to your account as the email addresses don't " +"match" +msgstr "" + +#: saleor/order/views.py:211 +msgctxt "storefront message" +msgid "The order is now assigned to your account" +msgstr "" + +#: saleor/page/models.py:31 +msgctxt "Permission description" +msgid "Manage pages." +msgstr "" + +#: saleor/payment/__init__.py:24 +msgctxt "Custom payment choice type" +msgid "Manual" +msgstr "" + +#: saleor/payment/__init__.py:70 +msgctxt "transaction kind" +msgid "Authorization" +msgstr "" + +#: saleor/payment/__init__.py:71 +msgctxt "transaction kind" +msgid "Refund" +msgstr "" + +#: saleor/payment/__init__.py:72 +msgctxt "transaction kind" +msgid "Capture" +msgstr "" + +#: saleor/payment/__init__.py:73 +msgctxt "transaction kind" +msgid "Void" +msgstr "" + +#: saleor/payment/__init__.py:97 +msgctxt "payment status" +msgid "Not charged" +msgstr "" + +#: saleor/payment/__init__.py:98 +msgctxt "payment status" +msgid "Partially charged" +msgstr "" + +#: saleor/payment/__init__.py:99 +msgctxt "payment status" +msgid "Fully charged" +msgstr "" + +#: saleor/payment/__init__.py:100 +msgctxt "payment status" +msgid "Partially refunded" +msgstr "" + +#: saleor/payment/__init__.py:101 +msgctxt "payment status" +msgid "Fully refunded" +msgstr "" + +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 +msgctxt "payment error" +msgid "Unable to process transaction. Please try again in a moment" +msgstr "" + +#: saleor/payment/gateways/dummy/forms.py:9 +msgctxt "Payment status form field" +msgid "Payment status" +msgstr "Greiðslustaða" + +#: saleor/payment/gateways/dummy/forms.py:27 +msgid "" +"Setting charge status to {} directly is not supported. Please use the " +"dashboard to refund partially." +msgstr "" + +#: saleor/payment/gateways/razorpay/errors.py:4 +msgctxt "Razorpay payment error" +msgid "Order was not charged." +msgstr "" + +#: saleor/payment/gateways/razorpay/errors.py:6 +msgctxt "Razorpay payment error" +msgid "The payment data was invalid." +msgstr "" + +#: saleor/payment/gateways/razorpay/errors.py:9 +msgctxt "Razorpay payment error" +msgid "The order couldn't be proceeded." +msgstr "" + +#: saleor/payment/gateways/razorpay/errors.py:12 +#, python-format +msgctxt "Razorpay payment error" +msgid "The %(currency)s currency is not supported." +msgstr "" + +#: saleor/payment/gateways/razorpay/forms.py:13 +msgctxt "Razorpay payment gateway primary button" +msgid "Pay now with Razorpay" +msgstr "Greiða núna með Razorpay" + +#: saleor/payment/gateways/razorpay/forms.py:16 +msgctxt "Razorpay payment gateway secondary title" +msgid "Total payment" +msgstr "" + +#: saleor/payment/gateways/stripe/errors.py:4 +msgctxt "Stripe payment error" +msgid "Order was not authorized." +msgstr "" + +#: saleor/payment/gateways/stripe/errors.py:6 +msgctxt "Stripe payment error" +msgid "Order was not charged." +msgstr "" + +#: saleor/payment/gateways/stripe/forms.py:14 +msgctxt "Stripe payment gateway description" +msgid "Total payment" +msgstr "" + +#: saleor/payment/utils.py:259 +msgctxt "Mark order as paid validation error" +msgid "Orders with payments can not be manually marked as paid." +msgstr "" + +#: saleor/product/__init__.py:15 +msgctxt "Product status" +msgid "not published" +msgstr "" + +#: saleor/product/__init__.py:17 +msgctxt "Product status" +msgid "variants missing" +msgstr "" + +#: saleor/product/__init__.py:19 +msgctxt "Product status" +msgid "out of stock" +msgstr "ekki á lager" + +#: saleor/product/__init__.py:21 +msgctxt "Product status" +msgid "stock running low" +msgstr "" + +#: saleor/product/__init__.py:23 +msgctxt "Product status" +msgid "not yet available" +msgstr "" + +#: saleor/product/__init__.py:25 +msgctxt "Product status" +msgid "ready for purchase" +msgstr "" + +#: saleor/product/__init__.py:37 +msgctxt "Variant status" +msgid "available" +msgstr "" + +#: saleor/product/__init__.py:39 +msgctxt "Variant status" +msgid "out of stock" +msgstr "ekki á lager" + +#: saleor/product/filters.py:13 +msgctxt "Product list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/product/filters.py:14 +msgctxt "Product list sorting option" +msgid "price" +msgstr "verð" + +#: saleor/product/filters.py:15 +msgctxt "Product list sorting option" +msgid "last updated" +msgstr "síðast uppfært" + +#: saleor/product/filters.py:22 +msgctxt "Product list sorting form" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/product/filters.py:26 +msgctxt "Currency amount" +msgid "Price" +msgstr "Verð" + +#: saleor/product/forms.py:22 +#, python-format +msgctxt "Variant choice field label" +msgid "%(variant_label)s - %(price)s" +msgstr "" + +#: saleor/product/models.py:153 +msgctxt "Permission description" +msgid "Manage products." +msgstr "" + +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 +msgctxt "Search form label" +msgid "Query" +msgstr "" + +#: saleor/settings.py:61 +msgid "Arabic" +msgstr "" + +#: saleor/settings.py:62 +msgid "Azerbaijani" +msgstr "" + +#: saleor/settings.py:63 +msgid "Bulgarian" +msgstr "" + +#: saleor/settings.py:64 +msgid "Bengali" +msgstr "" + +#: saleor/settings.py:65 +msgid "Catalan" +msgstr "" + +#: saleor/settings.py:66 +msgid "Czech" +msgstr "" + +#: saleor/settings.py:67 +msgid "Danish" +msgstr "" + +#: saleor/settings.py:68 +msgid "German" +msgstr "" + +#: saleor/settings.py:69 +msgid "English" +msgstr "" + +#: saleor/settings.py:70 +msgid "Spanish" +msgstr "" + +#: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 +msgid "Persian" +msgstr "" + +#: saleor/settings.py:74 +msgid "French" +msgstr "" + +#: saleor/settings.py:75 +msgid "Hindi" +msgstr "" + +#: saleor/settings.py:76 +msgid "Hungarian" +msgstr "" + +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 +msgid "Indonesian" +msgstr "" + +#: saleor/settings.py:79 +msgid "Italian" +msgstr "" + +#: saleor/settings.py:80 +msgid "Japanese" +msgstr "" + +#: saleor/settings.py:81 +msgid "Korean" +msgstr "" + +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 +msgid "Mongolian" +msgstr "" + +#: saleor/settings.py:84 +msgid "Norwegian" +msgstr "" + +#: saleor/settings.py:85 +msgid "Dutch" +msgstr "" + +#: saleor/settings.py:86 +msgid "Polish" +msgstr "" + +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 +msgid "Brazilian Portuguese" +msgstr "" + +#: saleor/settings.py:89 +msgid "Romanian" +msgstr "" + +#: saleor/settings.py:90 +msgid "Russian" +msgstr "" + +#: saleor/settings.py:91 +msgid "Slovak" +msgstr "" + +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 +msgid "Serbian" +msgstr "" + +#: saleor/settings.py:94 +msgid "Swahili" +msgstr "" + +#: saleor/settings.py:95 +msgid "Swedish" +msgstr "" + +#: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 +msgid "Traditional Chinese" +msgstr "" + +#: saleor/settings.py:342 +msgctxt "Name of political and economical union of european countries" +msgid "European Union" +msgstr "" + +#: saleor/settings.py:593 +msgctxt "Payment method name" +msgid "Dummy gateway" +msgstr "" + +#: saleor/shipping/__init__.py:9 +msgctxt "Type of shipping" +msgid "Price based shipping" +msgstr "" + +#: saleor/shipping/__init__.py:10 +msgctxt "Type of shipping" +msgid "Weight based shipping" +msgstr "" + +#: saleor/shipping/models.py:42 +#, python-format +msgctxt "Number of countries shipping zone apply to" +msgid "%(num_of_countries)d countries" +msgstr "" + +#: saleor/shipping/models.py:59 +msgctxt "Permission description" +msgid "Manage shipping." +msgstr "" + +#: saleor/shipping/utils.py:51 +#, python-format +msgctxt "Applies to orders more expensive than the min value" +msgid "%(min_price)s and up" +msgstr "" + +#: saleor/shipping/utils.py:55 +#, python-format +msgctxt "Applies to order valued within this price range" +msgid "%(min_price)s to %(max_price)s" +msgstr "" + +#: saleor/shipping/utils.py:69 +#, python-format +msgctxt "Applies to orders heavier than the threshold" +msgid "%(min_weight)s and up" +msgstr "" + +#: saleor/shipping/utils.py:73 +#, python-format +msgctxt "Applies to orders of total weight within this range" +msgid "%(min_weight)s to %(max_weight)s" +msgstr "" + +#: saleor/site/models.py:46 +msgctxt "Permission description" +msgid "Manage settings." +msgstr "" + +#: saleor/site/models.py:50 +msgctxt "Permission description" +msgid "Manage translations." +msgstr "" + +#: templates/404.html:6 +msgctxt "Eror page not found" +msgid "Page not found" +msgstr "" + +#: templates/_language_picker_modal.html:8 +msgctxt "Change language modal title" +msgid "Select language" +msgstr "Veldu tungumál" + +#: templates/_language_picker_modal.html:24 +msgctxt "Close modal action button" +msgid "Close" +msgstr "Loka" + +#: templates/_language_picker_modal.html:25 +msgctxt "Change language action button" +msgid "Change" +msgstr "Breyta" + +#: templates/account/account_delete_prompt.html:8 +msgctxt "Account deletetion confirmation page title" +msgid "Are you sure?" +msgstr "Ertu viss?" + +#: templates/account/account_delete_prompt.html:16 +msgctxt "Message displayed to the user requesting for his account deletetion" +msgid "Sorry to see you go!" +msgstr "Leitt að sjá þig fara!" + +#: templates/account/account_delete_prompt.html:22 +msgctxt "Message displayed to the user requesting for his account deletetion" +msgid "Are you sure you want to delete your account?" +msgstr "" + +#: templates/account/account_delete_prompt.html:27 +msgctxt "Confirm account deletion button" +msgid "Delete account" +msgstr "Eyða aðgangi" + +#: templates/account/address_delete.html:6 +msgctxt "Remove address form action" +msgid "Remove Address" +msgstr "" + +#: templates/account/address_delete.html:9 +msgctxt "Remove address form action" +msgid "Cancel" +msgstr "Hætta við" + +#: templates/account/address_edit.html:7 +msgctxt "Edit address page title" +msgid "Edit address" +msgstr "" + +#: templates/account/address_edit.html:9 +msgctxt "New address page title" +msgid "New address" +msgstr "" + +#: templates/account/address_edit.html:16 templates/account/details.html:16 +#: templates/account/password_change.html:7 templates/checkout/index.html:11 +#: templates/order/details.html:18 templates/order/payment.html:18 +#: templates/order/payment/details.html:12 templates/page/details.html:27 +#: templates/product/details.html:45 +msgctxt "Main navigation item" +msgid "Home" +msgstr "Heim" + +#: templates/account/address_edit.html:21 +msgctxt "Edit/new address breadcrumb" +msgid "Your profile" +msgstr "" + +#: templates/account/address_edit.html:27 +msgctxt "Edit address breadcrumb" +msgid "Edit address" +msgstr "" + +#: templates/account/address_edit.html:33 +msgctxt "New address breadcrumb" +msgid "New address" +msgstr "" + +#: templates/account/address_edit.html:47 +msgctxt "Edit address title" +msgid "Edit address" +msgstr "" + +#: templates/account/address_edit.html:49 +msgctxt "New address title" +msgid "New address" +msgstr "" + +#: templates/account/address_edit.html:57 +msgctxt "Edit/new address primary action" +msgid "Save changes" +msgstr "" + +#: templates/account/details.html:10 +msgctxt "User profile page title" +msgid "Your profile" +msgstr "" + +#: templates/account/details.html:19 templates/account/password_change.html:8 +#: templates/base.html:84 templates/base.html:226 +#: templates/order/details.html:23 templates/order/payment.html:23 +#: templates/order/payment/details.html:17 +msgctxt "Main navigation item" +msgid "Your account" +msgstr "" + +#: templates/account/details.html:26 +msgid "My account" +msgstr "" + +#: templates/account/details.html:30 +msgctxt "User profile tab" +msgid "Recent Orders" +msgstr "" + +#: templates/account/details.html:36 +msgctxt "User profile tab" +msgid "Change password" +msgstr "Breyta lykilorði" + +#: templates/account/details.html:42 +msgctxt "User profile tab" +msgid "Contact details" +msgstr "" + +#: templates/account/details.html:47 +msgctxt "User profile tab" +msgid "Settings" +msgstr "Stillingar" + +#: templates/account/details.html:59 +msgctxt "Recent orders column title" +msgid "Order" +msgstr "Pöntun" + +#: templates/account/details.html:62 +msgctxt "Recent orders column title" +msgid "Date" +msgstr "Dagsetning" + +#: templates/account/details.html:65 +msgctxt "Recent orders column title" +msgid "Summary" +msgstr "Samantekt" + +#: templates/account/details.html:68 +msgctxt "Recent orders column title" +msgid "Payment status" +msgstr "Greiðslustaða" + +#: templates/account/details.html:71 +msgctxt "Recent orders column title" +msgid "Order status" +msgstr "Staða pöntunar" + +#: templates/account/details.html:96 +msgctxt "Recent orders link text" +msgid "Details" +msgstr "" + +#: templates/account/details.html:111 +msgctxt "No recent orders text" +msgid "There are not any completed orders yet." +msgstr "" + +#: templates/account/details.html:122 +msgctxt "User profile action" +msgid "Change password" +msgstr "Breyta lykilorði" + +#: templates/account/details.html:129 +msgctxt "User profile settings" +msgid "Personal Data" +msgstr "Persónuleg gögn" + +#: templates/account/details.html:136 +msgctxt "User profile action" +msgid "Update" +msgstr "Uppfæra" + +#: templates/account/details.html:141 +msgctxt "List of adresses in contact details" +msgid "Addresses" +msgstr "Heimilisföng" + +#: templates/account/details.html:152 +msgctxt "User address action" +msgid "Edit" +msgstr "Breyta" + +#: templates/account/details.html:168 +msgctxt "No addresses text" +msgid "You will see new addresses here after first successful checkout." +msgstr "" + +#: templates/account/details.html:179 +msgctxt "Message informing about the process of account removal" +msgid "" +"\n" +" If you'd like to remove your account, please click on the button below and a confirmation email will be sent to you.\n" +" " +msgstr "" + +#: templates/account/details.html:184 +msgctxt "Remove account form action" +msgid "Remove Account" +msgstr "" + +#: templates/account/login.html:5 +msgctxt "Login page title" +msgid "Log in" +msgstr "Innskrá" + +#: templates/account/login.html:16 +msgctxt "Login form secondary title" +msgid "Don't have an account yet?" +msgstr "" + +#: templates/account/login.html:21 +msgctxt "Login form secondary action" +msgid "Register" +msgstr "Nýskrá" + +#: templates/account/login.html:26 +msgctxt "Login form title" +msgid "Log in" +msgstr "Innskrá" + +#: templates/account/partials/already_logged_in.html:5 +#, python-format +msgctxt "Already logged in warning message" +msgid "You are already logged in as %(user)s." +msgstr "" + +#: templates/account/partials/login_form.html:16 +msgctxt "Login form primary action" +msgid "Log in" +msgstr "Innskrá" + +#: templates/account/partials/login_form.html:19 +msgctxt "Login form secondary link" +msgid "Forgot password?" +msgstr "Gleymt lykilorð?" + +#: templates/account/partials/login_form.html:29 +msgid "Facebook" +msgstr "Facebook" + +#: templates/account/partials/login_form.html:37 +msgid "Google" +msgstr "Google" + +#: templates/account/password_change.html:9 +msgctxt "Password change breadcrumb" +msgid "Edit" +msgstr "Breyta" + +#: templates/account/password_change.html:22 +msgctxt "Password change form legend" +msgid "Change Password" +msgstr "Breyta lykilorði" + +#: templates/account/password_change.html:28 +msgctxt "Password change form primary action" +msgid "Save new password" +msgstr "Vista nýtt lykilorð" + +#: templates/account/password_reset.html:6 +msgctxt "Password reset page title" +msgid "Password reset" +msgstr "Endursetja lykilorð" + +#: templates/account/password_reset.html:17 +msgctxt "Password reset form title" +msgid "Forgot your password?" +msgstr "Gleymdirðu lykilorðinu þínu?" + +#: templates/account/password_reset.html:19 +msgctxt "Password reset form help text" +msgid "" +"Please let us know the email you have used to register or purchase at our " +"store." +msgstr "" + +#: templates/account/password_reset.html:30 +msgctxt "Password reset primary action" +msgid "Continue" +msgstr "Halda áfram" + +#: templates/account/password_reset_done.html:6 +msgctxt "Password reset done page title" +msgid "Password Reset" +msgstr "Endursetja lykilorð" + +#: templates/account/password_reset_done.html:10 +msgctxt "Password reset done title" +msgid "Password Reset" +msgstr "Endursetja lykilorð" + +#: templates/account/password_reset_done.html:14 +msgctxt "Password reset done text" +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: templates/account/password_reset_from_key.html:6 +msgctxt "Password reset from key page title" +msgid "Change Password" +msgstr "Breyta lykilorði" + +#: templates/account/password_reset_from_key.html:11 +msgid "Bad Token" +msgstr "" + +#: templates/account/password_reset_from_key.html:13 +#, python-format +msgctxt "Password reset text if key is invalid" +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used.
Please request a new password " +"reset." +msgstr "" + +#: templates/account/password_reset_from_key.html:24 +msgctxt "Password reset from key form title" +msgid "Password Reset" +msgstr "Endursetja lykilorð" + +#: templates/account/password_reset_from_key.html:25 +msgctxt "Password reset from key form title" +msgid "Now you can set new password for you account." +msgstr "" + +#: templates/account/password_reset_from_key.html:32 +msgctxt "Password reset from key form primary action" +msgid "Continue" +msgstr "Halda áfram" + +#: templates/account/password_reset_from_key.html:39 +msgctxt "Password reset link expired from key form title" +msgid "Password Reset Link Expired" +msgstr "" + +#: templates/account/password_reset_from_key.html:40 +msgctxt "Password reset from key form title" +msgid "" +"Sorry but this link is no longer valid. If you forget your password, please " +"use link below." +msgstr "" + +#: templates/account/password_reset_from_key.html:42 +msgctxt "Reset my password link" +msgid "Reset my password" +msgstr "" + +#: templates/account/password_reset_from_key_done.html:4 +msgctxt "Password reset from key done page title" +msgid "Password Changed" +msgstr "Lykilorði var breytt" + +#: templates/account/password_reset_from_key_done.html:7 +msgctxt "Password reset from key done title" +msgid "Password Changed" +msgstr "Lykilorði var breytt" + +#: templates/account/password_reset_from_key_done.html:9 +msgid "Your password is now changed." +msgstr "Lykilorðinu þínu hefur nú verið breytt." + +#: templates/account/password_reset_from_key_done.html:10 +#, python-format +msgctxt "Password reset from key done text" +msgid "You can now sign in using your new password" +msgstr "" + +#: templates/account/signup.html:6 +msgctxt "Signup page title" +msgid "Sign Up" +msgstr "" + +#: templates/account/signup.html:17 +msgctxt "Signup form secondary title" +msgid "Already have an account?" +msgstr "" + +#: templates/account/signup.html:21 +msgctxt "Signup form secondary action" +msgid "Log in" +msgstr "Innskrá" + +#: templates/account/signup.html:28 +msgctxt "Signup form title" +msgid "Create an account" +msgstr "Stofna aðgang" + +#: templates/account/signup.html:36 +msgctxt "Signup form primary action" +msgid "Create an account" +msgstr "Stofna aðgang" + +#: templates/base.html:78 templates/base.html:215 +msgctxt "Main navigation item" +msgid "Dashboard" +msgstr "" + +#: templates/base.html:89 templates/base.html:232 +msgctxt "Main navigation item" +msgid "Stop impersonating" +msgstr "" + +#: templates/base.html:95 templates/base.html:238 +msgctxt "Main navigation item" +msgid "Log out" +msgstr "Skrá út" + +#: templates/base.html:101 templates/base.html:244 +msgctxt "Main navigation item" +msgid "Register" +msgstr "Nýskrá" + +#: templates/base.html:105 templates/base.html:249 +msgctxt "Main navigation item" +msgid "Log in" +msgstr "Innskrá" + +#: templates/base.html:136 +msgid "Search for product" +msgstr "Leita eftir vöru" + +#: templates/base.html:139 +msgid "Search" +msgstr "Leita" + +#: templates/base.html:148 templates/base.html:208 +msgctxt "Main navigation item" +msgid "Your cart" +msgstr "Karfan þín" + +#: templates/base.html:202 +msgid "Account" +msgstr "" + +#: templates/base.html:220 +msgctxt "Main navigation item" +msgid "Style guide" +msgstr "" + +#: templates/category/index.html:7 +msgctxt "Category breadcrumbs home" +msgid "Home" +msgstr "Heim" + +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Millisumma" + +#: templates/checkout/_subtotal_table.html:32 +msgctxt "Checkout shipping cost form" +msgid "Shipping cost for:" +msgstr "Sendingarkostnaður fyrir:" + +#: templates/checkout/_subtotal_table.html:57 +msgctxt "Order subtotal" +msgid "Total" +msgstr "Samtals" + +#: templates/checkout/_subtotal_table.html:58 +msgctxt "Checkout summary text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout/details.html:7 +msgctxt "Checkout page title" +msgid "Checkout" +msgstr "" + +#: templates/checkout/details.html:12 +msgctxt "Checkout top message" +msgid "Easy and secure!" +msgstr "Einfalt og öruggt!" + +#: templates/checkout/details.html:20 +msgctxt "Checkout title" +msgid "Checkout" +msgstr "" + +#: templates/checkout/details.html:35 +msgctxt "Order review title" +msgid "Order review" +msgstr "" + +#: templates/checkout/details.html:51 +msgctxt "Order review section" +msgid "Subtotal" +msgstr "Millisumma" + +#: templates/checkout/details.html:61 +msgctxt "Order review section" +msgid "Shipment" +msgstr "" + +#: templates/checkout/details.html:77 +msgctxt "Order review section title" +msgid "Taxes (included)" +msgstr "" + +#: templates/checkout/details.html:79 +msgctxt "Order review section title" +msgid "Taxes" +msgstr "" + +#: templates/checkout/details.html:89 +msgctxt "Order review section title" +msgid "Promo code" +msgstr "" + +#: templates/checkout/details.html:95 +msgctxt "Order review section title" +msgid "Total" +msgstr "Samtals" + +#: templates/checkout/index.html:7 +msgctxt "Checkout page title" +msgid "Your cart" +msgstr "Karfan þín" + +#: templates/checkout/index.html:12 +msgctxt "Checkout breadcrumb" +msgid "Cart" +msgstr "Karfa" + +#: templates/checkout/index.html:22 +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" + +#: templates/checkout/index.html:30 +msgctxt "Checkout table header" +msgid "Product" +msgstr "Vara" + +#: templates/checkout/index.html:33 +msgctxt "Checkout table header" +msgid "Quantity" +msgstr "Magn" + +#: templates/checkout/index.html:36 +msgctxt "Checkout table header" +msgid "Price" +msgstr "Verð" + +#: templates/checkout/index.html:81 +msgctxt "Checkout primary action" +msgid "Checkout" +msgstr "" + +#: templates/checkout/index.html:84 +msgctxt "checkout page: secondary action, empty the checkout" +msgid "Clear cart" +msgstr "Hreinsa körfu" + +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Það eru engar vörur í körfunni þinni." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + +#: templates/checkout/login.html:6 +msgctxt "Checkout login page title" +msgid "Login" +msgstr "Innskrá" + +#: templates/checkout/login.html:12 +msgctxt "Checkout login page title" +msgid "New customer?" +msgstr "Nýr viðskiptavinur?" + +#: templates/checkout/login.html:18 +msgctxt "Checkout login page new users action" +msgid "Continue" +msgstr "Halda áfram" + +#: templates/checkout/login.html:21 +msgctxt "Checkout login page new users message" +msgid "Registration is not required!" +msgstr "" + +#: templates/checkout/login.html:26 +msgctxt "Checkout login form title" +msgid "Existing customer? Log in." +msgstr "" + +#: templates/checkout/payment.html:9 +msgctxt "Checkout payment title" +msgid "Payment" +msgstr "" + +#: templates/checkout/payment.html:13 +msgctxt "Checkout payment primary action" +msgid "Place order" +msgstr "" + +#: templates/checkout/shipping_address.html:8 +#: templates/checkout/shipping_method.html:7 +msgctxt "Checkout shipping address title" +msgid "Shipping address" +msgstr "Afhendingarstaður" + +#: templates/checkout/shipping_address.html:21 +msgctxt "Checkout shipping address primary action" +msgid "Continue" +msgstr "Halda áfram" + +#: templates/checkout/shipping_method.html:15 +msgid "Select other address" +msgstr "Velja annað heimilisfang" + +#: templates/checkout/shipping_method.html:23 +msgctxt "Checkout shipping method form title" +msgid "Shipping method" +msgstr "Sendingaraðferð" + +#: templates/checkout/shipping_method.html:40 +msgctxt "Checkout shipping method primary action" +msgid "Continue" +msgstr "Halda áfram" + +#: templates/checkout/shipping_method.html:45 +msgctxt "" +"Message displayed to the user if there's no shipping methods for his country" +msgid "" +"\n" +" Unfortunately we do not ship to your selected country.\n" +"
\n" +" Please enter an alternative shipping address or contact us, if you think that's a mistake.\n" +" " +msgstr "" + +#: templates/checkout/snippets/addresses_form.html:4 +msgctxt "Checkout addresses form label" +msgid "Same as shipping" +msgstr "Sama og afhendingarstaður" + +#: templates/checkout/snippets/addresses_form.html:11 +msgctxt "Checkout addresses form label" +msgid "Enter a new address" +msgstr "Sláðu inn nýtt heimilisfang" + +#: templates/checkout/snippets/voucher_form.html:14 +msgctxt "Checkout voucher form action" +msgid "Remove" +msgstr "Fjarlægja" + +#: templates/checkout/snippets/voucher_form.html:15 +msgctxt "Checkout voucher form action" +msgid "(Remove)" +msgstr "(fjarlægja)" + +#: templates/checkout/snippets/voucher_form.html:25 +msgctxt "Checkout voucher form action" +msgid "Use" +msgstr "Nota" + +#: templates/checkout/summary.html:9 +msgctxt "Checkout summary title" +msgid "Billing address" +msgstr "Greiðslustaður" + +#: templates/checkout/summary.html:11 +msgctxt "Checkout shipping method" +msgid "Change shipping method" +msgstr "" + +#: templates/checkout/summary.html:12 +msgctxt "Checkout summary note title" +msgid "Add a note to your order" +msgstr "" + +#: templates/checkout/summary.html:16 +msgctxt "Checkout summary primary action" +msgid "Order & Pay" +msgstr "" + +#: templates/checkout/summary_without_shipping.html:8 +msgctxt "Checkout summary without shipping title" +msgid "Billing address" +msgstr "Greiðslustaður" + +#: templates/checkout/summary_without_shipping.html:15 +msgctxt "Checkout summary without shipping note title" +msgid "Add a note to your order" +msgstr "" + +#: templates/checkout/summary_without_shipping.html:19 +msgctxt "Checkout summary without shipping action" +msgid "Place order" +msgstr "" + +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + +#: templates/collection/index.html:7 +msgctxt "Site breadcrumbs home" +msgid "Home" +msgstr "Heim" + +#: templates/collection/index.html:16 +#, python-format +msgctxt "Unpublished collection details text" +msgid "" +"Warning! You are previewing a collection that will become " +"visible on %(date)s." +msgstr "" + +#: templates/collection/index.html:21 +msgctxt "Unavailable collection detail text" +msgid "" +"\n" +" Warning!\n" +" You are previewing a collection that is not published.\n" +" " +msgstr "" + +#: templates/dashboard/base.html:11 +#, python-format +msgctxt "Dashboard default page title" +msgid "Dashboard - %(site_name)s" +msgstr "" + +#: templates/dashboard/base.html:42 +msgctxt "Dashboard top navigation action" +msgid "Visit storefront" +msgstr "" + +#: templates/dashboard/base.html:47 +msgctxt "Dashboard top navigation action" +msgid "Style guide" +msgstr "" + +#: templates/dashboard/base.html:52 +msgctxt "Dashboard top navigation action" +msgid "Log out" +msgstr "Skrá út" + +#: templates/dashboard/base.html:81 +msgctxt "Dashboard search" +msgid "Search" +msgstr "Leita" + +#: templates/dashboard/base.html:96 templates/dashboard/base.html:248 +msgctxt "Dashboard homepage" +msgid "Home" +msgstr "Heim" + +#: templates/dashboard/base.html:102 +msgctxt "Dashboard catalogue" +msgid "Catalogue" +msgstr "" + +#: templates/dashboard/base.html:107 templates/dashboard/product/form.html:28 +#: templates/dashboard/product/list.html:10 +#: templates/dashboard/product/list.html:36 +#: templates/dashboard/product/product_image/list.html:29 +#: templates/dashboard/product/product_type/form.html:12 +#: templates/dashboard/product/product_variant/form.html:26 +msgctxt "Dashboard products list" +msgid "Products" +msgstr "Vörur" + +#: templates/dashboard/base.html:112 +#: templates/dashboard/category/detail.html:33 +#: templates/dashboard/category/detail.html:39 +#: templates/dashboard/category/form.html:13 +#: templates/dashboard/category/form.html:32 +#: templates/dashboard/category/list.html:32 +msgctxt "Dashboard categories list" +msgid "Categories" +msgstr "Flokkar" + +#: templates/dashboard/base.html:117 +msgctxt "Dashboard side navigation link" +msgid "Collections" +msgstr "" + +#: templates/dashboard/base.html:126 +msgctxt "Dashboard discounts list" +msgid "Discounts" +msgstr "Afslættir" + +#: templates/dashboard/base.html:131 +msgctxt "Dashboard sales (discounts) list" +msgid "Sales" +msgstr "" + +#: templates/dashboard/base.html:136 +#: templates/dashboard/discount/voucher/form.html:12 +#: templates/dashboard/discount/voucher/form.html:43 +#: templates/dashboard/discount/voucher/list.html:9 +#: templates/dashboard/discount/voucher/list.html:19 +msgctxt "Dashboard vouchers list" +msgid "Vouchers" +msgstr "" + +#: templates/dashboard/base.html:145 +msgctxt "Dashboard sales. `Sales' is noun of to sell" +msgid "Sales" +msgstr "" + +#: templates/dashboard/base.html:151 +#: templates/dashboard/order/address_form.html:7 +#: templates/dashboard/order/address_form.html:23 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 +#: templates/dashboard/order/fulfillment.html:11 +#: templates/dashboard/order/fulfillment.html:27 +#: templates/dashboard/order/list.html:9 +#: templates/dashboard/order/list.html:29 +msgctxt "Dashboard orders list" +msgid "Orders" +msgstr "Pantanir" + +#: templates/dashboard/base.html:158 +#: templates/dashboard/customer/detail.html:9 +#: templates/dashboard/customer/detail.html:25 +#: templates/dashboard/customer/form.html:28 +#: templates/dashboard/customer/list.html:8 +#: templates/dashboard/customer/list.html:26 +msgctxt "Dashboard customers list" +msgid "Customers" +msgstr "Viðskiptavinir" + +#: templates/dashboard/base.html:168 +msgctxt "Management section" +msgid "Staff management" +msgstr "" + +#: templates/dashboard/base.html:173 +msgctxt "Dashboard staff members list" +msgid "Staff members" +msgstr "" + +#: templates/dashboard/base.html:182 +msgctxt "Dashboard configuration" +msgid "Configuration" +msgstr "" + +#: templates/dashboard/base.html:188 +#: templates/dashboard/product/product_type/form.html:28 +#: templates/dashboard/product/product_type/list.html:8 +#: templates/dashboard/product/product_type/list.html:28 +msgctxt "Dashboard product types list" +msgid "Product types" +msgstr "" + +#: templates/dashboard/base.html:193 +#: templates/dashboard/product/attribute/form.html:29 +#: templates/dashboard/product/attribute/list.html:8 +#: templates/dashboard/product/attribute/list.html:26 +#: templates/dashboard/product/attribute/values/form.html:29 +msgctxt "Dashboard attributes list" +msgid "Attributes" +msgstr "" + +#: templates/dashboard/base.html:200 +msgctxt "Dashboard shipping zones list" +msgid "Shipping" +msgstr "" + +#: templates/dashboard/base.html:207 templates/dashboard/menu/detail.html:23 +#: templates/dashboard/menu/form.html:12 templates/dashboard/menu/form.html:31 +#: templates/dashboard/menu/item/detail.html:24 +#: templates/dashboard/menu/item/detail.html:30 +#: templates/dashboard/menu/item/form.html:31 +#: templates/dashboard/menu/list.html:32 +msgctxt "Dashboard menus list" +msgid "Navigation" +msgstr "" + +#: templates/dashboard/base.html:214 templates/dashboard/sites/form.html:11 +#: templates/dashboard/taxes/form.html:12 +msgctxt "Dashboard site settings" +msgid "Site settings" +msgstr "" + +#: templates/dashboard/base.html:220 +msgctxt "Dashboard taxes" +msgid "Taxes" +msgstr "" + +#: templates/dashboard/base.html:226 +msgctxt "Dashboard static pages" +msgid "Pages" +msgstr "Síður" + +#: templates/dashboard/base.html:234 +msgctxt "Dashboard software version" +msgid "Release:" +msgstr "" + +#: templates/dashboard/base_modal.html:33 +#: templates/dashboard/category/form.html:114 +#: templates/dashboard/category/form.html:118 +#: templates/dashboard/customer/form.html:59 +#: templates/dashboard/customer/form.html:66 +#: templates/dashboard/discount/sale/form.html:115 +#: templates/dashboard/discount/voucher/form.html:125 +#: templates/dashboard/menu/form.html:60 +#: templates/dashboard/menu/item/form.html:82 +#: templates/dashboard/order/address_form.html:61 +#: templates/dashboard/order/fulfillment.html:136 +#: templates/dashboard/product/attribute/form.html:77 +#: templates/dashboard/product/attribute/form.html:84 +#: templates/dashboard/product/attribute/values/form.html:78 +#: templates/dashboard/product/form.html:134 +#: templates/dashboard/product/form.html:141 +#: templates/dashboard/product/product_image/form.html:79 +#: templates/dashboard/product/product_type/form.html:113 +#: templates/dashboard/product/product_variant/form.html:111 +#: templates/dashboard/product/product_variant/form.html:118 +#: templates/dashboard/shipping/form.html:77 +#: templates/dashboard/shipping/form.html:84 +#: templates/dashboard/shipping/methods/form.html:80 +#: templates/dashboard/sites/authorization_keys/form.html:71 +#: templates/dashboard/sites/form.html:61 +#: templates/dashboard/staff/detail.html:73 +#: templates/dashboard/taxes/form.html:100 +msgctxt "Dashboard cancel action" +msgid "Cancel" +msgstr "Hætta við" + +#: templates/dashboard/category/detail.html:8 +#: templates/dashboard/category/list.html:9 +msgctxt "Category list page title" +msgid "Categories" +msgstr "Flokkar" + +#: templates/dashboard/category/detail.html:83 +msgctxt "Category field" +msgid "Description" +msgstr "Lýsing" + +#: templates/dashboard/category/detail.html:94 +msgctxt "Category detail view action" +msgid "Edit category" +msgstr "" + +#: templates/dashboard/category/detail.html:97 +msgctxt "Category detail view action" +msgid "Remove category" +msgstr "" + +#: templates/dashboard/category/detail.html:104 +msgctxt "Title of the subcategories list" +msgid "Subcategories" +msgstr "Undirflokkar" + +#: templates/dashboard/category/detail.html:109 +#: templates/dashboard/includes/_menu_items.html:14 +#: templates/dashboard/product/attribute/detail.html:68 +#: templates/dashboard/product/detail.html:93 +#: templates/dashboard/shipping/methods/_shipping_methods_table.html:13 +#: templates/dashboard/sites/detail.html:79 +msgid "Add" +msgstr "Bæta við" + +#: templates/dashboard/category/detail.html:116 +#: templates/dashboard/category/list.html:49 +msgctxt "Category list table header name" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/category/detail.html:119 +#: templates/dashboard/category/list.html:52 +msgctxt "Category list table header description" +msgid "Description" +msgstr "Lýsing" + +#: templates/dashboard/category/detail.html:140 +msgctxt "Category edit action" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/category/detail.html:143 +msgctxt "Category list action link" +msgid "Remove" +msgstr "Fjarlægja" + +#: templates/dashboard/category/detail.html:149 +msgctxt "Empty list of categories" +msgid "No subcategories" +msgstr "" + +#: templates/dashboard/category/form.html:9 +msgctxt "Category form page title" +msgid "Edit category" +msgstr "" + +#: templates/dashboard/category/form.html:11 +msgctxt "Category detail page title" +msgid "Add new category" +msgstr "" + +#: templates/dashboard/category/form.html:24 +msgctxt "Category form page title" +msgid "Add new category" +msgstr "" + +#: templates/dashboard/category/form.html:55 +msgctxt "Category form page title" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/category/form.html:61 +#: templates/dashboard/category/form.html:77 +msgctxt "Category detail breadcrumbs" +msgid "Add new category" +msgstr "" + +#: templates/dashboard/category/form.html:123 +#: templates/dashboard/customer/form.html:62 +#: templates/dashboard/discount/sale/form.html:119 +#: templates/dashboard/discount/voucher/form.html:129 +#: templates/dashboard/menu/form.html:64 +#: templates/dashboard/menu/item/form.html:86 +#: templates/dashboard/order/address_form.html:64 +#: templates/dashboard/order/modal/change_quantity.html:19 +#: templates/dashboard/product/product_type/form.html:117 +#: templates/dashboard/sites/form.html:64 +#: templates/dashboard/staff/detail.html:77 +#: templates/dashboard/taxes/form.html:103 +msgctxt "Dashboard update action" +msgid "Update" +msgstr "Uppfæra" + +#: templates/dashboard/category/form.html:127 +#: templates/dashboard/discount/sale/form.html:123 +#: templates/dashboard/discount/voucher/form.html:133 +#: templates/dashboard/menu/form.html:68 +#: templates/dashboard/menu/item/form.html:90 +#: templates/dashboard/product/attribute/form.html:87 +#: templates/dashboard/product/attribute/values/form.html:86 +#: templates/dashboard/product/form.html:144 +#: templates/dashboard/product/product_image/form.html:87 +#: templates/dashboard/product/product_type/form.html:121 +#: templates/dashboard/product/product_variant/form.html:121 +#: templates/dashboard/shipping/form.html:87 +#: templates/dashboard/shipping/methods/form.html:88 +#: templates/dashboard/sites/authorization_keys/form.html:79 +msgctxt "Dashboard create action" +msgid "Create" +msgstr "Stofna" + +#: templates/dashboard/category/list.html:22 +msgctxt "Category list add button text" +msgid "Add category" +msgstr "" + +#: templates/dashboard/category/list.html:83 +msgctxt "Empty category list message" +msgid "No categories found." +msgstr "Engir flokkar fundust." + +#: templates/dashboard/category/modal/confirm_delete.html:13 +#, python-format +msgctxt "Remove category modal title" +msgid "Remove category %(category)s" +msgstr "" + +#: templates/dashboard/category/modal/confirm_delete.html:20 +#, python-format +msgctxt "Remove category modal title" +msgid "" +"Are you sure you want to remove category %(category)s?" +msgstr "" + +#: templates/dashboard/category/modal/confirm_delete.html:25 +msgctxt "Delete category form text about descendant categories" +msgid "The following child categories will be removed:" +msgstr "" + +#: templates/dashboard/category/modal/confirm_delete.html:38 +#, python-format +msgctxt "Remove category form text about products" +msgid "There is one product in this category that will be removed." +msgid_plural "" +"There are %(counter)s products in this category that will be removed." +msgstr[0] "" +msgstr[1] "" + +#: templates/dashboard/category/modal/confirm_delete.html:49 +#: templates/dashboard/collection/confirm_delete.html:26 +#: templates/dashboard/customer/modal/confirm_delete.html:28 +#: templates/dashboard/discount/sale/modal/confirm_delete.html:24 +#: templates/dashboard/discount/voucher/modal/confirm_delete.html:26 +#: templates/dashboard/menu/item/modal/confirm_delete.html:34 +#: templates/dashboard/menu/modal/confirm_delete.html:34 +#: templates/dashboard/order/modal/cancel_line.html:65 +#: templates/dashboard/page/modal_delete.html:26 +#: templates/dashboard/product/attribute/modal/attribute_confirm_delete.html:26 +#: templates/dashboard/product/attribute/values/modal/confirm_delete.html:26 +#: templates/dashboard/product/modal/confirm_delete.html:26 +#: templates/dashboard/product/product_image/modal/confirm_delete.html:25 +#: templates/dashboard/product/product_type/modal/confirm_delete.html:40 +#: templates/dashboard/product/product_variant/modal/confirm_delete.html:34 +#: templates/dashboard/shipping/modal/confirm_delete.html:27 +#: templates/dashboard/shipping/modal/method_confirm_delete.html:26 +#: templates/dashboard/sites/modal/confirm_delete.html:26 +#: templates/dashboard/staff/modal/confirm_delete.html:24 +msgctxt "Dashboard delete action" +msgid "Remove" +msgstr "Fjarlægja" + +#: templates/dashboard/category/zero_page.html:5 +msgid "No categories found." +msgstr "Engir flokkar fundust." + +#: templates/dashboard/category/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Categories are used to organize products into groups that are displayed in the navigation in the storefront.
\n" +" You can create categories by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/collection/confirm_delete.html:12 +#, python-format +msgctxt "Modal remove collection text" +msgid "Remove collection %(collection)s" +msgstr "" + +#: templates/dashboard/collection/confirm_delete.html:19 +#, python-format +msgctxt "Modal remove collection text" +msgid "" +"Are you sure you want to remove collection %(collection)s?" +msgstr "" + +#: templates/dashboard/collection/detail.html:8 +#: templates/dashboard/collection/detail.html:14 +#: templates/dashboard/collection/detail.html:24 +msgid "Add new collection" +msgstr "" + +#: templates/dashboard/collection/detail.html:8 +#: templates/dashboard/collection/detail.html:18 +#: templates/dashboard/collection/list.html:19 +msgid "Collections" +msgstr "" + +#: templates/dashboard/collection/detail.html:36 +msgctxt "Collection action" +msgid "Remove collection" +msgstr "" + +#: templates/dashboard/collection/detail.html:41 +msgctxt "Collection action" +msgid "View on site" +msgstr "" + +#: templates/dashboard/collection/detail.html:70 +msgctxt "Collection form card title: availability sub form" +msgid "Availability" +msgstr "" + +#: templates/dashboard/collection/detail.html:81 +msgctxt "Collection secondary action" +msgid "Cancel" +msgstr "Hætta við" + +#: templates/dashboard/collection/detail.html:84 +msgctxt "Collection detail action" +msgid "Update" +msgstr "Uppfæra" + +#: templates/dashboard/collection/detail.html:88 +msgctxt "Collection detail action" +msgid "Create" +msgstr "Stofna" + +#: templates/dashboard/collection/detail.html:110 +msgctxt "Collection field" +msgid "Published" +msgstr "Birt" + +#: templates/dashboard/collection/detail.html:112 +msgctxt "Collection field" +msgid "Draft" +msgstr "Drög" + +#: templates/dashboard/collection/detail.html:120 +msgctxt "Collection field" +msgid "Can't unpublish homepage collection" +msgstr "" + +#: templates/dashboard/collection/list.html:10 +msgctxt "Collections list page title " +msgid "Collections" +msgstr "" + +#: templates/dashboard/collection/list.html:25 +msgctxt "Collections list add button text" +msgid "Add collection" +msgstr "" + +#: templates/dashboard/collection/list.html:40 +msgctxt "Collections list table header name" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/collection/list.html:43 +msgctxt "Voucher table header" +msgid "Number of products" +msgstr "" + +#: templates/dashboard/collection/list.html:46 +msgctxt "Collections list table header" +msgid "Visibility" +msgstr "" + +#: templates/dashboard/collection/list.html:58 +msgid "Products in collection:" +msgstr "" + +#: templates/dashboard/collection/list.html:79 +msgctxt "Empty collection list message" +msgid "No collections found." +msgstr "" + +#: templates/dashboard/collection/list.html:92 +msgid "Homepage collection" +msgstr "" + +#: templates/dashboard/collection/list.html:102 +msgctxt "Homepage collection save" +msgid "Save" +msgstr "Vista" + +#: templates/dashboard/collection/zero_page.html:5 +msgid "No collections found." +msgstr "" + +#: templates/dashboard/collection/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Collections are used to organize products into custom groups.
\n" +" You can create collections by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/customer/detail.html:56 +msgctxt "Customer field" +msgid "Date joined" +msgstr "" + +#: templates/dashboard/customer/detail.html:68 +msgctxt "Customer field" +msgid "Note" +msgstr "Athugasemd" + +#: templates/dashboard/customer/detail.html:79 +msgctxt "Customer action" +msgid "Edit customer" +msgstr "Breyta viðskiptavin" + +#: templates/dashboard/customer/detail.html:82 +msgctxt "Customer action" +msgid "Remove customer" +msgstr "Fjarlægja viðskiptavin" + +#: templates/dashboard/customer/detail.html:86 +msgctxt "Customer impersonate action" +msgid "Impersonate customer" +msgstr "" + +#: templates/dashboard/customer/detail.html:95 +msgctxt "Customer recent orders table title" +msgid "Recent orders" +msgstr "" + +#: templates/dashboard/customer/detail.html:104 +msgctxt "Customer orders table header" +msgid "Number" +msgstr "" + +#: templates/dashboard/customer/detail.html:107 +msgctxt "Customer orders table header" +msgid "Placed on" +msgstr "" + +#: templates/dashboard/customer/detail.html:110 +msgctxt "Customer orders table header" +msgid "Order status" +msgstr "Staða pöntunar" + +#: templates/dashboard/customer/detail.html:113 +msgctxt "Customer orders table header" +msgid "Total" +msgstr "Samtals" + +#: templates/dashboard/customer/detail.html:140 +msgctxt "Empty customer orders table message" +msgid "No orders found." +msgstr "" + +#: templates/dashboard/customer/detail.html:149 +msgctxt "Customer notes card title" +msgid "Customer notes" +msgstr "" + +#: templates/dashboard/customer/detail.html:162 +msgctxt "Customer without notes message" +msgid "There are no notes associated with this customer" +msgstr "" + +#: templates/dashboard/customer/detail.html:168 +msgctxt "Customer notes card action" +msgid "Add note" +msgstr "" + +#: templates/dashboard/customer/detail.html:181 +msgctxt "Customer default shipping address card title" +msgid "Default shipping address" +msgstr "" + +#: templates/dashboard/customer/detail.html:188 +msgctxt "Customer without default shipping address message" +msgid "No default shipping address." +msgstr "" + +#: templates/dashboard/customer/detail.html:201 +msgctxt "Customer default billing address card title" +msgid "Default billing address" +msgstr "" + +#: templates/dashboard/customer/detail.html:209 +msgctxt "Customer without default billing address message" +msgid "No default billing address." +msgstr "" + +#: templates/dashboard/customer/form.html:10 +msgctxt "Dashboard add customer" +msgid "Add new customer" +msgstr "" + +#: templates/dashboard/customer/form.html:12 +#: templates/dashboard/search/results.html:89 +msgctxt "Dashboard customer" +msgid "Customer" +msgstr "Viðskiptavinur" + +#: templates/dashboard/customer/form.html:36 +msgctxt "Dashboard add customer action" +msgid "Add customer" +msgstr "Bæta við viðskiptavin" + +#: templates/dashboard/customer/form.html:47 +msgctxt "Customer details header" +msgid "Customer details" +msgstr "" + +#: templates/dashboard/customer/form.html:69 +#: templates/dashboard/staff/detail.html:79 +msgctxt "Dashboard add action" +msgid "Add" +msgstr "Bæta við" + +#: templates/dashboard/customer/list.html:17 +msgctxt "Customer list add button text" +msgid "Add customer" +msgstr "Bæta við viðskiptavin" + +#: templates/dashboard/customer/list.html:40 +msgctxt "Customers table header" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/customer/list.html:43 +msgctxt "Customers table header" +msgid "Email" +msgstr "Netfang" + +#: templates/dashboard/customer/list.html:46 +msgctxt "Customers table header" +msgid "Location" +msgstr "Staðsetning" + +#: templates/dashboard/customer/list.html:86 +msgctxt "Empty customers table message" +msgid "No customers found." +msgstr "" + +#: templates/dashboard/customer/modal/add_note.html:11 +#: templates/dashboard/order/modal/add_note.html:11 +msgctxt "Modal add note title" +msgid "Add note" +msgstr "" + +#: templates/dashboard/customer/modal/add_note.html:19 +#: templates/dashboard/order/modal/add_note.html:19 +msgctxt "Modal add note primary action" +msgid "Save note" +msgstr "" + +#: templates/dashboard/customer/modal/confirm_delete.html:12 +#, python-format +msgctxt "Header of modal used for removing customer's account " +msgid "Remove customer %(customer)s" +msgstr "" + +#: templates/dashboard/customer/modal/confirm_delete.html:19 +#, python-format +msgctxt "Modal remove collection text" +msgid "" +"Are you sure you want to remove customer %(customer)s? " +"Please note that this procedure will remove customer's account, but " +"customer's orders and addresses associated with them will persist for the " +"financial records." +msgstr "" + +#: templates/dashboard/customer/modal/confirm_promote.html:12 +msgctxt "Dashboard confirmation modal" +msgid "Promote to staff member" +msgstr "" + +#: templates/dashboard/customer/modal/confirm_promote.html:17 +#, python-format +msgctxt "Modal promote to staff member text" +msgid "Are you sure you want to promote %(customer)s to staff member?" +msgstr "" + +#: templates/dashboard/customer/modal/confirm_promote.html:24 +msgctxt "Dashboard promote action" +msgid "Promote" +msgstr "" + +#: templates/dashboard/customer/zero_page.html:5 +msgid "No customers found." +msgstr "" + +#: templates/dashboard/customer/zero_page.html:8 +msgid "" +"\n" +" Customer accounts will appear here once users register in the shop.\n" +" " +msgstr "" + +#: templates/dashboard/discount/sale/form.html:10 +msgctxt "Sale (discount) page title" +msgid "Add new sale" +msgstr "" + +#: templates/dashboard/discount/sale/form.html:12 +#: templates/dashboard/discount/sale/form.html:43 +#: templates/dashboard/discount/sale/list.html:18 +msgctxt "Dashboard sales (discounts) list." +msgid "Sales" +msgstr "" + +#: templates/dashboard/discount/sale/form.html:32 +msgctxt "Sale (discount) action" +msgid "Remove sale" +msgstr "" + +#: templates/dashboard/discount/sale/form.html:56 +msgctxt "Sale (discount) breadcrumbs" +msgid "Add new sale" +msgstr "" + +#: templates/dashboard/discount/sale/list.html:9 +msgid "Sales" +msgstr "" + +#: templates/dashboard/discount/sale/list.html:27 +msgctxt "Sale (discount) list add button text" +msgid "Add sale" +msgstr "" + +#: templates/dashboard/discount/sale/list.html:42 +msgctxt "Sale (discount) table header" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/discount/sale/list.html:45 +msgctxt "Sale (discount) table header" +msgid "Start date" +msgstr "Upphafsdagsetning" + +#: templates/dashboard/discount/sale/list.html:48 +msgctxt "Sale (discount) table header" +msgid "End date" +msgstr "Endadagsetning" + +#: templates/dashboard/discount/sale/list.html:51 +msgctxt "Sale (discount) table header" +msgid "Discount" +msgstr "Afsláttur" + +#: templates/dashboard/discount/sale/list.html:84 +msgctxt "Empty sales table message" +msgid "No sales found" +msgstr "" + +#: templates/dashboard/discount/sale/modal/confirm_delete.html:12 +msgctxt "Remove sale (discount) text" +msgid "Remove sale" +msgstr "" + +#: templates/dashboard/discount/sale/modal/confirm_delete.html:17 +#, python-format +msgctxt "Remove sale (discount) text" +msgid "Are you sure you want to remove %(sale)s?" +msgstr "" + +#: templates/dashboard/discount/sale/zero_page.html:5 +msgid "No sales found." +msgstr "" + +#: templates/dashboard/discount/sale/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Sales are used to create discounts on particular products or whole categories.
\n" +" You can create sales by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/discount/voucher/form.html:10 +msgctxt "Voucher page title" +msgid "Add new voucher" +msgstr "" + +#: templates/dashboard/discount/voucher/form.html:32 +msgctxt "Voucher action" +msgid "Remove voucher" +msgstr "" + +#: templates/dashboard/discount/voucher/form.html:56 +msgctxt "Voucher breadcrumbs" +msgid "Add new voucher" +msgstr "" + +#: templates/dashboard/discount/voucher/list.html:28 +msgctxt "Voucher list add button text" +msgid "Add voucher" +msgstr "" + +#: templates/dashboard/discount/voucher/list.html:43 +msgctxt "Voucher table header" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/discount/voucher/list.html:46 +msgctxt "Voucher table header" +msgid "Discount" +msgstr "Afsláttur" + +#: templates/dashboard/discount/voucher/list.html:49 +msgctxt "Voucher table header" +msgid "Start date" +msgstr "Upphafsdagsetning" + +#: templates/dashboard/discount/voucher/list.html:52 +msgctxt "Voucher table header" +msgid "End date" +msgstr "Endadagsetning" + +#: templates/dashboard/discount/voucher/list.html:55 +msgctxt "Voucher table header" +msgid "Used" +msgstr "" + +#: templates/dashboard/discount/voucher/list.html:58 +msgctxt "Voucher table header" +msgid "Min amount spent" +msgstr "" + +#: templates/dashboard/discount/voucher/list.html:105 +msgctxt "Empty vouchers table message" +msgid "No vouchers found" +msgstr "" + +#: templates/dashboard/discount/voucher/modal/confirm_delete.html:12 +#, python-format +msgctxt "Remove voucher text" +msgid "Remove voucher %(voucher)s" +msgstr "" + +#: templates/dashboard/discount/voucher/modal/confirm_delete.html:19 +#, python-format +msgctxt "Remove voucher text" +msgid "Are you sure you want to remove voucher %(voucher)s?" +msgstr "" + +#: templates/dashboard/discount/voucher/zero_page.html:5 +msgid "No vouchers found." +msgstr "" + +#: templates/dashboard/discount/voucher/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Vouchers allows creating promotional codes for all purchases, specific products or shipping.
\n" +" You can create vouchers by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/includes/_collection_availability.html:5 +msgctxt "Collection availability status" +msgid "Published" +msgstr "Birt" + +#: templates/dashboard/includes/_collection_availability.html:8 +#, python-format +msgctxt "Collection availability status" +msgid "" +"\n" +" Hidden (will become visible on %(date)s)\n" +" " +msgstr "" + +#: templates/dashboard/includes/_collection_availability.html:13 +msgctxt "Collection availability status" +msgid "Hidden" +msgstr "" + +#: templates/dashboard/includes/_filters.html:10 +msgctxt "Dashboard card title" +msgid "Filters" +msgstr "" + +#: templates/dashboard/includes/_filters.html:43 +msgctxt "Category page filters" +msgid "Clear" +msgstr "Hreinsa" + +#: templates/dashboard/includes/_filters.html:47 +msgctxt "Category price filter" +msgid "Filter" +msgstr "" + +#: templates/dashboard/includes/_google_preview.html:5 +msgctxt "Title of the box showing preview from the search engine perspective" +msgid "Search engine listing preview" +msgstr "" + +#: templates/dashboard/includes/_menu_items.html:9 +msgctxt "Title of the menu items list" +msgid "Menu items" +msgstr "" + +#: templates/dashboard/includes/_menu_items.html:23 +msgctxt "Menu items list table header name" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/includes/_menu_items.html:26 +msgctxt "Menu items list table header points to" +msgid "Points to" +msgstr "Bendir á" + +#: templates/dashboard/includes/_menu_items.html:28 +msgctxt "Menu items status" +msgid "Status" +msgstr "Staða" + +#: templates/dashboard/includes/_menu_items.html:47 +msgctxt "Menu items status" +msgid "Published" +msgstr "Birt" + +#: templates/dashboard/includes/_menu_items.html:51 +msgctxt "Menu items status" +msgid "Not published" +msgstr "" + +#: templates/dashboard/includes/_menu_items.html:56 +msgctxt "Menu item edit action" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/includes/_menu_items.html:59 +msgctxt "Menu item list action link" +msgid "Remove" +msgstr "Fjarlægja" + +#: templates/dashboard/includes/_menu_items.html:65 +msgctxt "Empty list of menu items" +msgid "No menu items" +msgstr "" + +#: templates/dashboard/includes/_page_availability.html:5 +msgctxt "Page availability status" +msgid "Published" +msgstr "Birt" + +#: templates/dashboard/includes/_page_availability.html:9 +#: templates/dashboard/includes/_page_availability.html:19 +msgctxt "Page availability status" +msgid "Hidden" +msgstr "" + +#: templates/dashboard/includes/_page_availability.html:13 +#, python-format +msgctxt "Page availability status" +msgid "" +"\n" +" Hidden (will become visible on %(date)s)\n" +" " +msgstr "" + +#: templates/dashboard/index.html:15 templates/dashboard/index.html:82 +#: templates/dashboard/index.html:138 +#, python-format +msgctxt "Dashboard homepage summary header title" +msgid "Showing last %(counter)s results" +msgstr "" + +#: templates/dashboard/index.html:16 +msgctxt "Dashboard homepage table title" +msgid "Orders ready for shipment" +msgstr "" + +#: templates/dashboard/index.html:28 templates/dashboard/order/list.html:44 +msgctxt "Orders table header" +msgid "Placed on" +msgstr "" + +#: templates/dashboard/index.html:31 templates/dashboard/order/list.html:47 +msgctxt "Orders table header" +msgid "Customer" +msgstr "Viðskiptavinur" + +#: templates/dashboard/index.html:34 templates/dashboard/order/list.html:50 +msgctxt "Orders table header" +msgid "Payment status" +msgstr "Greiðslustaða" + +#: templates/dashboard/index.html:37 templates/dashboard/order/list.html:53 +msgctxt "Orders table header" +msgid "Order status" +msgstr "Staða pöntunar" + +#: templates/dashboard/index.html:40 templates/dashboard/order/list.html:56 +msgctxt "Orders table header" +msgid "Total" +msgstr "Samtals" + +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 +#: templates/dashboard/order/list.html:69 +msgctxt "Anonymous user account value" +msgid "Guest" +msgstr "Gestur" + +#: templates/dashboard/index.html:74 +msgctxt "Empty order table message" +msgid "No orders are ready for shipment." +msgstr "" + +#: templates/dashboard/index.html:83 +msgctxt "Dashboard homepage table title" +msgid "Preauthorized payments" +msgstr "" + +#: templates/dashboard/index.html:92 +msgctxt "Preauthorized payments table header" +msgid "Order" +msgstr "Pöntun" + +#: templates/dashboard/index.html:95 +msgctxt "Preauthorized payments table header" +msgid "Date" +msgstr "Dagsetning" + +#: templates/dashboard/index.html:98 +msgctxt "Preauthorized payments table header" +msgid "Customer" +msgstr "Viðskiptavinur" + +#: templates/dashboard/index.html:101 +msgctxt "Preauthorized payments table header" +msgid "Amount" +msgstr "Upphæð" + +#: templates/dashboard/index.html:116 +msgid "Guest" +msgstr "Gestur" + +#: templates/dashboard/index.html:130 +msgctxt "Empty Preauthorized payments table message" +msgid "No preauthorized payments." +msgstr "" + +#: templates/dashboard/index.html:139 +msgctxt "Dashboard homepage table title" +msgid "Products with low stock" +msgstr "" + +#: templates/dashboard/index.html:148 +msgctxt "Low stock product list" +msgid "Product name" +msgstr "Nafn vöru" + +#: templates/dashboard/index.html:151 +msgctxt "Low stock product list" +msgid "Stock left" +msgstr "" + +#: templates/dashboard/index.html:172 +msgctxt "Empty low stock table message" +msgid "No products are low in stock." +msgstr "" + +#: templates/dashboard/menu/detail.html:7 templates/dashboard/menu/list.html:9 +msgctxt "Menu list page title" +msgid "Navigation" +msgstr "" + +#: templates/dashboard/menu/detail.html:50 +msgctxt "Menu detail view action" +msgid "Edit menu" +msgstr "" + +#: templates/dashboard/menu/detail.html:53 +msgctxt "Menu detail view action" +msgid "Remove menu" +msgstr "" + +#: templates/dashboard/menu/form.html:8 +msgctxt "Menu form page title" +msgid "Edit menu" +msgstr "" + +#: templates/dashboard/menu/form.html:10 templates/dashboard/menu/form.html:23 +msgctxt "Menu form page title" +msgid "Add new menu" +msgstr "" + +#: templates/dashboard/menu/form.html:41 +msgctxt "Menu detail breadcrumbs" +msgid "Add new menu" +msgstr "" + +#: templates/dashboard/menu/item/detail.html:7 +msgctxt "Menu item list page title" +msgid "Menu items" +msgstr "" + +#: templates/dashboard/menu/item/detail.html:75 +msgctxt "Menu item field" +msgid "Points to" +msgstr "Bendir á" + +#: templates/dashboard/menu/item/detail.html:87 +msgctxt "Menu item detail view action" +msgid "Edit menu item" +msgstr "" + +#: templates/dashboard/menu/item/detail.html:90 +msgctxt "Menu item detail view action" +msgid "Remove menu item" +msgstr "" + +#: templates/dashboard/menu/item/form.html:8 +msgctxt "Menu item page title" +msgid "Edit menu item" +msgstr "" + +#: templates/dashboard/menu/item/form.html:10 +#: templates/dashboard/menu/item/form.html:23 +msgctxt "Menu item page title" +msgid "Add new menu item" +msgstr "" + +#: templates/dashboard/menu/item/form.html:12 +msgctxt "Dashboard menu items list" +msgid "Menu items" +msgstr "" + +#: templates/dashboard/menu/item/form.html:56 +msgctxt "Menu form page title" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/menu/item/form.html:62 +msgctxt "Menu form page title" +msgid "Add new menu item" +msgstr "" + +#: templates/dashboard/menu/item/modal/confirm_delete.html:12 +#, python-format +msgctxt "Remove menu item modal title" +msgid "Remove menu item %(menu_item)s" +msgstr "" + +#: templates/dashboard/menu/item/modal/confirm_delete.html:19 +#, python-format +msgctxt "Remove menu item modal title" +msgid "" +"Are you sure you want to remove menu item %(menu_item)s " +"from %(menu)s menu?" +msgstr "" + +#: templates/dashboard/menu/item/modal/confirm_delete.html:24 +#: templates/dashboard/menu/modal/confirm_delete.html:24 +msgctxt "Remove menu modal text about descendant menu items" +msgid "The following menu items will be removed:" +msgstr "" + +#: templates/dashboard/menu/list.html:22 +msgctxt "Menu list add button text" +msgid "Add menu" +msgstr "" + +#: templates/dashboard/menu/list.html:47 +msgctxt "Menu list table header Menu name" +msgid "Menu name" +msgstr "Nafn á valmynd" + +#: templates/dashboard/menu/list.html:71 +msgctxt "Empty menu list message" +msgid "No menus found." +msgstr "" + +#: templates/dashboard/menu/list.html:84 +msgid "Storefront Menus" +msgstr "" + +#: templates/dashboard/menu/list.html:97 +#: templates/dashboard/product/attribute/form.html:80 +#: templates/dashboard/product/attribute/values/form.html:82 +#: templates/dashboard/product/form.html:137 +#: templates/dashboard/product/product_image/form.html:83 +#: templates/dashboard/product/product_variant/form.html:114 +#: templates/dashboard/shipping/form.html:80 +#: templates/dashboard/shipping/list.html:104 +#: templates/dashboard/shipping/methods/form.html:84 +#: templates/dashboard/sites/authorization_keys/form.html:75 +msgctxt "Dashboard update action" +msgid "Save" +msgstr "Vista" + +#: templates/dashboard/menu/modal/confirm_delete.html:12 +#, python-format +msgctxt "Remove menu modal title" +msgid "Remove menu %(menu)s" +msgstr "" + +#: templates/dashboard/menu/modal/confirm_delete.html:19 +#, python-format +msgctxt "Remove menu modal title" +msgid "Are you sure you want to remove menu %(menu)s?" +msgstr "" + +#: templates/dashboard/menu/zero_page.html:5 +msgid "No menus found." +msgstr "" + +#: templates/dashboard/menu/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Menus are used to organize the navigation bar displayed in the storefront.
\n" +" You can create menus by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/next.html:11 +msgctxt "Dashboard default page title" +msgid "Dashboard - Saleor" +msgstr "" + +#: templates/dashboard/order/address_form.html:7 +msgctxt "" +msgid "Edit address" +msgstr "" + +#: templates/dashboard/order/address_form.html:39 +#: templates/dashboard/order/detail.html:218 +msgctxt "" +msgid "Shipping address" +msgstr "Afhendingarstaður" + +#: templates/dashboard/order/address_form.html:41 +#: templates/dashboard/order/detail.html:234 +msgctxt "" +msgid "Billing address" +msgstr "Greiðslustaður" + +#: templates/dashboard/order/detail.html:33 +msgctxt "Order detail action" +msgid "Cancel Order" +msgstr "" + +#: templates/dashboard/order/detail.html:40 +msgctxt "Order detail action" +msgid "Remove draft order" +msgstr "" + +#: templates/dashboard/order/detail.html:46 +msgctxt "Order detail action" +msgid "Print" +msgstr "Prenta" + +#: templates/dashboard/order/detail.html:80 +msgctxt "Order detail tab" +msgid "Details" +msgstr "" + +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 +msgctxt "Order detail tab" +msgid "Payments" +msgstr "" + +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 +msgctxt "Order detail tab" +msgid "History" +msgstr "Saga" + +#: templates/dashboard/order/detail.html:109 +msgctxt "Order summary card header" +msgid "Payments" +msgstr "" + +#: templates/dashboard/order/detail.html:115 +msgctxt "Payment status not available" +msgid "N/A" +msgstr "" + +#: templates/dashboard/order/detail.html:125 +msgctxt "Order summary card header" +msgid "Outstanding balance" +msgstr "" + +#: templates/dashboard/order/detail.html:138 +msgctxt "Order summary card header" +msgid "Preauthorized amount" +msgstr "" + +#: templates/dashboard/order/detail.html:144 +msgctxt "Preauthorized amount not available" +msgid "N/A" +msgstr "" + +#: templates/dashboard/order/detail.html:150 +msgctxt "Order summary card header" +msgid "Captured amount" +msgstr "" + +#: templates/dashboard/order/detail.html:164 +msgctxt "Order summary card action" +msgid "Capture" +msgstr "" + +#: templates/dashboard/order/detail.html:169 +msgctxt "Order summary card action" +msgid "Refund" +msgstr "" + +#: templates/dashboard/order/detail.html:174 +msgctxt "Order summary card action" +msgid "Void" +msgstr "" + +#: templates/dashboard/order/detail.html:179 +msgctxt "Order detail action" +msgid "Mark as paid" +msgstr "" + +#: templates/dashboard/order/detail.html:191 +msgctxt "Order details summary header" +msgid "Customer" +msgstr "Viðskiptavinur" + +#: templates/dashboard/order/detail.html:195 +msgctxt "Order customer details action title" +msgid "Edit customer details" +msgstr "" + +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 +#: templates/dashboard/product/product_image/list.html:82 +#: templates/dashboard/product/product_image/list.html:127 +msgctxt "Dashboard edit action" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/order/detail.html:228 +msgctxt "Missing shipping address message" +msgid "No shipping address" +msgstr "" + +#: templates/dashboard/order/detail.html:243 +msgctxt "Order billing address same as shipping address" +msgid "Same as shipping address" +msgstr "" + +#: templates/dashboard/order/detail.html:248 +msgctxt "Missing billing address message" +msgid "No billing address" +msgstr "" + +#: templates/dashboard/order/detail.html:261 +#, python-format +msgctxt "Order table title" +msgid "Order draft #%(order)s" +msgstr "" + +#: templates/dashboard/order/detail.html:265 +#, python-format +msgctxt "Order table title" +msgid "Order #%(order)s" +msgstr "" + +#: templates/dashboard/order/detail.html:271 +msgctxt "Order placed on date" +msgid "Placed on" +msgstr "" + +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 +#: templates/dashboard/order/pdf/packing_slip.html:58 +msgctxt "Order table header" +msgid "Item" +msgstr "" + +#: templates/dashboard/order/detail.html:284 +msgctxt "Order table header" +msgid "Price" +msgstr "Verð" + +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 +#: templates/dashboard/order/pdf/packing_slip.html:64 +msgctxt "Order table header" +msgid "Quantity" +msgstr "Magn" + +#: templates/dashboard/order/detail.html:290 +msgctxt "Order table header" +msgid "Total" +msgstr "Samtals" + +#: templates/dashboard/order/detail.html:305 +#: templates/dashboard/order/fulfillment.html:85 +#, python-format +msgctxt "Order table text" +msgid "SKU: %(sku)s" +msgstr "" + +#: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 +msgctxt "Order table row action" +msgid "Change quantity" +msgstr "" + +#: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 +msgctxt "Order table row action" +msgid "Remove line" +msgstr "Fjarlægja línu" + +#: templates/dashboard/order/detail.html:349 +msgctxt "Order totals action" +msgid "Edit shipping" +msgstr "" + +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 +#, python-format +msgctxt "Order totals header" +msgid "Shipping (%(shipping_name)s)" +msgstr "" + +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 +msgctxt "Order totals header" +msgid "Shipping" +msgstr "" + +#: templates/dashboard/order/detail.html:371 +msgctxt "Order total taxes" +msgid "Taxes (included)" +msgstr "" + +#: templates/dashboard/order/detail.html:373 +msgctxt "Order total taxes" +msgid "Taxes" +msgstr "" + +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 +#, python-format +msgctxt "Order totals header" +msgid "Discount (%(voucher)s)" +msgstr "" + +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 +msgctxt "Order totals header" +msgid "Discount" +msgstr "Afsláttur" + +#: templates/dashboard/order/detail.html:392 +msgctxt "Order totals action" +msgid "Edit voucher" +msgstr "" + +#: templates/dashboard/order/detail.html:393 +msgctxt "Order detail action" +msgid "Edit voucher" +msgstr "" + +#: templates/dashboard/order/detail.html:398 +msgctxt "Order totals action" +msgid "Edit discount" +msgstr "Breyta afslætti" + +#: templates/dashboard/order/detail.html:399 +msgctxt "Order detail action" +msgid "Edit discount" +msgstr "Breyta afslætti" + +#: templates/dashboard/order/detail.html:414 +msgctxt "Order totals header" +msgid "Grand total" +msgstr "" + +#: templates/dashboard/order/detail.html:437 +msgctxt "Order summary card action title" +msgid "Fulfill order" +msgstr "" + +#: templates/dashboard/order/detail.html:438 +msgctxt "Order summary card action" +msgid "Fulfill" +msgstr "" + +#: templates/dashboard/order/detail.html:442 +msgctxt "Order summary card action title" +msgid "Add product to order" +msgstr "" + +#: templates/dashboard/order/detail.html:443 +msgctxt "Order summary card action" +msgid "Add product" +msgstr "" + +#: templates/dashboard/order/detail.html:448 +msgctxt "Order summary card action title" +msgid "Create order" +msgstr "" + +#: templates/dashboard/order/detail.html:449 +msgctxt "Order summary card action" +msgid "Create order" +msgstr "" + +#: templates/dashboard/order/detail.html:455 +msgctxt "Order detail action" +msgid "Invoice" +msgstr "Reikningur" + +#: templates/dashboard/order/detail.html:458 +msgctxt "Order detail action" +msgid "View on site" +msgstr "" + +#: templates/dashboard/order/detail.html:467 +#, python-format +msgctxt "Fulfillment table title" +msgid "Fulfillment #%(fulfillment)s" +msgstr "" + +#: templates/dashboard/order/detail.html:499 +#, python-format +msgctxt "Fulfillment table text" +msgid "Tracking number: %(tracking)s" +msgstr "" + +#: templates/dashboard/order/detail.html:511 +msgctxt "Fulfillment summary card action title" +msgid "Cancel fulfillment" +msgstr "" + +#: templates/dashboard/order/detail.html:512 +msgctxt "Fulfillment summary card action" +msgid "Cancel" +msgstr "Hætta við" + +#: templates/dashboard/order/detail.html:515 +msgctxt "Fulfillment summary card action title" +msgid "Edit tracking number" +msgstr "" + +#: templates/dashboard/order/detail.html:517 +msgctxt "Fulfillment summary card action" +msgid "Edit tracking" +msgstr "" + +#: templates/dashboard/order/detail.html:519 +msgctxt "Fulfillment summary card action" +msgid "Add tracking" +msgstr "" + +#: templates/dashboard/order/detail.html:524 +msgctxt "Order detail action" +msgid "Packing Slips" +msgstr "" + +#: templates/dashboard/order/detail.html:534 +msgctxt "Customer order note card title" +msgid "Customer note" +msgstr "" + +#: templates/dashboard/order/detail.html:540 +msgctxt "No customer order note card message" +msgid "There is no note from the customer associated with this order." +msgstr "" + +#: templates/dashboard/order/detail.html:549 +msgctxt "Order notes card title" +msgid "Order notes" +msgstr "" + +#: templates/dashboard/order/detail.html:562 +msgctxt "Empty order notes card message" +msgid "There are no notes associated with this order." +msgstr "" + +#: templates/dashboard/order/detail.html:568 +msgctxt "Order notes card action" +msgid "Add note" +msgstr "" + +#: templates/dashboard/order/detail.html:583 +msgctxt "Payment history table header" +msgid "Transaction ID" +msgstr "" + +#: templates/dashboard/order/detail.html:586 +msgctxt "Payment history table header" +msgid "Date" +msgstr "Dagsetning" + +#: templates/dashboard/order/detail.html:589 +msgctxt "Payment history table header" +msgid "Payment status" +msgstr "Greiðslustaða" + +#: templates/dashboard/order/detail.html:592 +msgctxt "Payment history table header" +msgid "Amount" +msgstr "Upphæð" + +#: templates/dashboard/order/detail.html:600 +#, python-format +msgctxt "Payment item column data" +msgid "#%(payment_id)s" +msgstr "" + +#: templates/dashboard/order/detail.html:621 +msgctxt "Empty payment history table message" +msgid "No payments made for this order." +msgstr "" + +#: templates/dashboard/order/fulfillment.html:11 +#: templates/dashboard/order/fulfillment.html:42 +msgctxt "Dashboard order fulfillment" +msgid "Fulfill" +msgstr "" + +#: templates/dashboard/order/fulfillment.html:58 +msgctxt "Fulfill order title" +msgid "Fulfill order" +msgstr "" + +#: templates/dashboard/order/fulfillment.html:67 +#: templates/dashboard/order/modal/cancel_line.html:25 +msgctxt "Modal remove order line table header" +msgid "Item" +msgstr "" + +#: templates/dashboard/order/fulfillment.html:70 +#: templates/dashboard/order/modal/cancel_line.html:34 +msgctxt "Modal remove order line table header" +msgid "Quantity" +msgstr "Magn" + +#: templates/dashboard/order/fulfillment.html:105 +#, python-format +msgctxt "Fulfill order table quantity unfulfilled" +msgid "of %(quantity_unfulfilled)s" +msgstr "" + +#: templates/dashboard/order/fulfillment.html:139 +msgctxt "Dashboard update action" +msgid "Fulfill" +msgstr "" + +#: templates/dashboard/order/list.html:19 +msgctxt "Order list add button text" +msgid "Add order" +msgstr "" + +#: templates/dashboard/order/list.html:98 +msgctxt "Empty order list message" +msgid "No orders found." +msgstr "" + +#: templates/dashboard/order/modal/add_variant_to_order.html:11 +#, python-format +msgctxt "Modal order add variant title" +msgid "Add product to %(order)s" +msgstr "" + +#: templates/dashboard/order/modal/add_variant_to_order.html:22 +msgctxt "Modal order add variant primary action" +msgid "Add" +msgstr "Bæta við" + +#: templates/dashboard/order/modal/cancel_fulfillment.html:11 +#, python-format +msgctxt "Modal cancel fulfillment title" +msgid "Cancel fulfillment #%(fulfillment)s" +msgstr "" + +#: templates/dashboard/order/modal/cancel_fulfillment.html:18 +#, python-format +msgctxt "Modal cancel fulfillment text" +msgid "Are you sure you want cancel fulfillment #%(fulfillment)s?" +msgstr "" + +#: templates/dashboard/order/modal/cancel_fulfillment.html:26 +msgctxt "Modal cancel fulfillment cancel action" +msgid "Abort" +msgstr "Hætta við" + +#: templates/dashboard/order/modal/cancel_fulfillment.html:30 +msgctxt "Modal cancel fulfillment primary action" +msgid "Cancel Fulfillment" +msgstr "" + +#: templates/dashboard/order/modal/cancel_line.html:12 +msgctxt "Modal remove order line title" +msgid "Remove order line" +msgstr "" + +#: templates/dashboard/order/modal/cancel_line.html:17 +msgctxt "Modal remove order line text" +msgid "Are you sure you want remove this order line?" +msgstr "" + +#: templates/dashboard/order/modal/cancel_line.html:28 +msgctxt "Modal remove order line table header" +msgid "SKU" +msgstr "VN" + +#: templates/dashboard/order/modal/cancel_line.html:31 +msgctxt "Modal remove order line table header" +msgid "Price" +msgstr "Verð" + +#: templates/dashboard/order/modal/cancel_line.html:37 +msgctxt "Modal remove order line table header" +msgid "Total" +msgstr "Samtals" + +#: templates/dashboard/order/modal/cancel_order.html:11 +msgctxt "Modal cancel order title" +msgid "Cancel order" +msgstr "" + +#: templates/dashboard/order/modal/cancel_order.html:16 +#, python-format +msgctxt "Modal cancel order text" +msgid "Are you sure you want cancel order %(order)s?" +msgstr "" + +#: templates/dashboard/order/modal/cancel_order.html:24 +msgctxt "Modal cancel order cancel action" +msgid "Abort" +msgstr "Hætta við" + +#: templates/dashboard/order/modal/cancel_order.html:28 +msgctxt "Modal cancel order primary action" +msgid "Cancel Order" +msgstr "" + +#: templates/dashboard/order/modal/capture.html:13 +msgctxt "Modal capture payment title" +msgid "Capture payment" +msgstr "" + +#: templates/dashboard/order/modal/capture.html:19 +msgctxt "Modal capture payment title" +msgid "Before this action:" +msgstr "" + +#: templates/dashboard/order/modal/capture.html:21 +msgctxt "Modal capture payment list title" +msgid "Order total:" +msgstr "" + +#: templates/dashboard/order/modal/capture.html:24 +msgctxt "Modal capture payment list title" +msgid "Taxes (included):" +msgstr "" + +#: templates/dashboard/order/modal/capture.html:27 +msgctxt "Modal capture payment list title" +msgid "Captured amount:" +msgstr "" + +#: templates/dashboard/order/modal/capture.html:35 +msgctxt "Modal capture payment primary action" +msgid "Capture" +msgstr "" + +#: templates/dashboard/order/modal/change_quantity.html:11 +msgctxt "Modal change quantity title" +msgid "Change quantity" +msgstr "" + +#: templates/dashboard/order/modal/create_order.html:11 +msgctxt "Modal create order title" +msgid "Create order" +msgstr "" + +#: templates/dashboard/order/modal/create_order.html:16 +#, python-format +msgctxt "Modal create order text" +msgid "" +"Are you sure you want create order %(order)s? Once the order has been " +"created, you will not be able to make changes." +msgstr "" + +#: templates/dashboard/order/modal/create_order.html:26 +msgctxt "Modal create order primary action" +msgid "Create" +msgstr "Stofna" + +#: templates/dashboard/order/modal/edit_customer.html:11 +msgctxt "Modal edit customer title" +msgid "Edit customer details" +msgstr "" + +#: templates/dashboard/order/modal/edit_customer.html:17 +msgctxt "Modal edit customer text" +msgid "" +"Connect an order with an account of an existing customer or provide a " +"contact email address." +msgstr "" + +#: templates/dashboard/order/modal/edit_customer.html:34 +msgctxt "Dashboard edit draft order remove action" +msgid "Remove customer from order" +msgstr "" + +#: templates/dashboard/order/modal/edit_customer.html:40 +msgctxt "Modal edit customer primary action" +msgid "Update" +msgstr "Uppfæra" + +#: templates/dashboard/order/modal/edit_discount.html:11 +msgctxt "Modal edit discount title" +msgid "Edit discount" +msgstr "Breyta afslætti" + +#: templates/dashboard/order/modal/edit_discount.html:21 +msgctxt "Modal edit discount primary action" +msgid "Update" +msgstr "Uppfæra" + +#: templates/dashboard/order/modal/edit_shipping.html:11 +msgctxt "Modal edit shipping title" +msgid "Edit shipping" +msgstr "" + +#: templates/dashboard/order/modal/edit_shipping.html:23 +msgctxt "Dashboard edit draft order remove action" +msgid "Remove shipping from order" +msgstr "" + +#: templates/dashboard/order/modal/edit_shipping.html:29 +msgctxt "Modal edit shipping primary action" +msgid "Update" +msgstr "Uppfæra" + +#: templates/dashboard/order/modal/edit_voucher.html:11 +msgctxt "Modal edit voucher title" +msgid "Edit voucher" +msgstr "" + +#: templates/dashboard/order/modal/edit_voucher.html:23 +msgctxt "Dashboard edit draft order remove action" +msgid "Remove voucher from order" +msgstr "" + +#: templates/dashboard/order/modal/edit_voucher.html:29 +msgctxt "Modal edit voucher primary action" +msgid "Update" +msgstr "Uppfæra" + +#: templates/dashboard/order/modal/fulfillment_tracking.html:12 +msgctxt "Modal change fulfillment tracking title" +msgid "Edit tracking" +msgstr "" + +#: templates/dashboard/order/modal/fulfillment_tracking.html:14 +msgctxt "Modal change fulfillment tracking title" +msgid "Add tracking" +msgstr "" + +#: templates/dashboard/order/modal/fulfillment_tracking.html:27 +msgctxt "Modal change fulfillment tracking primary action" +msgid "Update" +msgstr "Uppfæra" + +#: templates/dashboard/order/modal/fulfillment_tracking.html:29 +msgctxt "Modal change fulfillment tracking primary action" +msgid "Save" +msgstr "Vista" + +#: templates/dashboard/order/modal/mark_as_paid.html:12 +msgctxt "Modal mark order as paid title" +msgid "Mark order as paid" +msgstr "" + +#: templates/dashboard/order/modal/mark_as_paid.html:17 +msgctxt "Modal mark order as paid text" +msgid "Are you sure you want mark order as paid?" +msgstr "" + +#: templates/dashboard/order/modal/mark_as_paid.html:18 +msgctxt "Modal mark order as paid text" +msgid "Total received:" +msgstr "" + +#: templates/dashboard/order/modal/mark_as_paid.html:23 +msgctxt "Modal mark order as paid cancel action" +msgid "Abort" +msgstr "Hætta við" + +#: templates/dashboard/order/modal/mark_as_paid.html:27 +msgctxt "Modal mark order as paid primary action" +msgid "Mark as paid" +msgstr "" + +#: templates/dashboard/order/modal/refund.html:14 +msgctxt "Modal refund payment title" +msgid "Refund payment" +msgstr "" + +#: templates/dashboard/order/modal/refund.html:20 +msgctxt "Modal refund payment title" +msgid "Before this action:" +msgstr "" + +#: templates/dashboard/order/modal/refund.html:22 +msgctxt "Modal refund payment list title" +msgid "Order total:" +msgstr "" + +#: templates/dashboard/order/modal/refund.html:25 +msgctxt "Modal refund payment list title" +msgid "Taxes (included):" +msgstr "" + +#: templates/dashboard/order/modal/refund.html:28 +msgctxt "Modal refund payment list title" +msgid "Captured amount:" +msgstr "" + +#: templates/dashboard/order/modal/refund.html:36 +msgctxt "Modal refund payment primary action" +msgid "Refund" +msgstr "" + +#: templates/dashboard/order/modal/remove_order.html:13 +msgctxt "Modal remove order title" +msgid "Remove draft order" +msgstr "" + +#: templates/dashboard/order/modal/remove_order.html:18 +#, python-format +msgctxt "Modal remove order text" +msgid "Are you sure you want remove draft order %(order)s?" +msgstr "" + +#: templates/dashboard/order/modal/remove_order.html:25 +msgctxt "Modal remove order cancel action" +msgid "Abort" +msgstr "Hætta við" + +#: templates/dashboard/order/modal/remove_order.html:29 +msgctxt "Modal remove order primary action" +msgid "Remove draft order" +msgstr "" + +#: templates/dashboard/order/modal/void.html:11 +msgctxt "Modal void payment text" +msgid "Void payment" +msgstr "" + +#: templates/dashboard/order/modal/void.html:17 +msgctxt "Modal void payment text" +msgid "Do you want to void the payment?" +msgstr "" + +#: templates/dashboard/order/modal/void.html:22 +msgctxt "Modal void payment primary action" +msgid "Void" +msgstr "" + +#: templates/dashboard/order/pdf/base_pdf.html:18 +msgctxt "Order PDF footer page counter" +msgid "\"Page \" counter(page) \"/\" counter(pages)" +msgstr "" + +#: templates/dashboard/order/pdf/base_pdf.html:34 +#, python-format +msgctxt "Order PDF header" +msgid "Order #%(order_id)s" +msgstr "" + +#: templates/dashboard/order/pdf/invoice.html:9 +#, python-format +msgctxt "Invoice title" +msgid "Invoice for Order #%(order_id)s" +msgstr "" + +#: templates/dashboard/order/pdf/invoice.html:15 +msgctxt "Order invoice" +msgid "Invoice" +msgstr "Reikningur" + +#: templates/dashboard/order/pdf/invoice.html:21 +msgctxt "Invoice shipping address" +msgid "Shipping address" +msgstr "Afhendingarstaður" + +#: templates/dashboard/order/pdf/invoice.html:26 +msgctxt "Invoice billing address" +msgid "Billing address" +msgstr "Greiðslustaður" + +#: templates/dashboard/order/pdf/invoice.html:47 +msgctxt "Invoice ordered items header" +msgid "Items Ordered" +msgstr "" + +#: templates/dashboard/order/pdf/invoice.html:54 +msgctxt "Shipment order table header" +msgid "Item" +msgstr "" + +#: templates/dashboard/order/pdf/invoice.html:58 +msgctxt "Shipment order table header" +msgid "SKU" +msgstr "VN" + +#: templates/dashboard/order/pdf/invoice.html:61 +msgctxt "Shipment order table header" +msgid "Tax rate" +msgstr "" + +#: templates/dashboard/order/pdf/invoice.html:64 +msgctxt "Shipment order table header" +msgid "Gross price" +msgstr "Brúttóverð" + +#: templates/dashboard/order/pdf/invoice.html:67 +msgctxt "Shipment order table header" +msgid "Quantity" +msgstr "Magn" + +#: templates/dashboard/order/pdf/invoice.html:70 +msgctxt "Shipment order table header" +msgid "Total" +msgstr "Samtals" + +#: templates/dashboard/order/pdf/invoice.html:84 +#, python-format +msgctxt "Order line tax rate value" +msgid "" +"\n" +" %(tax_rate)s %%\n" +" " +msgstr "" + +#: templates/dashboard/order/pdf/invoice.html:107 +msgctxt "Order subtotal net price" +msgid "Subtotal" +msgstr "Millisumma" + +#: templates/dashboard/order/pdf/invoice.html:115 +msgctxt "Order total shipping price header" +msgid "Shipping" +msgstr "" + +#: templates/dashboard/order/pdf/invoice.html:123 +msgctxt "Order total taxes header" +msgid "Total taxes (included)" +msgstr "" + +#: templates/dashboard/order/pdf/invoice.html:132 +msgctxt "Order voucher header" +msgid "Discount" +msgstr "Afsláttur" + +#: templates/dashboard/order/pdf/invoice.html:143 +msgctxt "Order total price header" +msgid "Grand total" +msgstr "" + +#: templates/dashboard/order/pdf/packing_slip.html:8 +#, python-format +msgctxt "Packing slips title" +msgid "Packing Slips for Fulfillment #%(fulfillment)s" +msgstr "" + +#: templates/dashboard/order/pdf/packing_slip.html:14 +msgctxt "Packing slips header" +msgid "Packing Slips" +msgstr "" + +#: templates/dashboard/order/pdf/packing_slip.html:20 +msgctxt "Packing slip shipping details" +msgid "Shipping Details" +msgstr "" + +#: templates/dashboard/order/pdf/packing_slip.html:24 +msgctxt "Packing slip shipping details" +msgid "Billing Details" +msgstr "" + +#: templates/dashboard/order/pdf/packing_slip.html:34 +msgctxt "Packing slip shipping address" +msgid "Shipping address" +msgstr "Afhendingarstaður" + +#: templates/dashboard/order/pdf/packing_slip.html:43 +msgctxt "Packing slip billing address" +msgid "Billing address" +msgstr "Greiðslustaður" + +#: templates/dashboard/order/pdf/packing_slip.html:52 +msgctxt "Order invoice" +msgid "Items Ordered" +msgstr "" + +#: templates/dashboard/order/pdf/packing_slip.html:61 +msgctxt "Order table header" +msgid "SKU" +msgstr "VN" + +#: templates/dashboard/order/zero_page.html:5 +msgid "No orders found." +msgstr "" + +#: templates/dashboard/order/zero_page.html:8 +msgid "" +"\n" +" Orders will appear here after customers complete the checkout.\n" +" " +msgstr "" + +#: templates/dashboard/page/detail.html:8 templates/dashboard/page/list.html:8 +msgctxt "Pages list page title" +msgid "Pages" +msgstr "Síður" + +#: templates/dashboard/page/detail.html:17 +msgctxt "Pages form breadcrumbs" +msgid "Pages" +msgstr "Síður" + +#: templates/dashboard/page/detail.html:43 +msgctxt "Page URL" +msgid "Page URL" +msgstr "" + +#: templates/dashboard/page/detail.html:49 +msgctxt "Page action" +msgid "Edit page" +msgstr "" + +#: templates/dashboard/page/detail.html:52 +msgctxt "Page action" +msgid "Remove page" +msgstr "" + +#: templates/dashboard/page/detail.html:55 +msgctxt "Page action" +msgid "View on site" +msgstr "" + +#: templates/dashboard/page/form.html:8 +msgctxt "Page form page title" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/page/form.html:10 +msgctxt "Page form page title" +msgid "Add new page" +msgstr "" + +#: templates/dashboard/page/form.html:26 +msgctxt "Dashboard pages list" +msgid "Pages" +msgstr "Síður" + +#: templates/dashboard/page/form.html:41 +msgctxt "Page form breadcrumbs" +msgid "Add new page" +msgstr "" + +#: templates/dashboard/page/form.html:48 +msgctxt "Page form breadcrumbs" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/page/form.html:82 templates/dashboard/page/form.html:85 +msgid "Cancel" +msgstr "Hætta við" + +#: templates/dashboard/page/form.html:83 +msgid "Save" +msgstr "Vista" + +#: templates/dashboard/page/form.html:86 +msgid "Create" +msgstr "Stofna" + +#: templates/dashboard/page/list.html:17 +msgctxt "Page list add button text" +msgid "Add page" +msgstr "" + +#: templates/dashboard/page/list.html:25 +msgid "Pages" +msgstr "Síður" + +#: templates/dashboard/page/list.html:40 +msgctxt "Static pages table header name" +msgid "Title" +msgstr "Titill" + +#: templates/dashboard/page/list.html:43 +msgctxt "Static pages table header url" +msgid "URL" +msgstr "SLÓÐ" + +#: templates/dashboard/page/list.html:46 +msgctxt "Pages table header" +msgid "Visibility" +msgstr "" + +#: templates/dashboard/page/list.html:76 +msgctxt "Empty pages list message" +msgid "No pages found." +msgstr "" + +#: templates/dashboard/page/modal_delete.html:12 +#, python-format +msgctxt "Modal remove page text" +msgid "Remove page %(page)s" +msgstr "" + +#: templates/dashboard/page/modal_delete.html:19 +#, python-format +msgctxt "Modal remove page text" +msgid "Are you sure you want to remove page %(page)s?" +msgstr "" + +#: templates/dashboard/page/zero_page.html:5 +msgid "No pages found." +msgstr "" + +#: templates/dashboard/page/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Pages allows to create custom static pages such as \"About us\" that will be displayed at particular url.
\n" +" You can create pages by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/product/attribute/detail.html:18 +msgctxt "Attribute detail breadcrumbs" +msgid "Attributes" +msgstr "" + +#: templates/dashboard/product/attribute/detail.html:46 +msgid "Product type" +msgstr "Gerð vöru" + +#: templates/dashboard/product/attribute/detail.html:53 +msgctxt "Attribute detail action" +msgid "Edit attribute" +msgstr "" + +#: templates/dashboard/product/attribute/detail.html:56 +msgctxt "Attribute detail action" +msgid "Remove attribute" +msgstr "" + +#: templates/dashboard/product/attribute/detail.html:64 +msgid "Attribute values" +msgstr "" + +#: templates/dashboard/product/attribute/detail.html:77 +msgid "Display name" +msgstr "Birta nafn" + +#: templates/dashboard/product/attribute/detail.html:92 +#: templates/dashboard/shipping/methods/_shipping_methods_table.html:39 +msgctxt "Attribute value edit action" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/attribute/detail.html:95 +msgctxt "Attribute value edit action" +msgid "Remove" +msgstr "Fjarlægja" + +#: templates/dashboard/product/attribute/detail.html:101 +msgctxt "Empty list of attribute values" +msgid "No attribute values" +msgstr "" + +#: templates/dashboard/product/attribute/form.html:8 +#: templates/dashboard/product/attribute/values/form.html:8 +msgctxt "Dashboard attributes list" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/attribute/form.html:10 +#: templates/dashboard/product/attribute/values/form.html:10 +msgctxt "Attribute detail page title" +msgid "Add new attribute" +msgstr "" + +#: templates/dashboard/product/attribute/form.html:45 +#: templates/dashboard/product/attribute/values/form.html:47 +msgctxt "Attribute detail breadcrumbs" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/attribute/form.html:51 +#: templates/dashboard/product/attribute/values/form.html:53 +msgctxt "Attribute detail breadcrumbs" +msgid "Add new attribute" +msgstr "" + +#: templates/dashboard/product/attribute/list.html:17 +msgctxt "Attribute list add button text" +msgid "Add attribute" +msgstr "" + +#: templates/dashboard/product/attribute/list.html:42 +msgctxt "Dashboard attributes list table header name" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/product/attribute/list.html:44 +msgctxt "Name of product type related to the attribute" +msgid "Product type" +msgstr "Gerð vöru" + +#: templates/dashboard/product/attribute/list.html:46 +msgctxt "Dashboard attributes list table header values" +msgid "Values" +msgstr "" + +#: templates/dashboard/product/attribute/list.html:76 +msgctxt "Empty attribute list message" +msgid "No attributes found." +msgstr "" + +#: templates/dashboard/product/attribute/modal/attribute_confirm_delete.html:12 +#, python-format +msgctxt "Modal remove attribute text" +msgid "Remove attribute %(attribute)s" +msgstr "" + +#: templates/dashboard/product/attribute/modal/attribute_confirm_delete.html:19 +#, python-format +msgctxt "Modal remove attribute text" +msgid "" +"Are you sure you want to remove attribute %(attribute)s?" +msgstr "" + +#: templates/dashboard/product/attribute/values/form.html:70 +msgctxt "Attribute values form title" +msgid "Attribute values" +msgstr "" + +#: templates/dashboard/product/attribute/values/modal/confirm_delete.html:12 +#, python-format +msgctxt "Modal delete attribute text" +msgid "Delete attribute value %(value)s" +msgstr "" + +#: templates/dashboard/product/attribute/values/modal/confirm_delete.html:19 +#, python-format +msgctxt "Modal delete attribute text" +msgid "" +"Are you sure you want to remove attribute value %(value)s?" +msgstr "" + +#: templates/dashboard/product/attribute/zero_page.html:5 +#: templates/dashboard/product/product_variant/form.html:82 +msgid "No attributes found." +msgstr "" + +#: templates/dashboard/product/attribute/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Attributes are used to define custom properties of products and variants, that can be used for filtering purposes in the storefront.
\n" +" You can add attributes by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/product/detail.html:19 +#: templates/dashboard/product/product_variant/detail.html:20 +msgctxt "Product form breadcrumbs" +msgid "Products" +msgstr "Vörur" + +#: templates/dashboard/product/detail.html:54 +msgctxt "Product field" +msgid "Published" +msgstr "Birt" + +#: templates/dashboard/product/detail.html:56 +msgctxt "Product field" +msgid "Draft" +msgstr "Drög" + +#: templates/dashboard/product/detail.html:77 +msgctxt "Product action" +msgid "Edit product" +msgstr "" + +#: templates/dashboard/product/detail.html:80 +msgctxt "Product action" +msgid "Remove product" +msgstr "" + +#: templates/dashboard/product/detail.html:83 +msgctxt "Product action" +msgid "View on site" +msgstr "" + +#: templates/dashboard/product/detail.html:90 +msgid "Variant" +msgstr "Afbrigði" + +#: templates/dashboard/product/detail.html:99 +msgid "SKU" +msgstr "VN" + +#: templates/dashboard/product/detail.html:100 +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/product/detail.html:101 +msgid "Status" +msgstr "Staða" + +#: templates/dashboard/product/detail.html:104 +msgid "Gross price" +msgstr "Brúttóverð" + +#: templates/dashboard/product/detail.html:106 +msgid "Net price" +msgstr "Nettóverð" + +#: templates/dashboard/product/detail.html:109 +msgid "Margin" +msgstr "" + +#: templates/dashboard/product/detail.html:132 +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/detail.html:136 +msgctxt "Dashboard product details page" +msgid "No variants found" +msgstr "" + +#: templates/dashboard/product/detail.html:152 +#: templates/dashboard/product/product_variant/detail.html:77 +msgctxt "Product pricing card header" +msgid "Pricing" +msgstr "" + +#: templates/dashboard/product/detail.html:156 +#, python-format +msgctxt "Product pricing card header subtitle" +msgid "Taxes are charged (%(tax_rate)s tax rate)" +msgstr "" + +#: templates/dashboard/product/detail.html:160 +msgctxt "Product pricing card header subtitle" +msgid "Taxes are not charged" +msgstr "" + +#: templates/dashboard/product/detail.html:171 +#: templates/dashboard/product/product_variant/detail.html:87 +msgctxt "Product field" +msgid "Gross sale price" +msgstr "" + +#: templates/dashboard/product/detail.html:173 +#: templates/dashboard/product/product_variant/detail.html:89 +msgctxt "Product field" +msgid "Net sale price" +msgstr "" + +#: templates/dashboard/product/detail.html:184 +#: templates/dashboard/product/product_variant/detail.html:100 +msgctxt "Product field" +msgid "Gross discounted price" +msgstr "" + +#: templates/dashboard/product/detail.html:186 +#: templates/dashboard/product/product_variant/detail.html:102 +msgctxt "Product field" +msgid "Net discounted price" +msgstr "" + +#: templates/dashboard/product/detail.html:197 +#: templates/dashboard/product/product_variant/detail.html:113 +msgctxt "Product field" +msgid "Gross purchase cost" +msgstr "" + +#: templates/dashboard/product/detail.html:199 +#: templates/dashboard/product/product_variant/detail.html:115 +msgctxt "Product field" +msgid "Net purchase cost" +msgstr "" + +#: templates/dashboard/product/detail.html:208 +#: templates/dashboard/product/product_variant/detail.html:128 +msgctxt "Product field" +msgid "Margin" +msgstr "" + +#: templates/dashboard/product/detail.html:231 +#: templates/dashboard/product/product_variant/detail.html:146 +msgctxt "Product variant inventory card header" +msgid "Inventory" +msgstr "" + +#: templates/dashboard/product/detail.html:240 +#: templates/dashboard/product/product_variant/detail.html:155 +msgctxt "Dashboard variant details view" +msgid "Number in stock" +msgstr "Fjöldi á lager" + +#: templates/dashboard/product/detail.html:248 +#: templates/dashboard/product/product_variant/detail.html:163 +msgctxt "Dashboard variant details view" +msgid "Allocated" +msgstr "" + +#: templates/dashboard/product/detail.html:261 +#: templates/dashboard/product/product_image/list.html:7 +#: templates/dashboard/product/product_image/list.html:41 +msgid "Images" +msgstr "" + +#: templates/dashboard/product/detail.html:271 +msgid "Edit images" +msgstr "" + +#: templates/dashboard/product/form.html:8 +msgctxt "Dashboard products list" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/form.html:10 +msgctxt "Product form page title" +msgid "Add new product" +msgstr "" + +#: templates/dashboard/product/form.html:43 +msgctxt "Product form breadcrumbs" +msgid "Add new product" +msgstr "" + +#: templates/dashboard/product/form.html:50 +msgctxt "Product form breadcrumbs" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/form.html:111 +#: templates/dashboard/product/product_type/form.html:103 +#: templates/dashboard/product/product_variant/form.html:85 +msgid "Shipping" +msgstr "" + +#: templates/dashboard/product/form.html:115 +#: templates/dashboard/product/product_variant/form.html:76 +msgid "Attributes" +msgstr "" + +#: templates/dashboard/product/form.html:118 +#, python-format +msgid "" +"\n" +" Product Type: %(product_type_name)s\n" +" " +msgstr "" + +#: templates/dashboard/product/list.html:21 +#: templates/dashboard/product/list.html:25 +msgctxt "Product list add button text" +msgid "Add product" +msgstr "" + +#: templates/dashboard/product/list.html:61 +msgctxt "Products list table header" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/product/list.html:64 +msgctxt "Products list table header" +msgid "Price" +msgstr "Verð" + +#: templates/dashboard/product/list.html:101 +msgctxt "Empty product list message" +msgid "No products found." +msgstr "" + +#: templates/dashboard/product/modal/confirm_delete.html:12 +#, python-format +msgctxt "Modal remove product text" +msgid "Remove product %(product)s" +msgstr "" + +#: templates/dashboard/product/modal/confirm_delete.html:19 +#, python-format +msgctxt "Modal remove product text" +msgid "Are you sure you want to remove product %(product)s?" +msgstr "" + +#: templates/dashboard/product/modal/select_type.html:11 +msgctxt "Modal select product types title" +msgid "Product type" +msgstr "Gerð vöru" + +#: templates/dashboard/product/modal/select_type.html:19 +msgctxt "Dashboard add action" +msgid "Create" +msgstr "Stofna" + +#: templates/dashboard/product/product_image/form.html:8 +msgctxt "Image form text" +msgid "Edit - Image" +msgstr "" + +#: templates/dashboard/product/product_image/form.html:10 +msgctxt "Image form text" +msgid "Add image" +msgstr "" + +#: templates/dashboard/product/product_image/form.html:38 +msgctxt "Image form text" +msgid "Image" +msgstr "Mynd" + +#: templates/dashboard/product/product_image/form.html:43 +msgctxt "Image form text" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/product_image/form.html:49 +msgctxt "Image form breadcrumbs" +msgid "Add image" +msgstr "" + +#: templates/dashboard/product/product_image/form.html:52 +#, python-format +msgctxt "Image form breadcrumbs" +msgid "Add image for %(product)s" +msgstr "" + +#: templates/dashboard/product/product_image/list.html:19 +msgctxt "Add image button text" +msgid "Add image" +msgstr "" + +#: templates/dashboard/product/product_image/list.html:73 +msgctxt "Image card text" +msgid "No description" +msgstr "" + +#: templates/dashboard/product/product_image/list.html:87 +#: templates/dashboard/product/product_image/list.html:131 +msgctxt "Dashboard remove action" +msgid "Remove" +msgstr "Fjarlægja" + +#: templates/dashboard/product/product_image/list.html:101 +msgctxt "Image gallery upload box text" +msgid "Drop images here to upload" +msgstr "" + +#: templates/dashboard/product/product_image/list.html:120 +msgctxt "Empty image gallery message" +msgid "No description" +msgstr "" + +#: templates/dashboard/product/product_image/modal/confirm_delete.html:12 +msgctxt "Modal remove image text" +msgid "Remove product image" +msgstr "" + +#: templates/dashboard/product/product_image/modal/confirm_delete.html:20 +msgctxt "Modal remove image text" +msgid "Are you sure you want to remove product image?" +msgstr "" + +#: templates/dashboard/product/product_image/versatile_image.html:7 +msgid "Primary Point of Interest" +msgstr "" + +#: templates/dashboard/product/product_image/versatile_image.html:10 +msgctxt "Image form text" +msgid "Pick the most relevant part of the image using the red circle." +msgstr "" + +#: templates/dashboard/product/product_type/form.html:10 +msgctxt "Product type page title" +msgid "Add new product type" +msgstr "" + +#: templates/dashboard/product/product_type/form.html:41 +msgctxt "Product type breadcrumbs" +msgid "Add new product type" +msgstr "" + +#: templates/dashboard/product/product_type/form.html:57 +msgctxt "Product type action" +msgid "Remove product type" +msgstr "" + +#: templates/dashboard/product/product_type/form.html:95 +msgid "Taxes" +msgstr "" + +#: templates/dashboard/product/product_type/form.html:132 +msgctxt "Product type help text" +msgid "" +"Product Type is a template used for creating new products. It also controls " +"which attributes can be used during product creation process." +msgstr "" + +#: templates/dashboard/product/product_type/list.html:18 +msgctxt "Product type list add button text" +msgid "Add product type" +msgstr "" + +#: templates/dashboard/product/product_type/list.html:44 +msgctxt "Dashboard product types list table header name" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/product/product_type/list.html:48 +msgctxt "Product type item list text" +msgid "Product attributes" +msgstr "" + +#: templates/dashboard/product/product_type/list.html:51 +msgctxt "Product type item list text" +msgid "Variant attributes" +msgstr "" + +#: templates/dashboard/product/product_type/list.html:89 +msgctxt "Empty product type list message" +msgid "No product types found." +msgstr "" + +#: templates/dashboard/product/product_type/modal/confirm_delete.html:13 +#, python-format +msgctxt "Modal remove product type text" +msgid "Remove product type %(product_type)s" +msgstr "" + +#: templates/dashboard/product/product_type/modal/confirm_delete.html:21 +#, python-format +msgctxt "Modal remove product type text" +msgid "" +"Are you sure you want to remove product type " +"%(product_type)s?" +msgstr "" + +#: templates/dashboard/product/product_type/modal/confirm_delete.html:27 +#, python-format +msgctxt "Modal remove product type text" +msgid "There are %(product_count)s products in product type." +msgstr "" + +#: templates/dashboard/product/product_type/modal/confirm_delete.html:31 +msgctxt "Modal remove product type text" +msgid "There are no products in this product type." +msgstr "" + +#: templates/dashboard/product/product_type/zero_page.html:5 +msgid "No product types found." +msgstr "" + +#: templates/dashboard/product/product_type/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Product types are templates used to create new products. They allow assigning custom attributes to the products of the same type.
\n" +" You can add product types by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/product/product_variant/detail.html:52 +msgctxt "Dashboard variant details view" +msgid "SKU" +msgstr "VN" + +#: templates/dashboard/product/product_variant/detail.html:62 +msgctxt "Dashboard action" +msgid "Edit variant" +msgstr "" + +#: templates/dashboard/product/product_variant/detail.html:65 +msgctxt "Dashboard action" +msgid "Remove variant" +msgstr "" + +#: templates/dashboard/product/product_variant/detail.html:175 +msgctxt "Dashboard variant details view" +msgid "Variant Images" +msgstr "" + +#: templates/dashboard/product/product_variant/detail.html:183 +msgid "No images" +msgstr "" + +#: templates/dashboard/product/product_variant/detail.html:190 +msgctxt "Dashboard action" +msgid "Select images" +msgstr "" + +#: templates/dashboard/product/product_variant/form.html:8 +msgctxt "Variant form page title" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/product_variant/form.html:10 +msgctxt "Variant form page title" +msgid "Add variant" +msgstr "" + +#: templates/dashboard/product/product_variant/form.html:47 +msgctxt "Variant form breadcrumbs" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/product/product_variant/form.html:53 +msgctxt "Variant form breadcrumbs" +msgid "Add variant" +msgstr "" + +#: templates/dashboard/product/product_variant/form.html:56 +#, python-format +msgctxt "Variant form breadcrumbs" +msgid "Add variant for %(product)s" +msgstr "" + +#: templates/dashboard/product/product_variant/modal/confirm_delete.html:13 +#, python-format +msgctxt "Dashboard confirmation modal" +msgid "" +"\n" +" Remove variant %(variant)s\n" +msgstr "" + +#: templates/dashboard/product/product_variant/modal/confirm_delete.html:21 +#, python-format +msgctxt "Dashboard confirmation modal" +msgid "" +"\n" +" Are you sure you want to remove variant %(variant)s of product %(product)s?\n" +" " +msgstr "" + +#: templates/dashboard/product/product_variant/modal/confirm_delete.html:27 +msgctxt "Dashboard confirmation modal" +msgid "" +"This is the only variant of this product. If you remove it, the product will" +" become unavailable." +msgstr "" + +#: templates/dashboard/product/product_variant/modal/select_images.html:14 +msgctxt "Dashboard variant images modal" +msgid "Select variant images" +msgstr "" + +#: templates/dashboard/product/product_variant/modal/select_images.html:24 +msgctxt "Dashboard modal action" +msgid "Save" +msgstr "Vista" + +#: templates/dashboard/product/zero_page.html:5 +msgid "No products found." +msgstr "" + +#: templates/dashboard/product/zero_page.html:10 +#, python-format +msgid "" +"\n" +" You can create products by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/product/zero_page.html:14 +#, python-format +msgid "" +"\n" +" In order to create products, you have to first add a product type .\n" +" " +msgstr "" + +#: templates/dashboard/search/results.html:9 templates/search/results.html:6 +msgctxt "Search page title" +msgid "Search results" +msgstr "" + +#: templates/dashboard/search/results.html:14 +msgctxt "Dashboard search" +msgid "Search results" +msgstr "" + +#: templates/dashboard/search/results.html:25 +msgctxt "Search results list products" +msgid "Products" +msgstr "Vörur" + +#: templates/dashboard/search/results.html:47 +msgctxt "Search results list orders" +msgid "Orders" +msgstr "Pantanir" + +#: templates/dashboard/search/results.html:54 +#, python-format +msgctxt "Dashboard order" +msgid "Order #%(order_number)s" +msgstr "" + +#: templates/dashboard/search/results.html:60 +#, python-format +msgctxt "Dashboard customer" +msgid "Customer: %(email)s" +msgstr "" + +#: templates/dashboard/search/results.html:65 +#, python-format +msgctxt "Dashboard order info" +msgid "Placed on: %(placed)s" +msgstr "" + +#: templates/dashboard/search/results.html:76 +msgctxt "Search results list users" +msgid "Users" +msgstr "" + +#: templates/dashboard/search/results.html:83 +#, python-format +msgctxt "Dashboard user" +msgid "User %(full_name)s" +msgstr "" + +#: templates/dashboard/search/results.html:100 +#, python-format +msgctxt "No Search result message" +msgid "No results for query \"%(query)s\"." +msgstr "" + +#: templates/dashboard/shipping/detail.html:19 +msgctxt "Shipping zone form breadcrumbs" +msgid "Shipping zones" +msgstr "" + +#: templates/dashboard/shipping/detail.html:39 +#, python-format +msgid "" +"\n" +" %(shipping_name)s (ships to %(list_of_countries)s)\n" +" " +msgstr "" + +#: templates/dashboard/shipping/detail.html:46 +msgctxt "Shipping zone action" +msgid "Edit shipping zone" +msgstr "" + +#: templates/dashboard/shipping/detail.html:49 +msgctxt "Shipping zone action" +msgid "Remove shipping zone" +msgstr "" + +#: templates/dashboard/shipping/detail.html:54 +msgctxt "Title of the shipping methods list" +msgid "Price based shipping" +msgstr "" + +#: templates/dashboard/shipping/detail.html:55 +msgctxt "Title of the shipping methods list" +msgid "Weight based shipping" +msgstr "" + +#: templates/dashboard/shipping/form.html:9 +msgctxt "Dashboard shipping zones" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/shipping/form.html:11 +#: templates/dashboard/shipping/form.html:24 +msgctxt "Shipping zone form page title" +msgid "Add new shipping zone" +msgstr "" + +#: templates/dashboard/shipping/form.html:32 +msgctxt "Dashboard shipping zone" +msgid "Shipping zones" +msgstr "" + +#: templates/dashboard/shipping/form.html:48 +msgctxt "Shipping zone form page title" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/shipping/form.html:54 +msgctxt "Shipping zone form breadcrumbs" +msgid "Add new shipping zone" +msgstr "" + +#: templates/dashboard/shipping/list.html:10 +#: templates/dashboard/shipping/list.html:20 +msgctxt "Dashboard shipping zones list" +msgid "Shipping zones" +msgstr "" + +#: templates/dashboard/shipping/list.html:27 +msgctxt "Shipping zone list add button text" +msgid "Add shipping zone" +msgstr "" + +#: templates/dashboard/shipping/list.html:42 +msgctxt "Shipping zones table header, name of the shipping zone" +msgid "Shipping zone" +msgstr "" + +#: templates/dashboard/shipping/list.html:46 +msgctxt "" +"Shipping zones table header, price range of shipping methods within shipping" +" zone" +msgid "Price range" +msgstr "Verðbil" + +#: templates/dashboard/shipping/list.html:49 +msgctxt "" +"Shipping zones table header, list of countries within of shipping zone" +msgid "Countries" +msgstr "Lönd" + +#: templates/dashboard/shipping/list.html:83 +msgctxt "Empty shipping list message" +msgid "No shipping zones found." +msgstr "" + +#: templates/dashboard/shipping/list.html:95 +msgid "Default Weight Unit" +msgstr "" + +#: templates/dashboard/shipping/methods/_shipping_methods_table.html:21 +msgctxt "Header of the shipping methods list" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/shipping/methods/_shipping_methods_table.html:24 +msgctxt "Header of the shipping methods list" +msgid "Range" +msgstr "" + +#: templates/dashboard/shipping/methods/_shipping_methods_table.html:27 +msgctxt "Header of the shipping methods list" +msgid "Price" +msgstr "Verð" + +#: templates/dashboard/shipping/methods/_shipping_methods_table.html:42 +msgctxt "Attribute value remove action" +msgid "Remove" +msgstr "Fjarlægja" + +#: templates/dashboard/shipping/methods/_shipping_methods_table.html:48 +msgctxt "Empty list of shipping methods prices" +msgid "No shipping methods" +msgstr "" + +#: templates/dashboard/shipping/methods/form.html:8 +msgctxt "Dashboard shipping method edit page" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/shipping/methods/form.html:10 +msgctxt "Shipping method edit page title" +msgid "Add new shipping method" +msgstr "" + +#: templates/dashboard/shipping/methods/form.html:31 +msgctxt "Dashboard attributes list" +msgid "Shipping zones" +msgstr "" + +#: templates/dashboard/shipping/methods/form.html:49 +msgctxt "Shipping method breadcrumbs" +msgid "Edit shipping method" +msgstr "" + +#: templates/dashboard/shipping/methods/form.html:55 +msgctxt "Shipping method breadcrumbs" +msgid "Add shipping method" +msgstr "" + +#: templates/dashboard/shipping/methods/form.html:72 +msgctxt "Shipping method form title" +msgid "Shipping method" +msgstr "Sendingaraðferð" + +#: templates/dashboard/shipping/modal/confirm_delete.html:13 +#, python-format +msgctxt "Dashboard confirmation modal" +msgid "" +"\n" +"Remove shipping zone %(shipping_zone)s\n" +msgstr "" + +#: templates/dashboard/shipping/modal/confirm_delete.html:20 +#, python-format +msgctxt "Dashboard confirmation modal" +msgid "" +"\n" +" Are you sure you want to remove shipping zone %(shipping_zone)s?\n" +" " +msgstr "" + +#: templates/dashboard/shipping/modal/method_confirm_delete.html:12 +#, python-format +msgctxt "Modal remove shipping method title" +msgid "Remove shipping method %(shipping_method)s" +msgstr "" + +#: templates/dashboard/shipping/modal/method_confirm_delete.html:19 +#, python-format +msgctxt "Modal remove shipping method shipping method text" +msgid "" +"Are you sure you want to remove shipping method " +"%(shipping_method)s?" +msgstr "" + +#: templates/dashboard/shipping/zero_page.html:5 +msgid "No shipping zones found." +msgstr "" + +#: templates/dashboard/shipping/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Shipping zones allows defining shipping zones that are available in the shop.
\n" +" You can add shipping zones by using the button.\n" +" " +msgstr "" + +#: templates/dashboard/sites/authorization_keys/form.html:8 +msgctxt "Dashboard authorization key list" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/sites/authorization_keys/form.html:10 +msgctxt "Add new authorization key page title" +msgid "Add new authorization key" +msgstr "" + +#: templates/dashboard/sites/authorization_keys/form.html:29 +msgctxt "Dashboard site setting detail" +msgid "Site settings" +msgstr "" + +#: templates/dashboard/sites/authorization_keys/form.html:40 +msgctxt "Authorization key breadcrumbs" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/sites/authorization_keys/form.html:46 +msgctxt "Authorization key breadcrumbs" +msgid "Add new authorization key" +msgstr "" + +#: templates/dashboard/sites/authorization_keys/form.html:63 +msgctxt "Authorization key form title" +msgid "Authorization key" +msgstr "" + +#: templates/dashboard/sites/detail.html:35 +msgctxt "Site settings field" +msgid "Domain" +msgstr "" + +#: templates/dashboard/sites/detail.html:45 +msgctxt "Site settings field" +msgid "Header text" +msgstr "" + +#: templates/dashboard/sites/detail.html:55 +msgctxt "Site settings field" +msgid "Description" +msgstr "Lýsing" + +#: templates/dashboard/sites/detail.html:65 +msgctxt "Site settings action" +msgid "Edit site settings" +msgstr "" + +#: templates/dashboard/sites/detail.html:74 +msgctxt "Title of the authorization keys list" +msgid "Authorization keys" +msgstr "" + +#: templates/dashboard/sites/detail.html:87 +msgctxt "Header of authorization keys list" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/sites/detail.html:90 +msgctxt "Header of authorization keys list" +msgid "Key" +msgstr "" + +#: templates/dashboard/sites/detail.html:101 +msgctxt "Authorization key edit action" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/sites/detail.html:104 +msgctxt "Authorization key remove action" +msgid "Remove" +msgstr "Fjarlægja" + +#: templates/dashboard/sites/detail.html:110 +msgctxt "Empty list of authorization keys" +msgid "No authorization keys" +msgstr "" + +#: templates/dashboard/sites/form.html:9 +#: templates/dashboard/taxes/form.html:10 +msgctxt "Site settings page title" +msgid "Add new site settings" +msgstr "" + +#: templates/dashboard/sites/form.html:22 +msgctxt "Dashboard attributes list" +msgid "Site settings" +msgstr "" + +#: templates/dashboard/sites/form.html:27 +msgctxt "Dashboard site settings" +msgid "Edit" +msgstr "Breyta" + +#: templates/dashboard/sites/modal/confirm_delete.html:12 +#, python-format +msgctxt "Modal delete authorization key text" +msgid "Delete authorization key %(key)s" +msgstr "" + +#: templates/dashboard/sites/modal/confirm_delete.html:19 +#, python-format +msgctxt "Modal delete authorization key text" +msgid "" +"Are you sure you want to remove authorization key %(key)s?" +msgstr "" + +#: templates/dashboard/staff/detail.html:10 +msgctxt "Dashboard add staff member" +msgid "Add new staff member" +msgstr "" + +#: templates/dashboard/staff/detail.html:12 +msgctxt "Dashboard staff" +msgid "Staff" +msgstr "" + +#: templates/dashboard/staff/detail.html:28 +msgctxt "Dashboard staff list" +msgid "Staff" +msgstr "" + +#: templates/dashboard/staff/detail.html:36 +msgctxt "Dashboard add staff member action" +msgid "Add staff member" +msgstr "" + +#: templates/dashboard/staff/detail.html:48 +msgctxt "Staff member form action" +msgid "Remove staff member" +msgstr "" + +#: templates/dashboard/staff/detail.html:62 +msgctxt "Staff member details header" +msgid "Staff member details" +msgstr "" + +#: templates/dashboard/staff/list.html:8 +#: templates/dashboard/staff/list.html:28 +msgctxt "Dashboard staff members list" +msgid "Staff" +msgstr "" + +#: templates/dashboard/staff/list.html:18 +msgctxt "Staff members list add button text" +msgid "Add staff member" +msgstr "" + +#: templates/dashboard/staff/list.html:42 +msgctxt "Staff members table header" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/staff/list.html:45 +msgctxt "Staff members table header" +msgid "Email" +msgstr "Netfang" + +#: templates/dashboard/staff/list.html:48 +msgctxt "Staff members table header" +msgid "Location" +msgstr "Staðsetning" + +#: templates/dashboard/staff/list.html:88 +msgctxt "Empty staff table message" +msgid "No staff members found." +msgstr "" + +#: templates/dashboard/staff/modal/confirm_delete.html:12 +#, python-format +msgctxt "Modal remove group text" +msgid "Remove staff member %(staff)s" +msgstr "" + +#: templates/dashboard/staff/modal/confirm_delete.html:19 +msgctxt "Modal remove group text" +msgid "Are you sure you want to remove staff member?" +msgstr "" + +#: templates/dashboard/staff/zero_page.html:5 +msgid "No staff members found." +msgstr "" + +#: templates/dashboard/staff/zero_page.html:8 +#, python-format +msgid "" +"\n" +" Staff members are users who have access to the dashboard.
\n" +" You can create staff members by using the button or by using option \"Promote to staff\" in the customer details view.\n" +" " +msgstr "" + +#: templates/dashboard/taxes/details.html:18 +msgctxt "Tax details breadcrumbs" +msgid "Taxes" +msgstr "" + +#: templates/dashboard/taxes/details.html:40 +#, python-format +msgctxt "Country tax rates list title" +msgid "Tax rates in %(country_name)s" +msgstr "" + +#: templates/dashboard/taxes/details.html:50 +msgctxt "Country tax rates list header" +msgid "Name" +msgstr "Nafn" + +#: templates/dashboard/taxes/details.html:53 +msgctxt "Country tax rates list header" +msgid "Value" +msgstr "Gildi" + +#: templates/dashboard/taxes/details.html:62 +#, python-format +msgctxt "Order line tax rate value" +msgid "" +"\n" +" %(tax_rate)s %%\n" +" " +msgstr "" + +#: templates/dashboard/taxes/details.html:69 +msgctxt "Empty country tax rates list" +msgid "No tax rates" +msgstr "" + +#: templates/dashboard/taxes/form.html:23 +#: templates/dashboard/taxes/list.html:7 +#: templates/dashboard/taxes/list.html:15 +msgctxt "Dashboard taxes list" +msgid "Taxes" +msgstr "" + +#: templates/dashboard/taxes/form.html:28 +msgctxt "Dashboard configure taxes settings" +msgid "Configure taxes" +msgstr "" + +#: templates/dashboard/taxes/form.html:42 +msgctxt "Dashboard site taxes settings form title" +msgid "Taxes" +msgstr "" + +#: templates/dashboard/taxes/form.html:46 +msgid "Dashboard" +msgstr "" + +#: templates/dashboard/taxes/form.html:54 +msgctxt "Dashboard site taxes settings form help text" +msgid "" +"\n" +" If selected, taxes will be calculated using below formula:\n" +" " +msgstr "" + +#: templates/dashboard/taxes/form.html:59 +msgctxt "Dashboard site taxes settings form help text" +msgid "" +"\n" +" tax_amount = (tax_rate * price) / (1 + tax_rate)\n" +" " +msgstr "" + +#: templates/dashboard/taxes/form.html:64 +#, python-format +msgctxt "Dashboard site taxes settings form help text" +msgid "" +"\n" +" For example: product with price 4.00 € and 19%% VAT will have net price calculated to 3.36 € and tax to 0.64 € (rounded)\n" +" " +msgstr "" + +#: templates/dashboard/taxes/form.html:71 +msgid "Storefront" +msgstr "" + +#: templates/dashboard/taxes/form.html:79 +msgctxt "Dashboard site taxes settings form help text" +msgid "" +"\n" +" If selected, prices displayed for customers in the storefront will be gross and taxes will be calculated at checkout.\n" +" " +msgstr "" + +#: templates/dashboard/taxes/form.html:91 +msgctxt "Dashboard site taxes settings form help text" +msgid "" +"\n" +" If selected, standard tax rate will be charged on a shipping price.\n" +" " +msgstr "" + +#: templates/dashboard/taxes/form.html:112 +msgctxt "Taxes help text" +msgid "" +"Taxes are charged according to the rates applicable in the country to which " +"the order is delivered. For now, only rates in European Union are handled." +msgstr "" + +#: templates/dashboard/taxes/list.html:29 +msgctxt "Taxes table header" +msgid "Country code" +msgstr "" + +#: templates/dashboard/taxes/list.html:33 +msgctxt "Taxes table header" +msgid "Country name" +msgstr "Nafn lands" + +#: templates/dashboard/taxes/list.html:61 +msgctxt "Empty taxes message" +msgid "No taxes found." +msgstr "" + +#: templates/dashboard/taxes/list.html:75 +msgctxt "Taxes site settings title" +msgid "Configuration" +msgstr "" + +#: templates/dashboard/taxes/list.html:80 +msgctxt "Site settings field" +msgid "All products prices are entered with tax included" +msgstr "" + +#: templates/dashboard/taxes/list.html:84 +msgctxt "Include taxes in prices setting description" +msgid "Yes" +msgstr "" + +#: templates/dashboard/taxes/list.html:86 +msgctxt "Include taxes in prices setting description" +msgid "No" +msgstr "" + +#: templates/dashboard/taxes/list.html:94 +msgctxt "Site settings field" +msgid "Show gross prices to customers in the storefront" +msgstr "" + +#: templates/dashboard/taxes/list.html:98 +msgctxt "Show customers gross prices setting description" +msgid "Yes" +msgstr "" + +#: templates/dashboard/taxes/list.html:100 +msgctxt "Show customers gross prices setting description" +msgid "No" +msgstr "" + +#: templates/dashboard/taxes/list.html:108 +msgctxt "Site settings field" +msgid "Charge taxes on shipping rates" +msgstr "" + +#: templates/dashboard/taxes/list.html:112 +msgctxt "Charge taxes on shipping rates setting description" +msgid "Yes" +msgstr "" + +#: templates/dashboard/taxes/list.html:114 +msgctxt "Charge taxes on shipping rates setting description" +msgid "No" +msgstr "" + +#: templates/dashboard/taxes/list.html:122 +msgctxt "Site settings configure taxes action" +msgid "Configure taxes" +msgstr "" + +#: templates/dashboard/taxes/list.html:127 +msgctxt "Site settings fetch tax rates action" +msgid "Fetch tax rates" +msgstr "" + +#: templates/dashboard/taxes/zero_page.html:4 +msgid "No taxes found." +msgstr "" + +#: templates/dashboard/taxes/zero_page.html:6 +msgid "" +"\n" +" Taxes define tax rates used in European Union countries and needs to be fetched manually.
\n" +" To enable fetching taxes, please provide your access key to vatlayer API in settings file.\n" +" " +msgstr "" + +#: templates/home.html:12 +msgctxt "Homepage title" +msgid "Promo & Sale" +msgstr "" + +#: templates/home.html:13 +msgctxt "Homepage title" +msgid "from the Northpole" +msgstr "" + +#: templates/home.html:15 templates/home.html:30 templates/home.html:42 +msgctxt "Homepage action" +msgid "Shop now" +msgstr "" + +#: templates/home.html:29 +msgctxt "Homepage title" +msgid "Size & Colours" +msgstr "" + +#: templates/home.html:41 +msgctxt "Homepage title" +msgid "Digital Downloads" +msgstr "" + +#: templates/home.html:51 +msgctxt "Homepage title" +msgid "Featured products" +msgstr "" + +#: templates/materializecssform/field.html:32 +#: templates/materializecssform/field.html:59 +#: templates/materializecssform/field.html:86 +#: templates/materializecssform/field.html:109 +#: templates/materializecssform/field.html:135 +#: templates/materializecssform/field.html:160 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 +msgctxt "Dashboard form labels" +msgid "(optional)" +msgstr "" + +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 +msgid "File" +msgstr "" + +#: templates/materializecssform/field.html:402 +#, python-format +msgctxt "" +"Message showing how many chars were used out of maximum field's length" +msgid "" +"\n" +" %(current_chars_count)s of %(max_chars_count)s characters used\n" +" " +msgstr "" + +#: templates/order/_ordered_items_table.html:15 +msgctxt "Order details address title" +msgid "Shipping address" +msgstr "Afhendingarstaður" + +#: templates/order/_ordered_items_table.html:25 +msgctxt "Order details address title" +msgid "Billing address" +msgstr "Greiðslustaður" + +#: templates/order/_ordered_items_table.html:38 +#: templates/order/_ordered_items_table.html:183 +msgctxt "Order details column title" +msgid "Product" +msgstr "Vara" + +#: templates/order/_ordered_items_table.html:43 +#: templates/order/_ordered_items_table.html:188 +msgctxt "Order details column title" +msgid "Quantity" +msgstr "Magn" + +#: templates/order/_ordered_items_table.html:48 +msgctxt "Order details column title" +msgid "Price" +msgstr "Verð" + +#: templates/order/_ordered_items_table.html:95 +msgctxt "Order details subtotal row text" +msgid "Subtotal" +msgstr "Millisumma" + +#: templates/order/_ordered_items_table.html:112 +msgctxt "Order details shipment row text" +msgid "Shipping" +msgstr "" + +#: templates/order/_ordered_items_table.html:144 +msgctxt "Order details taxes text" +msgid "Taxes (included)" +msgstr "" + +#: templates/order/_ordered_items_table.html:146 +msgctxt "Order details taxes text" +msgid "Taxes" +msgstr "" + +#: templates/order/_ordered_items_table.html:160 +msgctxt "Order details total text" +msgid "Total" +msgstr "Samtals" + +#: templates/order/_ordered_items_table.html:174 +#, python-format +msgctxt "Order details fulfillment title" +msgid "Fulfillment #%(fulfillment)s" +msgstr "" + +#: templates/order/_ordered_items_table.html:217 +msgctxt "Fulfillment tracking number details" +msgid "Tracking number" +msgstr "Rakningarnúmer" + +#: templates/order/checkout_success.html:8 +#: templates/order/checkout_success_anonymous.html:8 +msgctxt "Checkout success page title" +msgid "Thank you" +msgstr "" + +#: templates/order/checkout_success.html:16 +#: templates/order/checkout_success_anonymous.html:16 +#, python-format +msgctxt "Checkout title" +msgid "Thank you for your order!" +msgstr "" + +#: templates/order/checkout_success.html:20 +#: templates/order/checkout_success_anonymous.html:20 +#, python-format +msgctxt "Checkout text" +msgid "" +"We've sent a confirmation email with details to %(email)s.
" +"In case of any problems or questions please contact us." +msgstr "" + +#: templates/order/checkout_success.html:29 +#: templates/order/checkout_success_anonymous.html:58 +msgctxt "Checkout secondary action" +msgid "Continue shopping" +msgstr "" + +#: templates/order/checkout_success_anonymous.html:27 +msgctxt "Checkout text" +msgid "" +"It looks like you already are our customer!
Please log in to connect " +"order with your account." +msgstr "" + +#: templates/order/checkout_success_anonymous.html:37 +msgctxt "Checkout title" +msgid "Why not to create an account" +msgstr "" + +#: templates/order/checkout_success_anonymous.html:38 +msgid "" +"Make your shopping experience even better! Save your shipping and payment " +"details for faster checkout." +msgstr "" + +#: templates/order/checkout_success_anonymous.html:47 +msgctxt "Checkout primary action" +msgid "Create an account" +msgstr "Stofna aðgang" + +#: templates/order/details.html:8 +#, python-format +msgctxt "Order details page title" +msgid "Order %(order)s" +msgstr "" + +#: templates/order/details.html:28 templates/order/payment/details.html:22 +#, python-format +msgctxt "Order details breadcrumb" +msgid "Order %(order)s" +msgstr "" + +#: templates/order/details.html:49 +#, python-format +msgctxt "Order detail text" +msgid "Order %(order)s: %(payment_status)s & %(order_status)s" +msgstr "" + +#: templates/order/details.html:56 +msgctxt "Order details link text" +msgid "Payment details" +msgstr "" + +#: templates/order/details.html:60 +msgctxt "Order details primary action" +msgid "Pay for order" +msgstr "" + +#: templates/order/details.html:67 +msgctxt "Customer order note" +msgid "Your note" +msgstr "" + +#: templates/order/details.html:73 +msgctxt "Order note title" +msgid "Add a note to your order" +msgstr "" + +#: templates/order/details.html:75 +msgctxt "Customer panel - order details: add note submit button" +msgid "Submit note" +msgstr "" + +#: templates/order/payment.html:8 +#, python-format +msgctxt "Payment details page title" +msgid "Pay for order %(order)s" +msgstr "" + +#: templates/order/payment.html:28 +#, python-format +msgctxt "Payment details breadcrumb" +msgid "Order %(order)s" +msgstr "" + +#: templates/order/payment.html:44 +msgctxt "Payment details title" +msgid "Payment pending" +msgstr "" + +#: templates/order/payment.html:48 +msgctxt "Payment pending text" +msgid "" +"We are currently waiting for an external service to authorize your payment " +"for this order." +msgstr "" + +#: templates/order/payment.html:52 +msgctxt "Payment status text" +msgid "Current status:" +msgstr "" + +#: templates/order/payment.html:58 +msgctxt "Payment pending text" +msgid "" +"Unless you are absolutely sure that the process will not complete (for " +"example you have closed the browser window before paying), you should wait " +"before attempting a new payment. Please be warned that if you try again and " +"the previous transaction succeeds you might end up being charged twice." +msgstr "" + +#: templates/order/payment.html:67 +msgctxt "Payment pending action" +msgid "I understand, allow me to pay again" +msgstr "" + +#: templates/order/payment.html:72 +#, python-format +msgctxt "Payment details title" +msgid "Pay for order %(order)s" +msgstr "" + +#: templates/order/payment.html:77 +msgid "Choose payment method" +msgstr "" + +#: templates/order/payment.html:97 +msgctxt "Payment details primary action" +msgid "Proceed to payment" +msgstr "" + +#: templates/order/payment.html:103 +msgctxt "Payment details text" +msgid "You've authorized transaction. Order is in processing" +msgstr "" + +#: templates/order/payment/braintree.html:29 +#: templates/order/payment/dummy.html:37 +msgctxt "Payment form primary action" +msgid "Make payment" +msgstr "" + +#: templates/order/payment/details.html:4 +msgctxt "Payment form page title" +msgid "Payment" +msgstr "" + +#: templates/order/payment/details.html:28 +msgctxt "Payment form breadcrumb" +msgid "Payment" +msgstr "" + +#: templates/order/payment/details.html:39 +msgctxt "Payment form title" +msgid "Payment" +msgstr "" + +#: templates/order/payment/details.html:44 +msgctxt "Header of the order summary table" +msgid "Order details" +msgstr "" + +#: templates/order/payment/dummy.html:32 +#: templates/order/payment/stripe.html:11 +msgctxt "Payment form (Stripe) secondary action" +msgid "Change payment" +msgstr "" + +#: templates/order/payment/razorpay.html:11 +msgctxt "Payment form (Razorpay) secondary action" +msgid "Change payment" +msgstr "" + +#: templates/page/details.html:41 +msgctxt "Unavailable page detail text" +msgid "" +"\n" +" Warning!\n" +" You are previewing a page that is not visible.\n" +" " +msgstr "" + +#: templates/page/details.html:48 +#, python-format +msgctxt "Unpublished page details text" +msgid "" +"Warning! You are previewing a page that will become visible" +" on %(date)s." +msgstr "" + +#: templates/product/_filters.html:46 +msgctxt "Product price filter" +msgid "from" +msgstr "" + +#: templates/product/_filters.html:48 +msgctxt "Product price filter" +msgid "to" +msgstr "" + +#: templates/product/_filters.html:56 +msgctxt "Product list page filters" +msgid "Clear filters" +msgstr "" + +#: templates/product/_filters.html:59 +msgctxt "Apply filters button" +msgid "Update results" +msgstr "" + +#. Translators: Layout may break if character length is different than four. +#: templates/product/_items.html:30 +msgctxt "Sale (discount) label for item in product list" +msgid "Sale" +msgstr "" + +#: templates/product/_price_range.html:6 +msgctxt "product price range" +msgid "from" +msgstr "" + +#: templates/product/details.html:62 +#, python-format +msgctxt "Product details text" +msgid "" +"Warning! You are previewing a product that will become " +"visible on %(date)s." +msgstr "" + +#: templates/product/details.html:124 +msgctxt "Product details link text" +msgid "Edit in dashboard" +msgstr "" + +#: templates/product/details.html:150 +#, python-format +msgctxt "Product details page vat rate value" +msgid "including %(tax_rate)s%% VAT" +msgstr "" + +#: templates/product/details.html:154 +#, python-format +msgctxt "Product details page vat rate value" +msgid "excluding %(tax_rate)s%% VAT" +msgstr "" + +#: templates/product/details.html:178 +msgctxt "Product details primary action" +msgid "Add to cart" +msgstr "Bæta við í körfu" + +#: templates/product/details.html:190 +msgctxt "Product details text" +msgid "This product is currently unavailable." +msgstr "" + +#: templates/product/details.html:194 +msgctxt "Product details title" +msgid "Description" +msgstr "Lýsing" + +#: templates/product/product_list_base.html:83 +msgctxt "Filter heading title" +msgid "Filters" +msgstr "" + +#: templates/product/product_list_base.html:91 +msgid "Sort by: name" +msgstr "" + +#: templates/product/product_list_base.html:95 +msgid "Sort by: price" +msgstr "" + +#: templates/product/product_list_base.html:114 +msgctxt "Product list filters" +msgid "Sort by" +msgstr "Sía eftir" + +#: templates/product/product_list_base.html:120 +msgctxt "sort by option" +msgid "ascending" +msgstr "" + +#: templates/product/product_list_base.html:126 +msgctxt "sort by option" +msgid "descending" +msgstr "" + +#: templates/product/product_list_base.html:158 +#: templates/search/results.html:34 +msgctxt "Search without results text" +msgid "Sorry, no matches found for your request." +msgstr "" + +#: templates/product/product_list_base.html:159 +#: templates/search/results.html:35 +msgctxt "Search without results text" +msgid "Try again or shop new arrivals." +msgstr "" + +#: templates/search/results.html:32 +msgid "Search:" +msgstr "" + +#: templates/templated_email/account/account_delete.email:4 +msgctxt "Account delete reset e-mail subject" +msgid "Delete your account" +msgstr "" + +#: templates/templated_email/account/account_delete.email:9 +#, python-format +msgctxt "Account delete reset e-mail text" +msgid "" +"\n" +"You're receiving this e-mail because you or someone else has requested a deletion of your user account at %(domain)s.\n" +"Click the link below to delete your account.\n" +"\n" +"Please note that this action is permanent and cannot be reversed.\n" +msgstr "" + +#: templates/templated_email/account/password_reset.email:4 +msgctxt "Password reset e-mail subject" +msgid "Password reset e-mail" +msgstr "" + +#: templates/templated_email/account/password_reset.email:9 +#, python-format +msgctxt "Password reset e-mail text" +msgid "" +"\n" +"You're receiving this e-mail because you or someone else has requested a password for your user account at %(domain)s.\n" +"It can be safely ignored if you did not request a password reset. Click the link below to reset your password.\n" +msgstr "" + +#: templates/templated_email/dashboard/customer/set_password.email:2 +#, python-format +msgctxt "Set password for customer e-mail title" +msgid "Hello from %(site_name)s!" +msgstr "" + +#: templates/templated_email/dashboard/customer/set_password.email:6 +#, python-format +msgctxt "Set password for customer e-mail text" +msgid "" +"\n" +"You're receiving this e-mail because you have to set a password for your customer account at %(domain)s.\n" +"Click the link below to reset your password.\n" +msgstr "" + +#: templates/templated_email/dashboard/staff/promote_customer.email:2 +#, python-format +msgid "Hello from %(site_name)s!" +msgstr "" + +#: templates/templated_email/dashboard/staff/promote_customer.email:6 +#, python-format +msgctxt "Promote customer to staff member confirmation e-mail text" +msgid "" +"\n" +"You're receiving this e-mail because you have been promoted to staff member at %(domain)s." +msgstr "" + +#: templates/templated_email/dashboard/staff/set_password.email:2 +#, python-format +msgctxt "Set password for staff member e-mail title" +msgid "Hello from %(site_name)s!" +msgstr "" + +#: templates/templated_email/dashboard/staff/set_password.email:6 +#, python-format +msgctxt "Set password for staff member e-mail text" +msgid "" +"\n" +"You're receiving this e-mail because you have to set a password for your staff member account at %(domain)s.\n" +"Click the link below to reset your password.\n" +msgstr "" + +#: templates/templated_email/order/confirm_fulfillment.email:4 +#, python-format +msgctxt "Fulfillment confirmation email subject" +msgid "Your order %(order)s has been fulfilled" +msgstr "" + +#: templates/templated_email/order/confirm_fulfillment.email:11 +msgctxt "Fulfillment confirmation email text" +msgid "" +"\n" +"Thank you for your order. Below is the list of fulfilled products.\n" +msgstr "" + +#: templates/templated_email/order/confirm_fulfillment.email:15 +#: templates/templated_email/source/confirm_fulfillment.mjml:20 +#, python-format +msgctxt "Fulfillment confirmation email text" +msgid "You can track your shipment with %(tracking_number)s code." +msgstr "" + +#: templates/templated_email/order/confirm_order.email:6 +msgctxt "Order confirmation e-mail subject" +msgid "Order details" +msgstr "" + +#: templates/templated_email/order/confirm_order.email:11 +#, python-format +msgctxt "Order confirmation e-mail text" +msgid "" +"\n" +"Thank you for your order. Below is the list of ordered products. To see your payment details please visit:\n" +"%(order_details_url)s" +msgstr "" + +#: templates/templated_email/order/confirm_order.email:17 +msgctxt "Order confirmation e-mail table header" +msgid "Order summary" +msgstr "" + +#: templates/templated_email/order/confirm_order.email:18 +msgctxt "Order confirmation e-mail table header" +msgid "Subtotal" +msgstr "Millisumma" + +#: templates/templated_email/order/confirm_order.email:19 +msgctxt "Order confirmation e-mail table header" +msgid "Shipping" +msgstr "" + +#: templates/templated_email/order/confirm_order.email:20 +msgctxt "Order confirmation e-mail table header" +msgid "Taxes (included)" +msgstr "" + +#: templates/templated_email/order/confirm_order.email:20 +msgctxt "Order confirmation e-mail table header" +msgid "Taxes" +msgstr "" + +#: templates/templated_email/order/confirm_order.email:21 +msgctxt "Order confirmation e-mail table header" +msgid "Discount:" +msgstr "" + +#: templates/templated_email/order/confirm_order.email:22 +msgctxt "Order confirmation e-mail table header" +msgid "Total" +msgstr "Samtals" + +#: templates/templated_email/order/confirm_order.email:24 +#: templates/templated_email/source/confirm_order.mjml:29 +msgctxt "Order confirmation e-mail billing address" +msgid "Billing address" +msgstr "Greiðslustaður" + +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + +#: templates/templated_email/order/confirm_order.email:27 +#: templates/templated_email/source/confirm_order.mjml:30 +msgctxt "Order confirmation e-mail shipping address" +msgid "Shipping address" +msgstr "Afhendingarstaður" + +#: templates/templated_email/order/confirm_order.email:28 +#: templates/templated_email/source/confirm_order.mjml:46 +msgctxt "Order confirmation e-mail text" +msgid "No shipping required" +msgstr "" + +#: templates/templated_email/order/payment/confirm_payment.email:4 +msgctxt "Payment confirmation subject" +msgid "Payment details" +msgstr "" + +#: templates/templated_email/order/payment/confirm_payment.email:9 +#, python-format +msgctxt "Payment confirmation email text" +msgid "" +"\n" +"Thank you for your payment. To see your payment details please visit:\n" +"%(order_details_url)s\n" +msgstr "" + +#: templates/templated_email/order/update_fulfillment.email:4 +#, python-format +msgctxt "Fulfillment update email subject" +msgid "Shipping update for order %(order)s" +msgstr "" + +#: templates/templated_email/order/update_fulfillment.email:11 +msgctxt "Fulfillment update email text" +msgid "" +"\n" +"Your shipping status has been updated. Below is the list of ordered products that have been updated with new tracking number.\n" +msgstr "" + +#: templates/templated_email/order/update_fulfillment.email:15 +#, python-format +msgctxt "Fulfillment update email text" +msgid "" +"You can track your shipment with the following code: %(tracking_number)s." +msgstr "" + +#: templates/templated_email/shared/_footer.email:2 +#: templates/templated_email/source/shared/footer.mjml:4 +msgctxt "Base email text" +msgid "This is an automatically generated e-mail, please do not reply." +msgstr "" + +#: templates/templated_email/shared/_footer.email:5 +#: templates/templated_email/source/shared/footer.mjml:13 +#, python-format +msgctxt "Base email footer" +msgid "Sincerely, %(site_name)s" +msgstr "" + +#: templates/templated_email/shared/_header.email:2 +#: templates/templated_email/source/account_delete.mjml:13 +#: templates/templated_email/source/confirm_fulfillment.mjml:13 +#: templates/templated_email/source/confirm_order.mjml:14 +#: templates/templated_email/source/confirm_payment.mjml:13 +#: templates/templated_email/source/password_reset.mjml:13 +#: templates/templated_email/source/promote_customer.mjml:13 +#: templates/templated_email/source/set_customer_password.mjml:13 +#: templates/templated_email/source/set_password.mjml:13 +#: templates/templated_email/source/update_fulfillment.mjml:13 +msgctxt "Standard e-mail greeting" +msgid "Hi!" +msgstr "" + +#: templates/templated_email/source/account_delete.mjml:16 +#, python-format +msgctxt "Account delete e-mail text" +msgid "" +"You're receiving this e-mail because you or someone else has requested a " +"deletion of your user account at %(domain)s.
Click the link below to " +"delete your account. Please note that this action is permanent and cannot be" +" reversed." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:16 +msgctxt "Fulfillment confirmation email text" +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." +msgstr "" + +#: templates/templated_email/source/confirm_order.mjml:17 +#, python-format +msgctxt "Order confirmation e-mail text" +msgid "" +"Thank you for your order. Below is the list of ordered products. To see your" +" payment details please visit: %(order_details_url)s" +msgstr "" + +#: templates/templated_email/source/confirm_payment.mjml:16 +#, python-format +msgctxt "Payment confirmation e-mail text" +msgid "" +"Thank you for your payment. To see your payment details please visit: %(order_details_url)s" +msgstr "" + +#: templates/templated_email/source/partials/_order_lines.mjml:11 +msgctxt "E-mail order lines summary table" +msgid "Subtotal" +msgstr "Millisumma" + +#: templates/templated_email/source/partials/_order_lines.mjml:19 +msgctxt "E-mail order lines summary table" +msgid "Shipping" +msgstr "" + +#: templates/templated_email/source/partials/_order_lines.mjml:28 +msgctxt "E-mail order lines summary table" +msgid "Taxes (included)" +msgstr "" + +#: templates/templated_email/source/partials/_order_lines.mjml:30 +msgctxt "E-mail order lines summary table" +msgid "Taxes" +msgstr "" + +#: templates/templated_email/source/partials/_order_lines.mjml:40 +msgctxt "E-mail order lines summary table" +msgid "Discount" +msgstr "Afsláttur" + +#: templates/templated_email/source/partials/_order_lines.mjml:49 +msgctxt "E-mail order lines summary table" +msgid "Total" +msgstr "Samtals" + +#: templates/templated_email/source/partials/_order_lines.mjml:58 +msgctxt "Ordered item name" +msgid "Item" +msgstr "" + +#: templates/templated_email/source/partials/_order_lines.mjml:59 +msgctxt "Quantity ordered of a product" +msgid "Quantity" +msgstr "Magn" + +#: templates/templated_email/source/partials/_order_lines.mjml:60 +msgctxt "Unit price of a product" +msgid "Per unit" +msgstr "" + +#: templates/templated_email/source/partials/_order_lines.mjml:61 +msgctxt "Ordered item subtotal (unit price * quantity)" +msgid "Subtotal" +msgstr "Millisumma" + +#: templates/templated_email/source/password_reset.mjml:16 +#, python-format +msgctxt "Password reset e-mail text" +msgid "" +"You're receiving this e-mail because you or someone else has requested a " +"password for your user account at %(domain)s.
It can be safely ignored " +"if you did not request a password reset. Click the link below to reset your " +"password." +msgstr "" + +#: templates/templated_email/source/promote_customer.mjml:16 +#, python-format +msgctxt "Promote customer to staff member confirmation e-mail text" +msgid "" +"You're receiving this e-mail because you have been promoted to staff member " +"at %(domain)s.
To access dashboard please visit: %(dashboard_url)s" +msgstr "" + +#: templates/templated_email/source/set_customer_password.mjml:16 +#, python-format +msgctxt "Set password for customer e-mail text" +msgid "" +"You're receiving this e-mail because you have to set password for your " +"customer account at %(domain)s.
Click the link below to set up your " +"password." +msgstr "" + +#: templates/templated_email/source/set_password.mjml:16 +#, python-format +msgctxt "Set password for staff member e-mail text" +msgid "" +"You're receiving this e-mail because you have to set password for your staff" +" member account at %(domain)s.
Click the link below to set up your " +"password." +msgstr "" + +#: templates/templated_email/source/update_fulfillment.mjml:16 +msgctxt "Fulfillment update email text" +msgid "" +"Your shipping status has been updated. Below is the list of ordered products" +" that have been updated with new tracking number." +msgstr "" + +#: templates/templated_email/source/update_fulfillment.mjml:20 +#, python-format +msgctxt "Fulfillment update email text" +msgid "You can track your shipment with %(tracking_number)s code." +msgstr "" diff --git a/locale/is/LC_MESSAGES/djangojs.mo b/locale/is/LC_MESSAGES/djangojs.mo new file mode 100644 index 00000000000..8ea0e1e1d44 Binary files /dev/null and b/locale/is/LC_MESSAGES/djangojs.mo differ diff --git a/locale/is/LC_MESSAGES/djangojs.po b/locale/is/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000000..068a219744b --- /dev/null +++ b/locale/is/LC_MESSAGES/djangojs.po @@ -0,0 +1,375 @@ +# Saleor +# Copyright (C) 2017 Mirumee Software +# This file is distributed under the same license as the Saleor package. +# Mirumee Software , 2017. +# +# Translators: +# Samúel Jón Gunnarsson , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" +"PO-Revision-Date: 2017-02-08 11:00+0000\n" +"Last-Translator: Samúel Jón Gunnarsson , 2019\n" +"Language-Team: Icelandic (https://www.transifex.com/mirumee/teams/34782/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +#: build/static/vendors~preview.3e127659ad09b01744f8.bundle.js:75 +msgid "Missing source" +msgstr "" + +#: build/static/vendors~preview.3e127659ad09b01744f8.bundle.js:136 +msgid "\n" +msgstr "\n" + +#: saleor/static/dashboard/js/components/bulk-actions.js:89 +msgid "item selected" +msgid_plural "items selected" +msgstr[0] "hlutur valinn" +msgstr[1] "hlutir valdir" + +#: saleor/static/dashboard/js/components/datepicker.js:4 +msgctxt "Datepicker option" +msgid "Next month" +msgstr "Næsti mánuður" + +#: saleor/static/dashboard/js/components/datepicker.js:5 +msgctxt "Datepicker option" +msgid "Previous month" +msgstr "Fyrri mánuður" + +#: saleor/static/dashboard/js/components/datepicker.js:8 +msgctxt "Datepicker option" +msgid "Select a month" +msgstr "Veldu mánuð" + +#: saleor/static/dashboard/js/components/datepicker.js:9 +msgctxt "Datepicker option" +msgid "Select a year" +msgstr "Veldu ár" + +#: saleor/static/dashboard/js/components/datepicker.js:13 +msgctxt "Datepicker month" +msgid "January" +msgstr "Janúar" + +#: saleor/static/dashboard/js/components/datepicker.js:14 +msgctxt "Datepicker month" +msgid "February" +msgstr "Febrúar" + +#: saleor/static/dashboard/js/components/datepicker.js:15 +msgctxt "Datepicker month" +msgid "March" +msgstr "Mars" + +#: saleor/static/dashboard/js/components/datepicker.js:16 +msgctxt "Datepicker month" +msgid "April" +msgstr "Apríl" + +#: saleor/static/dashboard/js/components/datepicker.js:17 +msgctxt "Datepicker month" +msgid "May" +msgstr "Maí" + +#: saleor/static/dashboard/js/components/datepicker.js:18 +msgctxt "Datepicker month" +msgid "June" +msgstr "Júní" + +#: saleor/static/dashboard/js/components/datepicker.js:19 +msgctxt "Datepicker month" +msgid "July" +msgstr "Júlí" + +#: saleor/static/dashboard/js/components/datepicker.js:20 +msgctxt "Datepicker month" +msgid "August" +msgstr "Ágúst" + +#: saleor/static/dashboard/js/components/datepicker.js:21 +msgctxt "Datepicker month" +msgid "September" +msgstr "September" + +#: saleor/static/dashboard/js/components/datepicker.js:22 +msgctxt "Datepicker month" +msgid "October" +msgstr "Október" + +#: saleor/static/dashboard/js/components/datepicker.js:23 +msgctxt "Datepicker month" +msgid "November" +msgstr "Nóvember" + +#: saleor/static/dashboard/js/components/datepicker.js:24 +msgctxt "Datepicker month" +msgid "December" +msgstr "Desember" + +#: saleor/static/dashboard/js/components/datepicker.js:26 +msgctxt "Datepicker month shortcut" +msgid "Jan" +msgstr "Jan" + +#: saleor/static/dashboard/js/components/datepicker.js:27 +msgctxt "Datepicker month shortcut" +msgid "Feb" +msgstr "Feb" + +#: saleor/static/dashboard/js/components/datepicker.js:28 +msgctxt "Datepicker month shortcut" +msgid "Mar" +msgstr "Mar" + +#: saleor/static/dashboard/js/components/datepicker.js:29 +msgctxt "Datepicker month shortcut" +msgid "Apr" +msgstr "Apr" + +#: saleor/static/dashboard/js/components/datepicker.js:30 +msgctxt "Datepicker month shortcut" +msgid "May" +msgstr "Maí" + +#: saleor/static/dashboard/js/components/datepicker.js:31 +msgctxt "Datepicker month shortcut" +msgid "Jun" +msgstr "Jún" + +#: saleor/static/dashboard/js/components/datepicker.js:32 +msgctxt "Datepicker month shortcut" +msgid "Jul" +msgstr "Júl" + +#: saleor/static/dashboard/js/components/datepicker.js:33 +msgctxt "Datepicker month shortcut" +msgid "Aug" +msgstr "Ág" + +#: saleor/static/dashboard/js/components/datepicker.js:34 +msgctxt "Datepicker month shortcut" +msgid "Sep" +msgstr "Sep" + +#: saleor/static/dashboard/js/components/datepicker.js:35 +msgctxt "Datepicker month shortcut" +msgid "Oct" +msgstr "Okt" + +#: saleor/static/dashboard/js/components/datepicker.js:36 +msgctxt "Datepicker month shortcut" +msgid "Nov" +msgstr "Nóv" + +#: saleor/static/dashboard/js/components/datepicker.js:37 +msgctxt "Datepicker month shortcut" +msgid "Dec" +msgstr "Des" + +#: saleor/static/dashboard/js/components/datepicker.js:39 +msgctxt "Datepicker weekday" +msgid "Sunday" +msgstr "Sunnudagur" + +#: saleor/static/dashboard/js/components/datepicker.js:40 +msgctxt "Datepicker weekday" +msgid "Monday" +msgstr "Mánudagur" + +#: saleor/static/dashboard/js/components/datepicker.js:41 +msgctxt "Datepicker weekday" +msgid "Tuesday" +msgstr "Þriðjudagur" + +#: saleor/static/dashboard/js/components/datepicker.js:42 +msgctxt "Datepicker weekday" +msgid "Wednesday" +msgstr "Miðvikudagur" + +#: saleor/static/dashboard/js/components/datepicker.js:43 +msgctxt "Datepicker weekday" +msgid "Thursday" +msgstr "Fimmtudagur" + +#: saleor/static/dashboard/js/components/datepicker.js:44 +msgctxt "Datepicker weekday" +msgid "Friday" +msgstr "Föstudagur" + +#: saleor/static/dashboard/js/components/datepicker.js:45 +msgctxt "Datepicker weekday" +msgid "Saturday" +msgstr "Laugardagur" + +#: saleor/static/dashboard/js/components/datepicker.js:47 +msgctxt "Datepicker weekday shortcut" +msgid "Sun" +msgstr "Sun" + +#: saleor/static/dashboard/js/components/datepicker.js:48 +msgctxt "Datepicker weekday shortcut" +msgid "Mon" +msgstr "Mán" + +#: saleor/static/dashboard/js/components/datepicker.js:49 +msgctxt "Datepicker weekday shortcut" +msgid "Tue" +msgstr "Þri" + +#: saleor/static/dashboard/js/components/datepicker.js:50 +msgctxt "Datepicker weekday shortcut" +msgid "Wed" +msgstr "Mið" + +#: saleor/static/dashboard/js/components/datepicker.js:51 +msgctxt "Datepicker weekday shortcut" +msgid "Thu" +msgstr "Fim" + +#: saleor/static/dashboard/js/components/datepicker.js:52 +msgctxt "Datepicker weekday shortcut" +msgid "Fri" +msgstr "Fös" + +#: saleor/static/dashboard/js/components/datepicker.js:53 +msgctxt "Datepicker weekday shortcut" +msgid "Sat" +msgstr "Lau" + +#: saleor/static/dashboard/js/components/datepicker.js:57 +msgctxt "Sunday shortcut" +msgid "S" +msgstr "S" + +#: saleor/static/dashboard/js/components/datepicker.js:58 +msgctxt "Monday shortcut" +msgid "M" +msgstr "M" + +#: saleor/static/dashboard/js/components/datepicker.js:59 +msgctxt "Tuesday shortcut" +msgid "T" +msgstr "Þ" + +#: saleor/static/dashboard/js/components/datepicker.js:60 +msgctxt "Wednesday shortcut" +msgid "W" +msgstr "M" + +#: saleor/static/dashboard/js/components/datepicker.js:61 +msgctxt "Thursday shortcut" +msgid "T" +msgstr "Þ" + +#: saleor/static/dashboard/js/components/datepicker.js:62 +msgctxt "Friday shortcut" +msgid "F" +msgstr "F" + +#: saleor/static/dashboard/js/components/datepicker.js:63 +msgctxt "Saturday shortcut" +msgid "S" +msgstr "L" + +#: saleor/static/dashboard/js/components/datepicker.js:64 +msgctxt "Datepicker option" +msgid "Today" +msgstr "Í dag" + +#: saleor/static/dashboard/js/components/datepicker.js:65 +msgctxt "Datepicker option" +msgid "Clear" +msgstr "Hreinsa" + +#: saleor/static/dashboard/js/components/datepicker.js:66 +msgctxt "Datepicker option" +msgid "Close" +msgstr "Loka" + +#: saleor/static/dashboard/js/components/editor.js:27 +msgctxt "Rich text editor option" +msgid "Bold text" +msgstr "Feitletrað" + +#: saleor/static/dashboard/js/components/editor.js:31 +msgctxt "Rich text editor option" +msgid "Italic text" +msgstr "Skáletrað" + +#: saleor/static/dashboard/js/components/editor.js:35 +msgctxt "Rich text editor option" +msgid "Header" +msgstr "Fyrirsögn" + +#: saleor/static/dashboard/js/components/editor.js:42 +msgctxt "Rich text editor option" +msgid "Subheader" +msgstr "Undirfyrirsögn" + +#: saleor/static/dashboard/js/components/editor.js:49 +msgctxt "Rich text editor option" +msgid "Quote" +msgstr "Tilvitnun" + +#: saleor/static/dashboard/js/components/editor.js:54 +msgctxt "Rich text editor option" +msgid "Link" +msgstr "Tengill" + +#: saleor/static/dashboard/js/components/editor.js:61 +msgctxt "Rich text editor option" +msgid "Image (converts selected text to an image tag)" +msgstr "" + +#: saleor/static/dashboard/js/components/editor.js:66 +msgctxt "Rich text editor option" +msgid "Left align" +msgstr "Vinstrijafnað" + +#: saleor/static/dashboard/js/components/editor.js:71 +msgctxt "Rich text editor option" +msgid "Center align" +msgstr "" + +#: saleor/static/dashboard/js/components/editor.js:76 +msgctxt "Rich text editor option" +msgid "Right align" +msgstr "Hægrijafnað" + +#: saleor/static/dashboard/js/components/editor.js:81 +msgctxt "Rich text editor option" +msgid "Justify" +msgstr "" + +#: saleor/static/dashboard/js/components/editor.js:86 +msgctxt "Rich text editor option" +msgid "Remove formatting" +msgstr "" + +#: saleor/static/dashboard/js/components/google-preview.js:46 +msgid "" +"Your input might be a little too short, think of something more descriptive" +msgstr "" + +#: saleor/static/dashboard/js/components/google-preview.js:50 +msgid "Your input fits between the recommended lengths" +msgstr "" + +#: saleor/static/js/components/variantPicker/QuantityInput.js:22 +msgctxt "Add to cart form field label" +msgid "Quantity" +msgstr "Magn" + +#: saleor/static/js/components/variantPicker/VariantPicker.js:167 +msgctxt "Product details primary action" +msgid "Add to cart" +msgstr "Bæta við í körfu" diff --git a/locale/it/LC_MESSAGES/django.mo b/locale/it/LC_MESSAGES/django.mo index a4bbb207f97..776f5139f11 100644 Binary files a/locale/it/LC_MESSAGES/django.mo and b/locale/it/LC_MESSAGES/django.mo differ diff --git a/locale/it/LC_MESSAGES/django.po b/locale/it/LC_MESSAGES/django.po index 19e4185e3a4..19aefe3bb0c 100644 --- a/locale/it/LC_MESSAGES/django.po +++ b/locale/it/LC_MESSAGES/django.po @@ -5,22 +5,22 @@ # # Translators: # Theo Satloff , 2018 -# Patryk Zawadzki , 2018 # Leonardo Paci , 2018 # Stefano Mancini , 2018 -# primax79 , 2018 -# Marco Badan , 2019 # Matteo Vitali , 2019 # Federico Montemaro , 2019 +# Patryk Zawadzki , 2019 +# Marco Badan , 2019 +# primax79 , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Federico Montemaro , 2019\n" +"Last-Translator: primax79 , 2019\n" "Language-Team: Italian (https://www.transifex.com/mirumee/teams/34782/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,142 +28,192 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Password" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Questa mail è già stata registrata." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Nome" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Cognome" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "Area" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "Contea" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "Dipartimento" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "Distretto" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "Do/si" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "Codice postale irlandese" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "Emirato" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "Isola" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "Quartiere" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" msgstr "Oblast" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "Parrocchia" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "PIN" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "CAP" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "Prefettura" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "Provincia" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "Stato" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "Sobborgo" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "Townland" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "Borgo/municipalità" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "CAP" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Nazione" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Nome" @@ -183,57 +233,61 @@ msgctxt "Address" msgid "Address" msgstr "Indirizzo" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Città" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Distretto" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Codice Postale" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Stato o provincia" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefono" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "Il telefono inserito non è valido." + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Questo valore non è valido per lo stato selezionato" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Gestisci clienti" -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Gestisci staff." -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Impersona clienti." @@ -254,140 +308,142 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "Il telefono inserito non è valido." - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Ti sei disconnesso." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "L'utente è stato creato" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Password cambiata." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Indirizzo aggiornato." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Articolo rimosso" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Controlla la tua posta in arrivo per l'email di conferma." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Fatturazione" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Spedizione" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Quantità" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Questo prodotto non è al momento disponibile." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Questo prodotto è al momento esaurito." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Ops. Non siamo riusciti a trovare quel prodotto." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Solo %d disponibile." -msgstr[1] "Solo %d disponibili." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Nazione" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Inserisci un nuovo indirizzo" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Indirizzo" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Inserisci un nuovo indirizzo" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Uguale a quello di spedizione" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Indirizzo" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Metodo di spedizione" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Codice sconto non corretto o scaduto" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Buono regalo o codice sconto" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -395,183 +451,163 @@ msgstr "" "Non abbiamo così tanti articoli in magazzino. La quantità è stata fissata al" " massimo disponibile per ora." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Il tuo ordine non richiede spedizione." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Seleziona un metodo di spedizione per primo." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Questa offerta non è valida per la tua nazione." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Questa offerta è valida solo per determinati articoli." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" "Voucher scaduto nel frattempo. L'invio dell'ordine è stato interrotto." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Questo voucher è scaduto. Rivedi il tuo checkout." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Rivedi il tuo checkout." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "accesso ad eventi culturali" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "accesso agli eventi di intrattenimento" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "accesso ad eventi sportivi" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "bici" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "libri" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "abbigliamento per bambini" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-book" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotel" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "mediche" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "giornali" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "ristrutturazioni" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "ristoranti" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "acqua" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "vino" @@ -589,7 +625,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Qualsiasi nazione" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Sei loggato come {}" @@ -614,7 +650,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -629,91 +665,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Prodotti specifici" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Spedizione" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Spedizione gratuita" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s in meno sulla spedizione" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s in meno" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Questa offerta è valida solo per ordini sopra i %(amount)s." -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Questo sconto non è applicabile a questo prodotto" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Questa evasione non può essere cancellata" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -723,17 +763,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Categoria:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Collezione:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Pagina:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -744,153 +784,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Non evaso" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Parzialmente evaso" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Evaso" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Annullato" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Evaso" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Annullato" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Conferma ordine" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Ordine inviato" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -902,35 +962,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Il pagamento non esiste" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Evasione #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "L'ordine ora è assegnato al tuo account" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -940,58 +1000,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manuale" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Rimborsa" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Acquisisci" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1001,18 +1056,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Stato pagamento" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1022,13 +1077,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1048,12 +1103,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1098,12 +1153,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "non in magazzino" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nome" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "prezzo" @@ -1113,28 +1168,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "ultimo aggiornamento" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Ordina per" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Prezzo" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Ricerca" @@ -1180,166 +1240,190 @@ msgid "Spanish" msgstr "Spagnolo" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 +msgid "Persian" +msgstr "" + +#: saleor/settings.py:74 msgid "French" msgstr "Francese" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Ungherese" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italiano" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Giapponese" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Coreano" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norvegese" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Olandese" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polacco" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Romeno" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Russo" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovacco" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "" -#: saleor/settings.py:89 +#: saleor/settings.py:94 +msgid "Swahili" +msgstr "" + +#: saleor/settings.py:95 msgid "Swedish" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:91 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turco" -#: saleor/settings.py:92 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ucraino" -#: saleor/settings.py:93 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnamita" -#: saleor/settings.py:94 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "" -#: saleor/settings.py:95 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1797,7 +1881,7 @@ msgstr "Cerca" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Il tuo carrello" #: templates/base.html:202 @@ -1809,44 +1893,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Guida di stile" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotale" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Costi di spedizione e tasse calcolati al checkout" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Vai al carrello" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Checkout" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Non ci sono prodotti nel tuo carrello." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Scopri le nostre offerte" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Home" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotale" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Costo di spedizione per:" @@ -1856,7 +1916,7 @@ msgid "Total" msgstr "Totale" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Costi di spedizione e tasse calcolati al checkout" @@ -1911,45 +1971,55 @@ msgid "Total" msgstr "Totale" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Il tuo carrello" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Carrello" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Il prodotto è stato rimosso dal carrello" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Prodotto" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Quantità" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Prezzo" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Procedi con l'acquisto" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Non ci sono prodotti nel tuo carrello." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Scopri le nostre offerte" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2081,6 +2151,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Invia ordine" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Costi di spedizione e tasse calcolati al checkout" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Vai al carrello" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Procedi con l'acquisto" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2191,8 +2276,8 @@ msgstr "Vendite" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2276,8 +2361,8 @@ msgstr "Pagine" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Rilascia:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2522,7 +2607,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2532,47 +2617,47 @@ msgstr "" msgid "Collections" msgstr "Collezioni" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Vedi sul sito" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Annulla" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Aggiorna" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Crea" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Pubblicato" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Bozza" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3132,7 +3217,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Totale" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3362,393 +3447,393 @@ msgid "Edit address" msgstr "Modifica indirizzo" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Indirizzo di spedizione" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Indirizzo di fatturazione" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Annulla Ordine" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Stampa" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Dettagli" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Pagamenti" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Storico" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Pagamenti" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Saldo" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Importo pre-autorizzato" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Importo acquisito" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Acquisisci" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Rimborsa" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Modifica" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Inviato il" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Articolo" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Prezzo" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Quantità" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Totale" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Cambia quantità" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Rimuovi riga" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Spedizione" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "IVA inclusa" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Somma totale" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Aggiungi prodotto all'ordine" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Aggiungi prodotto" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Fattura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Vedi sul sito" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Numero di tracking: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Annulla" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Bolla di consegna" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Note ordine" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Non ci sono note associate con questo ordine." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Aggiungi nota" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID transazione" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Data" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Stato pagamento" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Importo" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Nessun pagamento effettuato per questo ordine." @@ -5705,24 +5790,25 @@ msgstr "Prodotti in evidenza" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(facoltativo)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "File" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6210,14 +6296,14 @@ msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" +msgid "Your order %(order)s has been fulfilled" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:15 @@ -6282,6 +6368,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Indirizzo di fatturazione" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6289,7 +6381,7 @@ msgid "Shipping address" msgstr "Indirizzo di spedizione" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" @@ -6367,7 +6459,13 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." msgstr "" #: templates/templated_email/source/confirm_order.mjml:17 diff --git a/locale/it/LC_MESSAGES/djangojs.mo b/locale/it/LC_MESSAGES/djangojs.mo index ade857ef13d..4b6d838020d 100644 Binary files a/locale/it/LC_MESSAGES/djangojs.mo and b/locale/it/LC_MESSAGES/djangojs.mo differ diff --git a/locale/ja/LC_MESSAGES/django.mo b/locale/ja/LC_MESSAGES/django.mo index 1165788992d..549f88049dd 100644 Binary files a/locale/ja/LC_MESSAGES/django.mo and b/locale/ja/LC_MESSAGES/django.mo differ diff --git a/locale/ja/LC_MESSAGES/django.po b/locale/ja/LC_MESSAGES/django.po index 1aec56c66ac..c7d0e458c06 100644 --- a/locale/ja/LC_MESSAGES/django.po +++ b/locale/ja/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Saito Kotaro, 2019\n" "Language-Team: Japanese (https://www.transifex.com/mirumee/teams/34782/ja/)\n" @@ -21,32 +21,82 @@ msgstr "" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "メールアドレス" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "" @@ -151,12 +201,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "郵便番号" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "" @@ -176,37 +226,37 @@ msgctxt "Address" msgid "Address" msgstr "" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -220,17 +270,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -249,316 +299,302 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "ログアウトしました。" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "ユーザーが作成されました。" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "パスワードが変更されました。" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "住所が更新されました。" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "住所が削除されました。" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "配送" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "数量" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "申し訳ございません。この商品は現在お取り扱いできません。" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "申し訳ございません。この商品は現在在庫切れです。" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "国" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "メールアドレス" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "住所" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "住所" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "配送方法" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -575,7 +611,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -600,7 +636,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -615,90 +651,94 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "配送" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "送料無料" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -708,17 +748,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -729,150 +769,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -884,35 +947,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "未払い" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -922,58 +985,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -983,18 +1041,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "支払い状況" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1004,13 +1062,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1030,12 +1088,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1080,12 +1138,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "在庫切れ" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "名前" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "価格" @@ -1095,33 +1153,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "最終更新" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "並び順" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "価格" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "クエリー" @@ -1167,170 +1225,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1777,7 +1855,7 @@ msgstr "検索" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "カート" #: templates/base.html:202 @@ -1789,44 +1867,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "スタイルガイド" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "小計" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "カートへ" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "支払い手続き" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "ホーム" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "小計" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1836,7 +1890,7 @@ msgid "Total" msgstr "合計" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1891,45 +1945,55 @@ msgid "Total" msgstr "合計" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "カート" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "カート" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "商品" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "数量" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "価格" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "支払い手続き" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2061,6 +2125,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "カートへ" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "支払い手続き" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2171,8 +2250,8 @@ msgstr "販売" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2256,7 +2335,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2499,7 +2578,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2509,47 +2588,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "キャンセル" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "更新" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "作成" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "公開済" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3108,7 +3187,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "合計" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3338,393 +3417,393 @@ msgid "Edit address" msgstr "住所編集" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "配送先住所" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "請求先住所" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "注文キャンセル" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "印刷" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "詳細" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "支払い" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "履歴" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "支払い" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "編集" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "置かれた" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "アイテム" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "価格" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "数量" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "合計" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "数量変更" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "配送" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "キャンセル" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "注文備考" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "備考追加" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "トランザクションID" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "日付" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "支払い状況" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "金額" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5676,24 +5755,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6240,6 +6320,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "請求先住所" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6247,7 +6333,7 @@ msgid "Shipping address" msgstr "配送先住所" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/ja/LC_MESSAGES/djangojs.mo b/locale/ja/LC_MESSAGES/djangojs.mo index e5164723e02..b20d956020a 100644 Binary files a/locale/ja/LC_MESSAGES/djangojs.mo and b/locale/ja/LC_MESSAGES/djangojs.mo differ diff --git a/locale/ko/LC_MESSAGES/django.mo b/locale/ko/LC_MESSAGES/django.mo index 7db137ab117..6f0de7421af 100644 Binary files a/locale/ko/LC_MESSAGES/django.mo and b/locale/ko/LC_MESSAGES/django.mo differ diff --git a/locale/ko/LC_MESSAGES/django.po b/locale/ko/LC_MESSAGES/django.po index b6ae7f3a10e..21700b4a998 100644 --- a/locale/ko/LC_MESSAGES/django.po +++ b/locale/ko/LC_MESSAGES/django.po @@ -7,18 +7,18 @@ # Joonghee Lee , 2018 # Patryk Zawadzki , 2018 # Joonho Eom , 2019 +# chan hong , 2019 # Jihan Chung , 2019 # sangmin oh , 2019 -# chan hong , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: chan hong , 2019\n" +"Last-Translator: sangmin oh , 2019\n" "Language-Team: Korean (https://www.transifex.com/mirumee/teams/34782/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,32 +26,82 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "이메일" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "비밀번호" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "이메일" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "이미 등록된 이메일 입니다." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "이름" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "성" @@ -156,12 +206,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "우편번호" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "국가" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "이름" @@ -181,37 +231,37 @@ msgctxt "Address" msgid "Address" msgstr "주소" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "시군구" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "구" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "우편번호" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "시/도" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "전화번호" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "도로명, 회사명, 사서함" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "아파트, 빌라, 호수, 건물명, 층, 등" @@ -225,17 +275,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "이 입력값은 선택된 국가에는 적용되지 않습니다." -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "고객관리" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "직원관리" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "명의도용 고객" @@ -256,40 +306,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "성공적으로 로그아웃 되었습니다." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "사용자가 생성 되었습니다" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "비밀번호가 성공적으로 변경되었습니다." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "계정이 성공적으로 업데이트되었습니다." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "주소가 성공적으로 변경되었습니다." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "주소가 성공적으로 삭제 되었습니다." -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "받은 메일함에서 승인 이메일을 확인하십시오 " -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -298,95 +348,101 @@ msgstr "" "계정이 성공적으로 삭제되었습니다.\n" "문제나 문의사항이 있으면 언제든지 저희에게 연락주십시오." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "청구서" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "배송" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" -msgstr "재고" +msgstr "수량" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "죄송합니다. 이 상품은 현재 구매 불가능합니다." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "죄송합니다. 이 상품은 현재 재고가 없습니다." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "원하는 상품을 찾을 수 없습니다." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "오직 %d 개의 재고가 남아 있습니다." +msgstr[0] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "국가" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "이메일" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "새로운 주소 입력" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "주소" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "새로운 주소 입력" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "배송주소와 동일" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "주소" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "배송 방법" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "할인코드가 잘못 입력 혹은 기한 만료되었습니다." -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "기프트 카드 혹은 할인 코드" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -394,182 +450,162 @@ msgstr "" "죄송합니다. 현재 재고가 많지 않습니다.\n" "현재 표시된 수량만 구입 가능합니다. " -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "당신의 주문은 배송이 필요치 않습니다." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "우선 배송 방식을 선택해 주세요." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "이 제안은 귀하의 국가에서 제공되지 않습니다." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "오직 선택된 상품에 적용됩니다." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "바우처가 만료되었습니다. 주문처리가 중단되었습니다." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "배송방법이 설정되지 않았습니다." - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "배송주소가 입력되지 않았습니다." - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "배송방법이 고객님의 배송주소에 적합하지 않습니다." - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "이 바우처는 기한이 초과되었습니다. 당신의 체크아웃을 다시 확인하여 주세요." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "당신의 체크아웃을 확인하여 주세요." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "적용" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "문화행사에 참여" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "여가행사에 참여" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "스포츠 경기 참여" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "광고" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "농산품" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "유아용 식료품" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "자전거" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "책" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "아동복" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "가정용 연료" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "국내 서비스" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "전자책" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "식료품" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "호텔" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "의료" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "신문" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "여객 수송" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "의약품" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "부동산 리모델링" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "레스토랑" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "공공 주택" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "표준/기준" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "물" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -586,7 +622,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "전세계국가" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "{} 로 로그인 하였습니다" @@ -611,7 +647,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -626,90 +662,94 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "특정 제품" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "특정 제품 컬렉션" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "특정 제품 카테고리" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "배송" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "무료 배송" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s 할인 배송" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(product_num)d제품 %(discount)s할인" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(collections_num)d컬렉션 %(discount)s할인" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(categories_num)d카테고리 %(discount)s할인" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s 할인" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "이 할인은 오직 %(amount)s 이상 주문 건에 대해서만 적용됩니다." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "할인 및 바우처관리" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "이 상품에는 할인이 적용되지 않습니다" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "%(quantity)d 의 제품만 남아있습니다." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "이 완료는 취소 할 수 없습니다." -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "네비게이션 관리" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -719,17 +759,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "카테고리" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "컬렉션" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "페이지" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -740,150 +780,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "미완료" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "부분 미완료" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "완료" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "취소" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "완료" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "취소" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "결제 확인" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "배송 확인" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "완료 확인" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "주문 확인" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "%(user_name)s의 임시 주문 발생" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "%(user_name)s 의 주문이 취소되었습니다." +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "환불완료: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "캡쳐 성공: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "%(user_name)s 에의해 수동으로 지불완료한 주문" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "%(user_name)s에의해 취소된 주문" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "%(quantity)d아이템 재고입고" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s 추가한 노트: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "%(user_name)s 에 의해 %(fulfillment)s완료 취소됨" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "%(quantity_fulfilled)d 아이템 완료됨" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "주문되었습니다" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "주문 전액 지불" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s 이메일이 %(email)s고객에게 전송됨" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "%(user_name)s에의해 주문세부 정보가 업데이트됨" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "%(quantity)d 이 주문에의해 물품이 과다판매되었습니다." +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -895,35 +958,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "결제정보가 없습니다" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "결제를 취소할 수 없습니다." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "주문관리" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "주문처리 #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "이메일 주소가 일치하지 않아 주문을 진행할 수 없습니다." -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "주문이 진행되었습니다." -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "페이지 관리" @@ -933,58 +996,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "메뉴얼" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "권한" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "요금" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "환불" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "캡쳐" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "무효" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "청구되지 않음" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "완전히 환불 됨" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "거래를 처리 할 수 ​​없습니다. 잠시 후 다시 시도하십시오." @@ -994,18 +1052,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "결제 상태" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "주문이 청구되지 않았습니다." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "결제 데이터가 유효하지 않습니다" @@ -1015,13 +1073,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "주문을 진행할 수 없습니다." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "%(currency)s 통화는 지원되지 않습니다." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Razorpay로 지금 지불하십시오" @@ -1041,12 +1099,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "주문이 청구되지 않았습니다." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "총 지불액" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1091,12 +1149,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "재고 없음" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "상품명" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "가격" @@ -1106,33 +1164,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "최신 업데이트" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "정렬" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "가격" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "제품 관리" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "질문" @@ -1178,170 +1236,190 @@ msgid "Spanish" msgstr "스페인어" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 msgid "Persian" msgstr "페르시아어" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "프랑스어" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "헝가리어" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "이탈리아어" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "일본어" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "한국어" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "몽골어" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "노르웨이어" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "네덜란드어" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "폴란드어" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "브라질 포르투갈어" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "로마니아" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "러시아" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "슬로바키아" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "세르비아" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "스웨덴어" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "터키어" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "우크라이나" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "베트남" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "중국어간체" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "중국어번체" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "유럽" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "더미 게이트웨이" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "금액 기준 배송" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "무게 기준 배송" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d 국가" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "배송관리" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s이상" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "최소%(min_price)s에서 최대%(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "최소%(min_weight)s이상" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "최소 %(min_weight)s에서 최대%(max_weight)s까지" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "세팅관리" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1792,7 +1870,7 @@ msgstr "검색" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "당신의 카트" #: templates/base.html:202 @@ -1804,44 +1882,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "스타일 가이드" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "부분 합계" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "배송비와 세금은 결제시 계산됩니다." - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "카트로 이동" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "체크아웃" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "쇼핑 카트에 제품이 없습니다" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "판매 상품을 확인해 보세요" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "홈" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "부분 합계" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "배송비" @@ -1851,7 +1905,7 @@ msgid "Total" msgstr "합계" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "배송비와 세금은 결제시 계산됩니다." @@ -1906,45 +1960,55 @@ msgid "Total" msgstr "총합" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "당신의 카트" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "카트" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "카트에서 상품이 제거되었습니다" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "제품" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" -msgstr "재고" +msgstr "수량" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "가격" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "체크아웃" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "카트 비움" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "쇼핑 카트에 제품이 없습니다" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "판매 상품을 확인해 보세요" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2076,6 +2140,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "결제 주문" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "배송비와 세금은 결제시 계산됩니다." + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "카트로 이동" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "체크아웃" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2189,8 +2268,8 @@ msgstr "판매" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2274,8 +2353,8 @@ msgstr "페이지" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "출시:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2520,7 +2599,7 @@ msgstr "%(collection)s 컬렉션을 제거하시겠습니까?" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "새 컬렉션 추가" @@ -2530,47 +2609,47 @@ msgstr "새 컬렉션 추가" msgid "Collections" msgstr "컬렉션" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "컬렉션 제거" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "사이트에서 보기" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "가용성" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "취소" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "업데이트" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "생성" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "퍼블리싱 됨" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "초안" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "홈페이지의 컬렉션 게시를 취소할 수 없음" @@ -3146,7 +3225,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "총합" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3379,393 +3458,393 @@ msgid "Edit address" msgstr "주소 변경" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "배송 주소" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "결제 주소" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "주문 취소" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "임시 주문 제거" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "프린트" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "상세" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "결제" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "히스토리" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "결제" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "미결제 금액" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "사전승인된 금액" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "지정된 금액" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "캡쳐" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "환불" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "무효" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "결제로 표시" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "고객" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "고객정보 수정" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "수정" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "배송주소 없음" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "배송주소와 같음" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "청구서 주소 없음" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "위치" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "상품상품" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "가격" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "수량" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "합계" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU:%(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "수량 변경" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "라인 제거" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "배송수정" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "배송 (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "배송" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "세금(포함)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "세금" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "(%(voucher)s) 할인" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "할인" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "바우처수정" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "바우처수정" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "할인수정" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "할인수정" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "총 합계" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "주문하기 위한 상품 추가" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "상품 추가" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "주문 생성" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "주문 생성" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "인보이스" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "사이트에서 보기" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "배송 트랙킹 넘버: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "취소" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "추적 번호 수정" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "추적 수정" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "추적 추가" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "포장지" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "고객 메모" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "이 주문과 관련된 고객의 요구사항이 없습니다." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "요구사항" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "이 주문과 관련된 요구사항이 없습니다." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "요구사항 추가" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "트랜젝션 ID" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "날짜" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "결제 상태" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "총액" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "이 주문을 위한 결제정보가 없습니다." @@ -5724,24 +5803,25 @@ msgstr "주목할만한 제품들" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(옵션)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "파일" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6087,7 +6167,7 @@ msgstr "" #: templates/product/details.html:178 msgctxt "Product details primary action" msgid "Add to cart" -msgstr "카트에 담기" +msgstr "카트에 추가" #: templates/product/details.html:190 msgctxt "Product details text" @@ -6291,6 +6371,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "결제 주소" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "청구서 주소 없음" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6298,7 +6384,7 @@ msgid "Shipping address" msgstr "배송 주소" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/ko/LC_MESSAGES/djangojs.mo b/locale/ko/LC_MESSAGES/djangojs.mo index 69224e1665a..2c9b532109c 100644 Binary files a/locale/ko/LC_MESSAGES/djangojs.mo and b/locale/ko/LC_MESSAGES/djangojs.mo differ diff --git a/locale/mn/LC_MESSAGES/django.mo b/locale/mn/LC_MESSAGES/django.mo index a9c02a9d3ef..a6345326000 100644 Binary files a/locale/mn/LC_MESSAGES/django.mo and b/locale/mn/LC_MESSAGES/django.mo differ diff --git a/locale/mn/LC_MESSAGES/django.po b/locale/mn/LC_MESSAGES/django.po index 1d757f35e59..a4b80618467 100644 --- a/locale/mn/LC_MESSAGES/django.po +++ b/locale/mn/LC_MESSAGES/django.po @@ -5,16 +5,16 @@ # # Translators: # Tsolmon Batjargal , 2018 -# Lkhagva-Ochir Narmandakh , 2019 +# Lkhagva , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Lkhagva-Ochir Narmandakh , 2019\n" +"Last-Translator: Lkhagva , 2019\n" "Language-Team: Mongolian (https://www.transifex.com/mirumee/teams/34782/mn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,32 +22,82 @@ msgstr "" "Language: mn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "И-мэйл" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "И-мэйл" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Нэр" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Овог" @@ -152,12 +202,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Нэр" @@ -177,37 +227,37 @@ msgctxt "Address" msgid "Address" msgstr "" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -221,17 +271,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -250,317 +300,303 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "И-мэйл" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -578,7 +614,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -603,7 +639,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "" @@ -618,91 +654,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -712,17 +752,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -733,153 +773,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -891,35 +951,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -929,58 +989,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -990,18 +1045,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1011,13 +1066,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1037,12 +1092,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1087,12 +1142,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "нэр" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1102,33 +1157,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Эрэмбэлэхээр" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1174,170 +1229,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1784,7 +1859,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1796,44 +1871,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1843,7 +1894,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1898,45 +1949,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2068,6 +2129,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2178,8 +2254,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2263,7 +2339,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2507,7 +2583,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2517,47 +2593,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Нийтлэгдсэн" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3116,7 +3192,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3346,393 +3422,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5684,24 +5760,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6248,6 +6325,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6255,7 +6338,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/nb/LC_MESSAGES/django.mo b/locale/nb/LC_MESSAGES/django.mo index 85723722a60..98d1448c4a1 100644 Binary files a/locale/nb/LC_MESSAGES/django.mo and b/locale/nb/LC_MESSAGES/django.mo differ diff --git a/locale/nb/LC_MESSAGES/django.po b/locale/nb/LC_MESSAGES/django.po index 7c4d65d0448..7240cf32a9e 100644 --- a/locale/nb/LC_MESSAGES/django.po +++ b/locale/nb/LC_MESSAGES/django.po @@ -4,17 +4,17 @@ # Mirumee Software , 2017. # # Translators: -# Magnus Lund , 2018 # Joachim Lindbo , 2019 +# Magnus Lund , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Joachim Lindbo , 2019\n" +"Last-Translator: Magnus Lund , 2019\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/mirumee/teams/34782/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,32 +22,82 @@ msgstr "" "Language: nb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Epost" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Passord" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Epost" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Denne eposten er allerede registrert" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Fornavn" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Etternavn" @@ -152,12 +202,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Fornavn" @@ -177,37 +227,37 @@ msgctxt "Address" msgid "Address" msgstr "" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Distrikt" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -221,17 +271,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -250,136 +300,142 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Frakt" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Antall" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Beklager. Dette produktet er for øyeblikket utilgjengelig" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Beklager. Dette produktet er for øyeblikket utsolgt." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oops. Vi kunne ikke finne dette produktet." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Land" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Skriv inn ny adresse" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adresse" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Skriv inn ny adresse" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Samme som frakt" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adresse" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Fraktmetode" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Feil eller utløpt rabattkode" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Gavekort eller rabattkode" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -387,182 +443,162 @@ msgstr "" "Beklager. Vi har ikke så mange varer på lager. Antallet ble satt til " "maksimalt tilgjengelig." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Din ordre krever ikke frakt." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Vennligst velg en fraktmetode først." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Dette tilbudet er bare gyldig for utvalgte produkter." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Denne kupongen er utløpt. Vennligst gå gjennom ordren din." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Vennligst gå gjennom ordren din." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -580,7 +616,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Du er nå logget inn som {}" @@ -605,7 +641,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -620,91 +656,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Frakt" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Gratis frakt" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s rabatt på frakt" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s rabatt" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Dette tilbudet er bare gyldig for ordre over %(amount)s" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Rabatt gjelder ikke for dette produktet" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -714,17 +754,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -735,153 +775,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Ordre ble lagt inn" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -893,35 +953,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Betaling finnes ikke" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -931,58 +991,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -992,18 +1047,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1013,13 +1068,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1039,12 +1094,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1089,12 +1144,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "navn" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1104,33 +1159,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1176,170 +1231,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1786,7 +1861,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1798,44 +1873,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1845,7 +1896,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1900,45 +1951,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Antall" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2070,6 +2131,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2180,8 +2256,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2265,7 +2341,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2509,7 +2585,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2519,47 +2595,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3118,7 +3194,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3348,393 +3424,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Antall" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Frakt" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5686,24 +5762,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6250,6 +6327,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6257,7 +6340,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/nb/LC_MESSAGES/djangojs.mo b/locale/nb/LC_MESSAGES/djangojs.mo index 1314c242e70..5416c92980a 100644 Binary files a/locale/nb/LC_MESSAGES/djangojs.mo and b/locale/nb/LC_MESSAGES/djangojs.mo differ diff --git a/locale/nl/LC_MESSAGES/django.mo b/locale/nl/LC_MESSAGES/django.mo index 72cf1e00bea..7b1ca0d66da 100644 Binary files a/locale/nl/LC_MESSAGES/django.mo and b/locale/nl/LC_MESSAGES/django.mo differ diff --git a/locale/nl/LC_MESSAGES/django.po b/locale/nl/LC_MESSAGES/django.po index 17b8ec519c8..accafdcc990 100644 --- a/locale/nl/LC_MESSAGES/django.po +++ b/locale/nl/LC_MESSAGES/django.po @@ -4,9 +4,9 @@ # Mirumee Software , 2017. # # Translators: -# Dominique Veenman , 2018 # Patryk Zawadzki , 2018 # Joost Aafjes , 2019 +# Dominique Veenman , 2019 # Roy Waterman , 2019 # #, fuzzy @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Roy Waterman , 2019\n" "Language-Team: Dutch (https://www.transifex.com/mirumee/teams/34782/nl/)\n" @@ -24,32 +24,82 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "E-mail" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Wachtwoord" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "E-mail" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Dit emailadres is al geregistreerd." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "" @@ -154,12 +204,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "ZIP code" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Land" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "" @@ -179,37 +229,37 @@ msgctxt "Address" msgid "Address" msgstr "Adres" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Stad" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Wijk/buurt" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Postcode" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Staat of provincie" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefoon nummer" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Adres" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Adres" @@ -223,17 +273,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Deze waarde is ongeldig voor het geselecteerde land" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Toestemming omschrijving" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Toestemming omschrijving" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Toestemming omschrijving" @@ -254,40 +304,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Je bent nu uitgelogd." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Gebruiker is aangemaakt" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Wachtwoord met succes gewijzigd" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adres met succes gewijzigd" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adres is nu verwijderd" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Controleer uw emailinbox op een bevestigingsmail " -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -296,96 +346,102 @@ msgstr "" "Uw account is met succes verwijderd. Bij eventuele problemen of vragenneem " "dan conctact met ons op." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Betaling en facturering" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Verzending" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" -msgstr "Aantal" +msgstr "Hoeveelheid" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Sorry, dit product is momenteel niet beschikbaar." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Sorry, dit product is momenteel niet op voorraad." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oeps, we kunnen dit product niet vinden." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Nog maar %d op voorraad." -msgstr[1] "Nog maar %d op voorraad." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Land" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "E-mail" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Voer een nieuw adres in" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adres" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Voer een nieuw adres in" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Identiek aan verzendadres" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adres" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Verzendmethode" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Deze kortingscode is ongeldig" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Cadeaukaart of kortingscode" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -393,182 +449,162 @@ msgstr "" "Sorry, zoveel hebben we niet op voorraad. Het aantal is gewijzigd naar wat " "op dit moment bescikbaar is." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Je bestelling hoeft niet verzonden te worden." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Kies aub eerst een verzendmethode." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Deze kortingsbon is niet geldig in jouw land" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Deze aanbieding is alleen geldig voor geselecteerde producten." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Kortingsbon is verlopen. Orderplaatsing is afgebroken" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Deze cadeaubon is verlopen, herzie uw order" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Doorloop aub nogmaals het betaalproces" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "accommodatie" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "toelating tot culturele evenementen" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "toelating tot entertainment evenementen" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "toelating tot sport evenementen" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reclame" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "agrarische benodigdheden" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "babyvoeding" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "fietsen" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "boeken" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "kinderkleding" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "fossiele brandstoffen" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "huishoudelijke diensten" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-books" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "etenswaren" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotel" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "medicinaal" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "kranten en tijdschriften" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "openbaar vervoer" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "geneesmiddelen" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "gebouwrenovatie's" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restaurants" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "sociale huisvesting" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standaard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "water" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -586,7 +622,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -611,7 +647,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -626,91 +662,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Verzending" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Gratis verzenden" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s op verzenden" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s op" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Deze aanbieding is alleen geldig voor bestellingen vanaf %(amount)s" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Korting niet van toepassing op dit product" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -720,17 +760,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -741,153 +781,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -899,35 +959,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Betaling bestaat niet" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "We konden " -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "De order is aan jou account toegewezen" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Beheer pagina's" @@ -937,58 +997,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Terugbetaling" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Incassering" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -998,18 +1053,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Betaalstatus" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1019,13 +1074,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1045,12 +1100,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1095,12 +1150,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "niet op voorraad" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "Naam" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "Prijs" @@ -1110,33 +1165,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "voor het laatst bijgewerkt" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Prijs" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Zoekopdracht" @@ -1182,170 +1237,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1799,7 +1874,7 @@ msgstr "Zoeken" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Je winkelwagentje" #: templates/base.html:202 @@ -1811,44 +1886,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Stijlgids" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotaal" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Ga naar winkelwagentje" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Kassa" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Je winkelwagentje is leeg." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Bekijk onze uitverkoop" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Home" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotaal" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Verzendkosten voor:" @@ -1858,7 +1909,7 @@ msgid "Total" msgstr "Totaal" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1913,45 +1964,55 @@ msgid "Total" msgstr "Totaal" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Je winkelwagentje" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Winkelwagen" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Product" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" -msgstr "Aantal" +msgstr "Hoeveelheid" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Prijs" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Kassa" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Je winkelwagentje is leeg." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Bekijk onze uitverkoop" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2083,6 +2144,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Plaats bestelling" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Ga naar winkelwagentje" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Kassa" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2193,8 +2269,8 @@ msgstr "Verkopen" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2278,8 +2354,8 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Uitgifte:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2522,7 +2598,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2532,47 +2608,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Bekijk op de website" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Annuleer" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Update" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Maak aan" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Gepubliceerd" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Conceptversie" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3131,7 +3207,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Totaal" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3361,393 +3437,393 @@ msgid "Edit address" msgstr "Bewerk adres" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Verzendadres" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Factuuradres" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Annuleer bestelling" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Druk af" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Details" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Betalingen" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Geschiedenis" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Betalingen" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Uitstaande balans" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Vooraf goedgekeurd bedrag" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Geïncasseerd bedrag" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Incassering" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Terugbetaling" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Bewerken" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Geplaatst op" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Artikel" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Prijs" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Hoeveelheid" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Totaal" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Wijzig aantal" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Verwijder regel" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Verzending" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Totaal" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Bekijk op de website" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Tracking nummer: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Annuleer" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Opmerkingen bij bestelling" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Er zijn geen opmerkingen bij deze bestelling" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Voeg opmerking toe" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Transactiekenmerk" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Datum" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Betaalstatus" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Bedrag" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "Nummer %(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Voor deze bestelling zijn geen betalingen gedaan." @@ -5703,24 +5779,25 @@ msgstr "Aanbevolen producten" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(optioneel)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Bestand" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6277,6 +6354,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Factuuradres" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6284,7 +6367,7 @@ msgid "Shipping address" msgstr "Verzendadres" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/nl/LC_MESSAGES/djangojs.mo b/locale/nl/LC_MESSAGES/djangojs.mo index 1b12c5040b0..fa3c9523628 100644 Binary files a/locale/nl/LC_MESSAGES/djangojs.mo and b/locale/nl/LC_MESSAGES/djangojs.mo differ diff --git a/locale/pl/LC_MESSAGES/django.mo b/locale/pl/LC_MESSAGES/django.mo index adee4e1014d..4b13264f801 100644 Binary files a/locale/pl/LC_MESSAGES/django.mo and b/locale/pl/LC_MESSAGES/django.mo differ diff --git a/locale/pl/LC_MESSAGES/django.po b/locale/pl/LC_MESSAGES/django.po index 62986f96882..c3eea28a714 100644 --- a/locale/pl/LC_MESSAGES/django.po +++ b/locale/pl/LC_MESSAGES/django.po @@ -4,23 +4,23 @@ # Mirumee Software , 2017. # # Translators: -# Krzysiek Kondracki , 2018 # Radosław Trojanowski , 2019 -# Patryk Zawadzki , 2019 -# Filip Kucharczyk, 2019 -# Szymon Jasiński , 2019 # Piotr Szyma , 2019 +# Krzysiek Kondracki , 2019 # Kamil Ciemniewski , 2019 # Michał Sipa , 2019 +# Patryk Zawadzki , 2019 +# Filip Kucharczyk, 2019 +# Szymon Jasiński , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Michał Sipa , 2019\n" +"Last-Translator: Szymon Jasiński , 2019\n" "Language-Team: Polish (https://www.transifex.com/mirumee/teams/34782/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,32 +28,82 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "E-mail" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Hasło" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "E-mail" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Ten e-mail jest już zarejestrowany." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Imię" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Nazwisko" @@ -158,12 +208,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Kod ZIP" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Kraj" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Imię" @@ -183,37 +233,37 @@ msgctxt "Address" msgid "Address" msgstr "Adres" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Miasto" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Dzielnica" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Kod pocztowy" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Stan lub prowincja" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Numer telefonu" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Ulica, kod pocztowy, nazwa firmy" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Mieszkanie, apartament, jednostka, budynek, piętro itp" @@ -227,17 +277,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Podana wartość nie jest poprawna dla wybranego kraju" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Zarządzaj klientami." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Zarządzaj pracownikami." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Wciel się w klienta" @@ -258,40 +308,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Nastąpiło poprawne wylogowanie." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Użytkownik został utworzony" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Hasło zostało zmienione." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Konto zostało zaktualizowane." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adres został zaktualizowany." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adres został usunięty." -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Sprawdź swoją skrzynkę mailową żeby potwierdzić usunięcie konta" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -300,98 +350,104 @@ msgstr "" "Twoje konto zostało pomyślnie usunięte. W razie problemów lub pytań prosimy " "o kontakt." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Adres płatności" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Dostawa" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Ilość" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Przepraszamy. Ten produkt jest aktualnie niedostępny." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Przepraszamy. Tymczasowo nie mamy tego produktu w magazynie." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Kurczę, nie możemy znaleźć tego produktu." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Pozostała tylko %d sztuka w magazynie." -msgstr[1] "Pozostały tylko %d sztuki w magazynie." -msgstr[2] "Pozostało tylko %d sztuk w magazynie." -msgstr[3] "Pozostało tylko %d sztuki w magazynie." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Kraj" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "E-mail" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Podaj nowy adres" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adres" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Podaj nowy adres" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Taki sam jak adres dostawy" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adres" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Sposób dostawy" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Kod zniżkowy niepoprawny lub wygasły" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Karta upominkowa albo kod zniżkowy" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -399,182 +455,162 @@ msgstr "" "Przykro nam. Wybrana ilość produktów nie jest już dostępna. Zmieniono na " "maksymalną dostępną ilość produktów." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Twoje zamówienie nie wymaga dostawy." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Proszę najpierw wybrać sposób dostawy." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Ta oferta nie jest ważna w Twoim kraju." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Ta oferta obowiązuje jedynie dla wybranych produktów." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Voucher stracił ważność. Składanie zamówienia przerwano." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Nie wybrano sposobu dostawy" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Nie wybrano adresu dostawy" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Wybrany sposób dostawy jest niedostępny dla tego adresu dostawy" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Nie podano adresu płatności" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Ten kupon wygasł. Przejrzyj swoje zamówienie." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Przejrzyj swoje zamówienie." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "nocleg" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "wstęp na imprezy kulturalne" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "wstęp na imprezy rozrywkowe" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "wstęp na imprezy sportowe" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reklama" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "artykuły rolne" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "żywność dla niemowląt" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "rowery" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "książki" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "ubrania dziecięce" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "paliwo krajowe" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "usługi domowe" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-booki" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "artykuły spożywcze" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotele" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "artykuły medyczne" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "gazety" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "transport pasażerów" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "farmaceutyki" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "remonty nieruchomości" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restauracje" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "mieszkania socjalne" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standardowa" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "woda" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "wino" @@ -594,7 +630,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Dowolny kraj" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Jesteś zalogowany jako {}" @@ -619,7 +655,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -634,93 +670,97 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Niektóre produkty" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Niektóre kolekcje produktów" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Niektóre kategorie produktów" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Dostawa" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Darmowa dostawa" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "Dostawa tańsza o %(discount)s" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(product_num)dprodukty przecenione o %(discount)s" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(collections_num)dkolekcje przecenione o %(discount)s" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(categories_num)dkategorie przecenione o %(discount)s" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "Zniżka o %(discount)s" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Ta oferta obowiązuje jedynie dla zamówień powyżej %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Zarządzaj wyprzedażami i zniżkami" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Zniżka nie stosuje się do tego produktu" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Pozostał tylko %(quantity)dprzedmiot do realizacji" -msgstr[1] "Pozostały tylko %(quantity)d przedmioty do realizacji" -msgstr[2] "Pozostało tylko %(quantity)d przedmiotów do realizacji" -msgstr[3] "Pozostało tylko %(quantity)d przedmiotów do realizacji" - -#: saleor/graphql/order/mutations/fulfillments.py:218 +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Ta realizacja nie może zostać anulowana" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Zarządaj nawigacją" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -730,17 +770,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategoria:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Kolekcja:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Strona:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -751,170 +791,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Niezrealizowane" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Częściowo zrealizowane" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Zrealizowane" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Anulowane" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Zrealizowane" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Anulowane" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Potwierdzenie płatności" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Potwierdzenie wysyłki" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Potwierdzenie realizacji" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Potwierdzenie zamówienia" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -"Stworzono zamówienie na podstawie zamówienia roboczego przez %(user_name)s" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Płatność została unieważniona przez %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Pomyślnie zwrócono: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Pomyślnie pobrano: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -"Zamówienie zostało ręcznie oznaczone jako opłacone przez %(user_name)s" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Zamówienie zostało anulowane przez %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Zmieniliśmy stan magazynowy o %(quantity)d przedmiot" -msgstr[1] "Zmieniliśmy stan magazynowy o %(quantity)d przedmioty" -msgstr[2] "Zmieniliśmy stan magazynowy o %(quantity)d przedmiotów" -msgstr[3] "Zmieniliśmy stan magazynowy o %(quantity)d przedmiotów" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s dodał notatkę: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Realizacja nr %(fulfillment)s zostałą anulowana przez %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "Zralizowano %(quantity_fulfilled)d sztukę" -msgstr[1] "Zralizowano %(quantity_fulfilled)d sztuki" -msgstr[2] "Zralizowano %(quantity_fulfilled)d sztuk" -msgstr[3] "Zralizowano %(quantity_fulfilled)d sztuk" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Zamówienie zostało złożone" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Zamówienie zostało w pełni opłacone" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "Email %(email_type)s został wysłany do klienta (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Zamówienie zostało zaktualizowane przez %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Śledzenie realizacji nr %(fulfillment)s zostało zaktualzowane na " -"%(tracking_number)s przez %(user_name)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -"%(quantity)d przedmiot sprzedany ponad stan magazynowy dla tego zamówienia. " -msgstr[1] "" -"%(quantity)d przedmioty sprzedane ponad stan magazynowy dla tego zamówienia." -" " -msgstr[2] "" -"%(quantity)d przedmiotów sprzedanych ponad stan magazynowy dla tego " -"zamówienia." -msgstr[3] "" -"%(quantity)d przedmiotów sprzedanych ponad stan magazynowy dla tego " -"zamówienia." +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -926,23 +969,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Płatność nie istnieje" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Płatność nie może zostać anulowana." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Zarządzanie zamówieniami" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Realizacja nr %s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -951,12 +994,12 @@ msgstr "" "Nie mogliśmy przypisać zamówienia do Twojego konta, ponieważ nie zgadza się " "adres e-mail" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Zamówienie zostało przypisane do Twojego konta" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Zarządzaj stronami." @@ -966,58 +1009,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Ręczne" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Autoryzacja" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Opłata" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Zwróć" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Pobierz" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Unieważnij" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Nie opłacone" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "Częściowo opłacone" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "Opłacone" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Częściowo zwrócone" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Zwrócone" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "Nie można przetworzyć transakcji. Spróbuj ponownie za chwilę" @@ -1027,7 +1065,7 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Status płatności" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." @@ -1035,12 +1073,12 @@ msgstr "" "Ustawienie statusu płatności na {} nie jest obsługiwane. Użyj panelu " "sterowania aby dokonać częściowego zwrotu płatności." -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Zamówienie nie zostało obciążone" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Niepoprawne dane płatności" @@ -1050,13 +1088,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Zamówienie nie mogło być kontynuowane." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "Waluta nie jest obsługiwana: %(currency)s" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Zapłać teraz z Razorpay" @@ -1076,12 +1114,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Zamówienie nie zostało obciążone" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Całkowita płatność" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1128,12 +1166,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "brak w magazynie" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nazwy" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "ceny" @@ -1143,33 +1181,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "ostatnia aktualizacja" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sortuj według" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Cena" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Zarządzaj produktami." -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "digital_product" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Szukane hasło" @@ -1215,170 +1253,190 @@ msgid "Spanish" msgstr "hiszpański" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Estoński" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "perski" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "francuski" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Hinduski" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "węgierski" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Indonezyjski" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "włoski" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "japoński" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "koreański" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "mongolski" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "norweski" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "holenderski" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "polski" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Portugalski Brazylijski" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "rumuński" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "rosyjski" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "słowacki" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Serbski" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "Suahili" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Szwedzki" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "Tajski" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "turecki" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "ukraiński" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "wietnamski" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Chiński prosty" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Chiński tradycyjny" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Unia Europejska" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Symulowana bramka" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Metody dostawy według wartości zamówienia" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Metody dostawy według wagi zamówienia" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "Liczba krajów: %(num_of_countries)d" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Zarządzaj wysyłkami." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s i droższe" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s do %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s i cięższe" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s do %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Zarządzaj ustawieniami." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "Zarządzaj tłumaczeniami." @@ -1838,7 +1896,7 @@ msgstr "Szukaj" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Twój koszyk" #: templates/base.html:202 @@ -1850,44 +1908,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Wzornik" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Suma częściowa" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Koszty dostawy oraz podatek obliczane są podczas składania zamówienia" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Przejdź do koszyka" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Do kasy" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Twój koszyk nie zawiera żadnych produktów." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Sprawdź nasze promocje" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Strona główna" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Suma częściowa" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Koszt dostawy dla:" @@ -1897,7 +1931,7 @@ msgid "Total" msgstr "Suma" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Koszty dostawy oraz podatek obliczane są podczas składania zamówienia" @@ -1952,45 +1986,55 @@ msgid "Total" msgstr "Suma" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Twój koszyk" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Koszyk" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produkt został usunięty z koszyka" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produkt" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Ilość" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Cena" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Złóż zamówienie" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Opróżnij koszyk" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Twój koszyk nie zawiera żadnych produktów." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Sprawdź nasze promocje" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2126,6 +2170,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Złóż zamówienie" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Koszty dostawy oraz podatek obliczane są podczas składania zamówienia" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Przejdź do koszyka" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Złóż zamówienie" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2241,8 +2300,8 @@ msgstr "Sprzedaż" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2326,8 +2385,8 @@ msgstr "Strony" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Wydanie:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2577,7 +2636,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Dodaj nową kolekcję" @@ -2587,47 +2646,47 @@ msgstr "Dodaj nową kolekcję" msgid "Collections" msgstr "Kolekcje" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Usuń kolekcję" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Zobacz na stronie" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Dostępność" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Anuluj" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Aktualizuj" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Utwórz" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Opublikowany" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Szkic" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Nie można cofnąć publikację kolekcji strony domowej" @@ -3204,7 +3263,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Suma" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3439,393 +3498,393 @@ msgid "Edit address" msgstr "Edytuj adres" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Adres dostawy" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Adres nabywcy" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Anuluj zamówienie" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Usuń wersję roboczą zamówienia" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Drukuj" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Szczegóły" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Płatności" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Historia" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Płatności" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "Nie dotyczy" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Do zapłaty" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Kwota zablokowana" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "Nie dotyczy" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Kwota pobrana" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Pobierz" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Zwróć" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Unieważnij" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Oznacz jako opłacone" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Klient" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Edytuj klienta" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Edytuj" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Brak adresu dostawy" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Taki sam jak adres wysyłki" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Brak adresu nabywcy" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Zamówienie robocze # %(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Zamówienie nr %(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Złożone" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Przedmiot" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Cena" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Ilość" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Suma" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Zmień ilość" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Usuń linię" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Edytuj wysyłkę" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Dostawa (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Dostawa" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Podatki (wliczone)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Podatki" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Zniżka (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Zniżka" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Edytuj kupon zniżkowy" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Edytuj kupon zniżkowy" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Edytuj zniżkę" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Edytuj zniżkę" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Razem do zapłaty" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Dokończ realizację zamówienia" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Zrealizuj" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Dodaj produkt do zamówienia" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Dodaj produkt" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Stwórz zamówienie" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Stwórz zamówienie" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Faktura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Zobacz na stronie" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Realizacja nr %(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Numer referencyjny przesyłki: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Anuluj realizację" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Anuluj" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Edytuj numer referencyjny przesyłki" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Edytuj numer referencyjny" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Dodaj numer referencyjny" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Etykiety przesyłek" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Notatka do klienta" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Brak notatek od klienta do tego zamówienia." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Notatki do zamówienia" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Brak notatek przypiętych do tego zamówienia." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Dodaj notatkę" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Numer transakcji" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Data" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Status płatności" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Kwota" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "Nr %(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Brak płatności za to zamówienie." @@ -5846,24 +5905,25 @@ msgstr "Produkty umieszczone na stronie głównej" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(opcjonalne)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Plik" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6453,6 +6513,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Adres nabywcy" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Brak adresu nabywcy" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6460,7 +6526,7 @@ msgid "Shipping address" msgstr "Adres dostawy" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Ta przesyłka nie wymaga płatności za zamówienie" diff --git a/locale/pl/LC_MESSAGES/djangojs.mo b/locale/pl/LC_MESSAGES/djangojs.mo index ec2ca96ce24..38d9a78df36 100644 Binary files a/locale/pl/LC_MESSAGES/djangojs.mo and b/locale/pl/LC_MESSAGES/djangojs.mo differ diff --git a/locale/pt/LC_MESSAGES/django.mo b/locale/pt/LC_MESSAGES/django.mo index 17fe2c70572..3191fe71ad0 100644 Binary files a/locale/pt/LC_MESSAGES/django.mo and b/locale/pt/LC_MESSAGES/django.mo differ diff --git a/locale/pt/LC_MESSAGES/django.po b/locale/pt/LC_MESSAGES/django.po index 4d6b192db4f..f922611eb46 100644 --- a/locale/pt/LC_MESSAGES/django.po +++ b/locale/pt/LC_MESSAGES/django.po @@ -4,6 +4,7 @@ # Mirumee Software , 2017. # # Translators: +# Pedro Santos , 2019 # Carlos Fontinha , 2019 # #, fuzzy @@ -11,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Carlos Fontinha , 2019\n" "Language-Team: Portuguese (https://www.transifex.com/mirumee/teams/34782/pt/)\n" @@ -21,142 +22,192 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Senha" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Este e-mail já foi registado." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Nome" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Apelido" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "Área" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "Município" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "Departamento" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "Distrito" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "Fazer / si" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "Código aéreo" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "Emirado" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "ilha" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "Bairro" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" msgstr "Oblast" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "Freguesia" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "PIN" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "Código postal" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "Prefeitura" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "Província" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "Estado" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "Subúrbio" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "Cidade Natal" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "Vila/Município" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "CEP" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "País" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Nome" @@ -176,57 +227,61 @@ msgctxt "Address" msgid "Address" msgstr "Endereço" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Cidade" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Distrito" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Código Postal" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Estado ou Província" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Número de telefone" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Endereço da rua, código postal, nome da empresa" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Apartamento, quarto, unidade, prédio, andar, etc" -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "O número de telefone fornecido não é válido." + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Este valor é inválido para o país selecionado" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Gerir clientes." -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Gerir equipa." -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Representar clientes." @@ -247,44 +302,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "O número de telefone fornecido não é válido." - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Você foi desconectado com sucesso." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Usuário foi criado" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Senha mudada com sucesso." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Conta atualizada com sucesso." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Endereço atualizado com sucesso." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Endereço removido com sucesso" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Por favor verifique sua caixa de entrada por um e-mail de confirmação" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -293,97 +344,103 @@ msgstr "" "Sua conta foi removida com sucesso. Caso ocorra algum problema ou haja " "alguma duvida sinta-se a vontade para nos contatar." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Cobrança" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Entrega" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Quantidade" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "" "As nossas desculpas. Presentemente, este artigo não se encontra disponível." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "As nossas desculpas. Este artigo encontra-se atualmente esgotado." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Não foi possível encontrar o artigo pretendido." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Somente %d existe em armazém." -msgstr[1] "Somente %d existem em armazém." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "País" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Insira a sua nova morada" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Endereço" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Insira seu novo endereço" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Mesmo que o transporte" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Endereço" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Método de envio" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "O código de desconto está incorreto ou encontra-se expirado" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Cartão de presente ou código de desconto" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -391,182 +448,162 @@ msgstr "" "As nossas desculpas. Não temos itens o suficiente em armazém. Quantidade foi" " ajustado para o máximo disponível no momento." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "O seu pedido não requer transporte." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Por favor, selecione primeiro, um método de envio." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Esta promoção não é valida em seu pais." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Esta oferta é válida apenas para os itens selecionados." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Voucher expirado. Pedido foi anulado." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Método de entrega não selecionado" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Endereço de entrega não selecionado" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Método de entrega não é válido para o endereço de entrega definido" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Não se encontra definida a morada de faturação" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Este voucher expirou. Por favor, verifique o seu checkout." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Por favor, verifique o seu checkout." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "alojamento" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "acesso para eventos culturais" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "acesso para eventos de entretenimento" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "acesso para eventos desportivos" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "propaganda" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "produtos agrícolas" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "comida de bebê" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "bicicletas" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "livros" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "roupas de criança" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "Combustível doméstico" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "Serviços domésticos" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "Livros eletrônicos" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "Comestíveis" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotéis" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "medicamentos" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "jornais" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "Transporte de passageiros" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "fármacos" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "renovação de propriedades" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restaurantes" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "habitação social" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "Padrão" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "água" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "vinho" @@ -584,7 +621,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Qualquer país" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Encontra-se ligado como {}" @@ -609,7 +646,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -624,91 +661,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Produtos específicos" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Coleções específicas de produtos" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Categorias específicas de produtos" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Entrega" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Entrega grátis" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s de desconto no transporte" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s de desconto em %(product_num)d produtos" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s de desconto em %(collections_num)d coleções" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s de desconto em %(categories_num)d categoria" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s de desconto" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Esta oferta só é válida para encomendas superiores %(amount)s." -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Gerir vendas e cupões" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Desconto não aplicável para este produto" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Somente %(quantity)d item restante para completar" -msgstr[1] "Somente %(quantity)d itens restantes para completar." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Este atendimento de pedido de cliente não pode ser cancelado" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Gerenciar navegação." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -718,17 +759,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Categoria:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Coleção:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Página:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -739,155 +780,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Incompleto" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Parcialmente completo" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Completo" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Cancelado" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Completo" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Cancelado" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Confirmação do pagamento" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Confirmação de envio" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Confirmação de Fulfillment" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Confirmação do pedido" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Pedido criado de um pedido de rascunho por %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Reembolso completo: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Captura completa: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Pedido manualmente marcado como pago por %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Pedido foi cancelado por %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Nós reabastecendo %(quantity)d item" -msgstr[1] "Nós reabastecemos %(quantity)d itens" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s adicionou uma nota: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Deferimento #%(fulfillment)s cancelado por %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "Deferido %(quantity_fulfilled)d item" -msgstr[1] "Deferido %(quantity_fulfilled)d itens" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Pedido foi realizado" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Pedido foi pago" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s e-mail foi enviado ao cliente (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Detalhes do pedido foi atualizado por %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Fulfillment #%(fulfillment)s rastreamento foi atualizado de " -"%(tracking_number)s por %(user_name)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "%(quantity)d item de linha foi vendido neste pedido." -msgstr[1] "%(quantity)d itens de linha foram vendidos neste pedido." +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -899,23 +958,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "O pagamento não existe" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Pagamento não pode ser cancelado" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Gerir pedidos." -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Deferimento #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -924,12 +983,12 @@ msgstr "" "Nós não podemos vincular o pedido da sua conta, pois o endereço de e-mail " "está incorreto" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "O pedido foi vinculado à sua conta" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Gerenciar páginas." @@ -939,58 +998,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manual" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Autorização" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Cobrança" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Restituição" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Receber" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Cancelar" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Sem cobrança" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Parcialmente reembolsado" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Totalmente reembolsado" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1002,18 +1056,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Status do pagamento" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "O pedido não foi cobrado." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Os dados de pagamento eram inválidos." @@ -1023,13 +1077,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "O pedido não pôde ser processado." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Page agora com Razorpay" @@ -1049,15 +1103,16 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "O pedido não foi cobrado." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Pagamento total" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" +"Encomendas com pagamentos que não podem ser marcados manualmente como pagos." #: saleor/product/__init__.py:15 msgctxt "Product status" @@ -1099,12 +1154,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "Esgotado" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nome" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "preço" @@ -1114,28 +1169,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "última atualização" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Ordenar por" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Preço" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Gerenciar produtos." -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Pesquisa" @@ -1181,166 +1241,190 @@ msgid "Spanish" msgstr "Espanhol" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "Estoniano" + +#: saleor/settings.py:73 msgid "Persian" msgstr "Persa" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Francês" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" -msgstr "" +msgstr "Hindi" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Húngaro" -#: saleor/settings.py:76 -msgid "Indonesian" +#: saleor/settings.py:77 +msgid "Armenian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:78 +msgid "Indonesian" +msgstr "Indonésio" + +#: saleor/settings.py:79 msgid "Italian" msgstr "Italiano" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japonês" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Coreano" -#: saleor/settings.py:80 -msgid "Mongolian" +#: saleor/settings.py:82 +msgid "Lithuanian" msgstr "" -#: saleor/settings.py:81 +#: saleor/settings.py:83 +msgid "Mongolian" +msgstr "Mongol" + +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norueguês" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Holandês" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polaco" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Português Brasileiro" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Romena" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Russo" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Eslovaco" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Sérvio" -#: saleor/settings.py:89 +#: saleor/settings.py:94 +msgid "Swahili" +msgstr "" + +#: saleor/settings.py:95 msgid "Swedish" msgstr "Sueco" -#: saleor/settings.py:90 +#: saleor/settings.py:96 msgid "Thai" msgstr "Tailandês" -#: saleor/settings.py:91 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turco" -#: saleor/settings.py:92 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ucraniano" -#: saleor/settings.py:93 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietinamita" -#: saleor/settings.py:94 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Chinês simplificado" -#: saleor/settings.py:95 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Chinês tradicional" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "União Europeia" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "gateway teste" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Frete baseado no preço" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Frete baseado no peso" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d países" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Gerir entregas" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s até" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s a %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s até" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s a %(max_weight)s" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Gerenciar configurações" -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "Gerir traduções" @@ -1802,7 +1886,7 @@ msgstr "Pesquisar" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Seu carrinho" #: templates/base.html:202 @@ -1814,44 +1898,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Guia de estilo" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotal" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Frete e Impostos calculados no checkout" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Ir ao carrinho" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Comprar" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Não existem artigos no seu carrinho de compras." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Confira nossos produtos" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Início" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotal" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Custo do frete para:" @@ -1861,7 +1921,7 @@ msgid "Total" msgstr "Total" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Frete e Impostos calculados no checkout" @@ -1916,45 +1976,55 @@ msgid "Total" msgstr "Total" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Seu carrinho" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Carrinho" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produto foi removido do carrinho" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produtos" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Quantidade" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Preço" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" -msgstr "Comprar" +msgstr "Checkout" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Limpar carrinho" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Não existem artigos no seu carrinho de compras." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Confira nossos produtos" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2025,6 +2095,10 @@ msgid "" " Please enter an alternative shipping address or contact us, if you think that's a mistake.\n" " " msgstr "" +"\n" +"Infelizmente não enviamos para o país selecionado.\n" +"\n" +"Por favor, entre um endereço de envio alternativo ou entre em contato conosco se achar que é um erro." #: templates/checkout/snippets/addresses_form.html:4 msgctxt "Checkout addresses form label" @@ -2086,6 +2160,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Faça a encomenda" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Frete e Impostos calculados no checkout" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Ir ao carrinho" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Checkout" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2098,6 +2187,8 @@ msgid "" "Warning! You are previewing a collection that will become " "visible on %(date)s." msgstr "" +"Atenção! Você está visualizando um produto que se tornará " +"visível em %(date)s." #: templates/collection/index.html:21 msgctxt "Unavailable collection detail text" @@ -2200,8 +2291,8 @@ msgstr "Vendas" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2285,8 +2376,8 @@ msgstr "Páginas" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "Limpar:" +msgid "Release:" +msgstr "" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2537,7 +2628,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Adicionar nova coleção" @@ -2547,47 +2638,47 @@ msgstr "Adicionar nova coleção" msgid "Collections" msgstr "Coleções" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Remover coleção" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Ver no local" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Disponibilidade" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Cancelar" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Atualizar" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Criar" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Publicado " -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Rascunho" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Não é possível cancelar a publicação da coleção da página inicial" @@ -3169,7 +3260,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Total" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3405,393 +3496,393 @@ msgid "Edit address" msgstr "Editar morada" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Morada de entrega" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Morada para cobrança" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Cancelar Pedido" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Remover pedido" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Imprimir" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detalhes" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Pagamentos" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "História" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Pagamentos" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/D" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Saldo pendente" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Quantidade pré-autorizada" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/D" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Quantidade capturada" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Capturar" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Restituição" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Limpar" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Sinalizar como pago" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Cliente" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Editar detalhes do cliente" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Editar" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Sem endereço de entrega" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Mesmo que o endereço de entrega" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Sem endereço de cobrança" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Transformar Orçamento #%(order)s em Pedido de Compra" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Pedido de Compra #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Colocado sobre" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Item" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Preço" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Quantidade" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Total" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Alterar quantidade" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Remover linha" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Editar envio" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Envio (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Remessa" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Com Impostos" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Impostos (IVA)" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Desconto (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Desconto" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Editar cupom" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Editar cupom" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Editar desconto" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Editar desconto" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Total geral" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Faturar pedido de compra" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Faturar" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Adicionar produtos ao pedido" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Adicionar produto" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Criar pedido" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Criar pedido" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Fatura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Ver no local" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Processo #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Número de seguimento: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Cancelar processo" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Cancelar" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Editar número de rastreamento" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Editar rastreamento" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Adicionar rastreamento" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Nota" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Observação do cliente" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Não há observações do cliente associadas a esta venda" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Notas de encomenda" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Não há notas associadas a esta encomenda." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Adicionar nota" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID da transação" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Data" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Estado do pagamento" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Montante" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Nenhum pagamento feito para esta encomenda." @@ -4164,7 +4255,7 @@ msgstr "Pedido #%(order_id)s" #, python-format msgctxt "Invoice title" msgid "Invoice for Order #%(order_id)s" -msgstr "" +msgstr "Fatura da encomenda #%(order_id)s" #: templates/dashboard/order/pdf/invoice.html:15 msgctxt "Order invoice" @@ -5832,24 +5923,25 @@ msgstr "Produtos em destaque" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(opcional)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Arquivo" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6288,6 +6380,11 @@ msgid "" "\n" "Please note that this action is permanent and cannot be reversed.\n" msgstr "" +"\n" +"Você está recebendo este e-mail porque você ou outra pessoa solicitou a exclusão da sua conta de usuário em%(domain)s.\n" +"
Clique no link abaixo para excluir sua conta. \n" +"\n" +"Por favor, note que esta ação é permanente e não pode ser revertida.\n" #: templates/templated_email/account/password_reset.email:4 msgctxt "Password reset e-mail subject" @@ -6352,14 +6449,14 @@ msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" -msgstr "tenho boas notícias, a sua encomenda%(order)s já está a caminho" +msgid "Your order %(order)s has been fulfilled" +msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" "\n" "Obrigado pela sua encomenda. Segue em abaixo a lista do artigos encomendados.\n" @@ -6431,6 +6528,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Endereço de cobrança" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Sem endereço de cobrança" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6438,7 +6541,7 @@ msgid "Shipping address" msgstr "Endereço de entrega" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Envio não é obrigatório" @@ -6528,8 +6631,16 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." -msgstr "Obrigado pelo seu pedido. Abaixo está a lista de produtos enviados." +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" +"Obrigado pela sua encomenda. Segue em abaixo a lista do artigos " +"encomendados." + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." +msgstr "Você pode baixar seus produtos digitais clicando no(s) link (s)." #: templates/templated_email/source/confirm_order.mjml:17 #, python-format @@ -6637,6 +6748,9 @@ msgid "" "customer account at %(domain)s.
Click the link below to set up your " "password." msgstr "" +"Você está recebendo este e-mail porque precisa definir uma senha para sua " +"conta de membro da equipe em %(domain)s.
Clique no link abaixo para " +"configurar sua senha." #: templates/templated_email/source/set_password.mjml:16 #, python-format diff --git a/locale/pt/LC_MESSAGES/djangojs.mo b/locale/pt/LC_MESSAGES/djangojs.mo index 8e741b00b14..333e5845880 100644 Binary files a/locale/pt/LC_MESSAGES/djangojs.mo and b/locale/pt/LC_MESSAGES/djangojs.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 0081a881094..ff453cf2eca 100644 Binary files a/locale/pt_BR/LC_MESSAGES/django.mo and b/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index f295bb05c6b..7287cbd7302 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -12,14 +12,14 @@ # Thiago reis , 2018 # Danrley Pereira , 2018 # Andre PS , 2018 -# Roberto Junior , 2018 # Jean Marcos da Rosa , 2019 # Murilo Gonçalves Pereira , 2019 # Eduardo Menezes Rocha , 2019 # wcreis , 2019 -# Rafael Lima , 2019 # Kaiê Guex , 2019 # Kelvin Prado , 2019 +# Rafael Lima , 2019 +# Roberto Junior , 2019 # Geovani Lopes , 2019 # #, fuzzy @@ -27,7 +27,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Geovani Lopes , 2019\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/mirumee/teams/34782/pt_BR/)\n" @@ -37,32 +37,82 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: saleor/account/forms.py:70 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Senha" -#: saleor/account/forms.py:85 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Este e-mail já foi registrado." -#: saleor/account/forms.py:145 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Nome" -#: saleor/account/forms.py:148 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Sobrenome" @@ -236,17 +286,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Este valor é inválido para país selecionado" -#: saleor/account/models.py:159 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Gerenciar clientes." -#: saleor/account/models.py:161 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Gerenciar equipe." -#: saleor/account/models.py:164 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Personificar clientes." @@ -267,40 +317,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:35 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Você foi desconectado com sucesso." -#: saleor/account/views.py:48 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Usuário foi criado" -#: saleor/account/views.py:105 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Senha mudada com sucesso." -#: saleor/account/views.py:115 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Conta atualizada com sucesso." -#: saleor/account/views.py:128 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Endereço atualizado com sucesso." -#: saleor/account/views.py:142 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Endereço removido com sucesso" -#: saleor/account/views.py:159 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Por favor verifique sua caixa de entrada por um e-mail de confirmação" -#: saleor/account/views.py:176 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -353,52 +403,52 @@ msgid_plural "Only %d remaining in stock." msgstr[0] "Somente %d restante em estoque." msgstr[1] "Somente %d restantes em estoque." -#: saleor/checkout/forms.py:188 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "País" -#: saleor/checkout/forms.py:216 saleor/checkout/forms.py:229 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:244 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Insira seu novo endereço" -#: saleor/checkout/forms.py:249 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Endereço" -#: saleor/checkout/forms.py:270 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Insira seu novo endereço" -#: saleor/checkout/forms.py:274 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Mesmo que o transporte" -#: saleor/checkout/forms.py:279 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Endereço" -#: saleor/checkout/forms.py:311 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Método de envio" -#: saleor/checkout/forms.py:358 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Código de desconto incorreto ou expirado" -#: saleor/checkout/forms.py:371 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Cartão de presente ou código de desconto" @@ -412,27 +462,27 @@ msgstr "" "Desculpa. Não temos itens o suficiente em estoque. Quantidade foi ajustado " "para o máximo disponível no momento." -#: saleor/checkout/utils.py:677 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Seu pedido não requer transporte." -#: saleor/checkout/utils.py:683 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Por favor, selecione um método de envio primeiro." -#: saleor/checkout/utils.py:691 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Esta promoção não é valida em seu pais." -#: saleor/checkout/utils.py:717 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Esta oferta é válida apenas para os itens selecionados." -#: saleor/checkout/utils.py:862 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Cupom expirei. Pedido abortado." @@ -913,17 +963,17 @@ msgctxt "An email containing a or some digital link was sent" msgid "The email containing the digital links was sent" msgstr "O email contendo os links foi enviado" -#: saleor/order/forms.py:15 +#: saleor/order/forms.py:16 msgctxt "Payments form label" msgid "Payment Method" msgstr "Método de pagamento" -#: saleor/order/forms.py:35 +#: saleor/order/forms.py:36 msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "O pagamento não existe" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Pagamento não pode ser cancelado" @@ -939,7 +989,7 @@ msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Fulfillment #%s" -#: saleor/order/views.py:203 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -948,7 +998,7 @@ msgstr "" "Nós não podemos vincular o pedido a sua conta pois o endereço de e-mail está" " incorreto" -#: saleor/order/views.py:210 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "O pedido foi vinculado a sua conta" @@ -958,62 +1008,57 @@ msgctxt "Permission description" msgid "Manage pages." msgstr "Gerenciar páginas." -#: saleor/payment/__init__.py:22 +#: saleor/payment/__init__.py:24 msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manual" -#: saleor/payment/__init__.py:71 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Autorização" -#: saleor/payment/__init__.py:72 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Cobrança" - -#: saleor/payment/__init__.py:73 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Restituição" -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Receber" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Vazio" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Sem cobrança" -#: saleor/payment/__init__.py:100 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "Parcialmente cobrado" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "Totalmente cobrado" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Parcialmente reembolsado" -#: saleor/payment/__init__.py:103 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Totalmente reembolsado" -#: saleor/payment/gateways/braintree/__init__.py:69 +#: saleor/payment/gateways/braintree/__init__.py:61 #: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" @@ -1080,7 +1125,7 @@ msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Pagamento total" -#: saleor/payment/utils.py:272 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "Pedidos com pagamentos não podem ser marcados manualmente como pagos." @@ -1156,12 +1201,12 @@ msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:142 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Gerenciar produtos." -#: saleor/product/models.py:364 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "produto_digital" @@ -1212,123 +1257,135 @@ msgid "Spanish" msgstr "Espanhol" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Estoniano" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "Persa" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Francês" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Hindi" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Húngaro" -#: saleor/settings.py:76 +#: saleor/settings.py:77 msgid "Armenian" msgstr "Armênio" -#: saleor/settings.py:77 +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Indonésio" -#: saleor/settings.py:78 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italiano" -#: saleor/settings.py:79 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japonês" -#: saleor/settings.py:80 +#: saleor/settings.py:81 msgid "Korean" msgstr "Coreano" -#: saleor/settings.py:81 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongol" -#: saleor/settings.py:82 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norueguês" -#: saleor/settings.py:83 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Holandês" -#: saleor/settings.py:84 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polonês" -#: saleor/settings.py:85 +#: saleor/settings.py:87 msgid "Portuguese" msgstr "Português" -#: saleor/settings.py:86 +#: saleor/settings.py:88 msgid "Brazilian Portuguese" -msgstr "Português Brasileiro" +msgstr "Português Brasil" -#: saleor/settings.py:87 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Romena" -#: saleor/settings.py:88 +#: saleor/settings.py:90 msgid "Russian" msgstr "Russo" -#: saleor/settings.py:89 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Eslovaco" -#: saleor/settings.py:90 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Sérvio" -#: saleor/settings.py:91 +#: saleor/settings.py:94 msgid "Swahili" msgstr "Suaíli" -#: saleor/settings.py:92 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Sueco" -#: saleor/settings.py:93 +#: saleor/settings.py:96 msgid "Thai" msgstr "Tailandês" -#: saleor/settings.py:94 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turco" -#: saleor/settings.py:95 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ucraniano" -#: saleor/settings.py:96 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietinamita" -#: saleor/settings.py:97 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Chinês simplificado" -#: saleor/settings.py:98 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Chinês tradicional" -#: saleor/settings.py:340 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "União Européia" -#: saleor/settings.py:575 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Gateway fictício" @@ -1802,7 +1859,7 @@ msgstr "Entrar" #: templates/account/signup.html:28 msgctxt "Signup form title" msgid "Create an account" -msgstr "Registar" +msgstr "Criar uma conta" #: templates/account/signup.html:36 msgctxt "Signup form primary action" @@ -1844,8 +1901,8 @@ msgstr "Pesquisar" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Checkout" -msgstr "Seu pedido" +msgid "Your cart" +msgstr "Seu carrinho" #: templates/base.html:202 msgid "Account" @@ -1935,13 +1992,13 @@ msgstr "Total" #: templates/checkout/index.html:7 msgctxt "Checkout page title" -msgid "Your checkout" -msgstr "Seu pedido" +msgid "Your cart" +msgstr "Seu carrinho" #: templates/checkout/index.html:12 msgctxt "Checkout breadcrumb" -msgid "Checkout" -msgstr "Pedido" +msgid "Cart" +msgstr "Carrinho" #: templates/checkout/index.html:22 msgctxt "Checkout message" @@ -1970,13 +2027,13 @@ msgstr "Pedido" #: templates/checkout/index.html:84 msgctxt "checkout page: secondary action, empty the checkout" -msgid "Clear checkout" -msgstr "Limpar pedido" +msgid "Clear cart" +msgstr "Limpar carrinho" #: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 msgctxt "Empty checkout message" -msgid "There are no products in your shopping checkout." -msgstr "Não há produtos em seu pedido de compra" +msgid "There are no products in your shopping cart." +msgstr "Está vazio!" #: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 msgctxt "Empty checkout link" @@ -2125,8 +2182,8 @@ msgstr "Frete e Impostos calculados no checkout" #: templates/checkout_dropdown.html:54 msgctxt "Checkout dropdown secondary action" -msgid "Go to checkout" -msgstr "Ir para pedido" +msgid "Go to cart" +msgstr "Ir ao carrinho" #: templates/checkout_dropdown.html:57 msgctxt "Checkout dropdown primary action" @@ -2256,7 +2313,7 @@ msgstr "Liquidações" #: templates/dashboard/order/list.html:29 msgctxt "Dashboard orders list" msgid "Orders" -msgstr "Encomendas" +msgstr "Pedidos" #: templates/dashboard/base.html:158 #: templates/dashboard/customer/detail.html:9 @@ -5857,7 +5914,7 @@ msgstr "Promoção e Liquidação" #: templates/home.html:13 msgctxt "Homepage title" msgid "from the Northpole" -msgstr "do Northpole" +msgstr "do Polo Norte" #: templates/home.html:15 templates/home.html:30 templates/home.html:42 msgctxt "Homepage action" @@ -6270,8 +6327,8 @@ msgstr "Excluindo %(tax_rate)s%% de ICMS" #: templates/product/details.html:178 msgctxt "Product details primary action" -msgid "Add to checkout" -msgstr "Adicionar à compra" +msgid "Add to cart" +msgstr "Adicionar ao carrinho" #: templates/product/details.html:190 msgctxt "Product details text" diff --git a/locale/pt_BR/LC_MESSAGES/djangojs.mo b/locale/pt_BR/LC_MESSAGES/djangojs.mo index abd1d181bb7..18cabd4b2b6 100644 Binary files a/locale/pt_BR/LC_MESSAGES/djangojs.mo and b/locale/pt_BR/LC_MESSAGES/djangojs.mo differ diff --git a/locale/ro/LC_MESSAGES/django.mo b/locale/ro/LC_MESSAGES/django.mo index b627427a5dc..1c23d87376a 100644 Binary files a/locale/ro/LC_MESSAGES/django.mo and b/locale/ro/LC_MESSAGES/django.mo differ diff --git a/locale/ro/LC_MESSAGES/django.po b/locale/ro/LC_MESSAGES/django.po index ad6ffd0d182..51738da7dc1 100644 --- a/locale/ro/LC_MESSAGES/django.po +++ b/locale/ro/LC_MESSAGES/django.po @@ -4,20 +4,20 @@ # Mirumee Software , 2017. # # Translators: -# Tiberiu Ichim , 2018 # Paul-Sebastian Manole , 2019 +# Tudor C , 2019 # Cosmin Cosma , 2019 +# Tiberiu Ichim , 2019 # Delia Cosma , 2019 -# Tudor C , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Tudor C , 2019\n" +"Last-Translator: Delia Cosma , 2019\n" "Language-Team: Romanian (https://www.transifex.com/mirumee/teams/34782/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,32 +25,82 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Parolă" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Acest e-mail a fost deja înregistrat." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Prenume" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Nume" @@ -155,12 +205,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Cod poștal" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Țară" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Prenume" @@ -180,37 +230,37 @@ msgctxt "Address" msgid "Address" msgstr "Adresă" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Oraș" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "District" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Cod poștal" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Stat sau provincie" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Număr de telefon" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Stradă, căsuță poștală, companie" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Apartament, suită, unitate, clădire, etaj, etc." @@ -224,17 +274,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Această valoare nu este validă pentru țara selectată" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Gestionează clienții." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Gestionează personalul." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Impersonează clienți." @@ -255,40 +305,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Ați fost dezactivat cu succes." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Utilizatorul a fost creat" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Parolă schimbată cu succes." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Cont actualizat cu succes." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adresă actualizată cu succes." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adresa a fost eliminată cu succes" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Verifică căsuța de e-mail pentru un e-mail de confirmare." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -297,97 +347,103 @@ msgstr "" "Contul tău a fost șters cu succes. În cazul unor probleme sau întrebări, nu " "ezita să ne contactezi." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Facturare" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Livrare" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Cantitate" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Ne pare rău. Acest produs nu este disponibil." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Ne pare rău. Acest produs nu este în stoc." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Hopa. Nu am putut găsi produsul respectiv." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Numai %deste în stoc." -msgstr[1] "Numai %d mai sunt în stoc." -msgstr[2] "Numai %d sunt în stoc. " +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Țară" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Introduceți o nouă adresă" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adresă" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Introduceți o nouă adresă" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "La fel ca la livrare" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adresă" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Metodă de livrare" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Codul de reducere incorect sau expirat" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Card cadou sau cod de discount" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -395,182 +451,162 @@ msgstr "" "Scuze. Nu avem multe articole în stoc. Cantitatea a fost setată la maximum " "disponibilă pentru moment." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Comanda dvs. nu necesită transport." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Selectați mai întâi o metodă de expediere." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Această ofertă nu este valabilă în țara dvs." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Această ofertă este valabilă numai pentru elementele selectate." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Voucherul a expirat între timp. Ordinul de plasare a fost anulat." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Modalitatea de livrare nu este setată" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Adresa de livrare nu este setată" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Modalitatea de livrare nu este validă pentru adresa de livrare" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Adresa de facturare nu este setată" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Acest voucher a expirat. Vă rugăm verificați." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Vă rugăm verificați." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "cazare" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "admiterea la evenimente culturale" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "admiterea la evenimente de divertisment" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "admiterea la evenimente sportive" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reclamă" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "produse agricole" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "alimente pentru copii" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "biciclete" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "cărții" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "haine pentru copii" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "combustibilul intern" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "servicii interne" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-books" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "produse alimentare" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hoteluri" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "medical" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "presă" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "transportul de călători" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "produse farmaceutice" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "imobile renovate" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restaurante" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "locuințe sociale" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "apă" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "vin" @@ -589,7 +625,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Orice țară" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Acum sunteți înregistrat ca {}" @@ -614,7 +650,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "gr" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -629,92 +665,96 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Produse specifice" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Colecții specifice de produse" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Categorii specifice de produse" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Livrare" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Transport gratuit" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s din transport" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s din %(product_num)dproduse" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s din %(collections_num)d colecții" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s din %(categories_num)d categorii" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s din" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Această ofertă este valabilă numai pentru comenzi peste %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Gestionează vânzările și voucherele." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Reducere nu se aplică pentru acest produs" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Această livrare nu poate fi anulată" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Gestionează navigația." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -724,17 +764,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Categorie:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Colecție:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Pagină:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -745,156 +785,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Nelivrată" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Parțial livrată" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Livrată" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Anulată" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Livrată" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Anulată" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Confirmare de plată" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Confirmare de livrare" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Confirmare de onorare" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Confirmare de comandă" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Plata a fost anulată de %(user_name)s'" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Au fost returnați cu succes %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Comanda a fost plasată" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Comanda a fost plătită în totalitate" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -906,23 +963,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Plata nu există" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Plata nu poate fi anulată" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Gestionează ordinele." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Livrarea #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -931,12 +988,12 @@ msgstr "" "Nu am putut aloca comanda în contul dvs., deoarece adresele de e-mail nu se " "potrivesc" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Comanda este acum alocată contului dvs" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Gestionează paginile." @@ -946,58 +1003,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manual" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Autorizare" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Rambursare" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Captură" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1007,18 +1059,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Starea plății" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Comanda nu a fost procesată" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1028,13 +1080,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Plătește acum cu Razorpay" @@ -1054,12 +1106,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Comanda nu a fost procesată" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Total de plată" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "Comenzile cu plată nu pot fi marcate manual ca fiind plătite" @@ -1104,12 +1156,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "stoc epuizat" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "nume" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "Preț" @@ -1119,33 +1171,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "ultima actualizare" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sortează după" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Preț" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Gestionează produsele." -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "produs_digital" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Întrebare" @@ -1191,170 +1243,190 @@ msgid "Spanish" msgstr "Spaniolă" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Estoniană" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "Persană" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Franceză" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Indiană" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Maghiară" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Indonesiană" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italiană" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japoneză" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Koreană" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongoleză" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norvegiana" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Olandeză" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Poloneză" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Portugheză Braziliană" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Româna" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Rusă" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovacă" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Sârbă" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "Swahili" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Suedeză" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "Tailandeză" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turcă" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ucrainiană" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnameză" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Chineză Simplificată" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Chineză Tradițională" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Uniunea Europeană" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Gestionează transportul." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Gestionează setarile." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1812,7 +1884,7 @@ msgstr "Căutare" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Coșul tău" #: templates/base.html:202 @@ -1824,44 +1896,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Style guide" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotal" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Livrarea și taxele calculate la checkout" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Du-te la coș" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Verifică" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Nu exista produse în coșul de cumpărături." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Verificați vânzările noastre" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Acasă" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotal" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Costul transportului pentru:" @@ -1871,7 +1919,7 @@ msgid "Total" msgstr "Total" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Livrarea și taxele calculate la checkout" @@ -1926,45 +1974,55 @@ msgid "Total" msgstr "Total" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Coșul tău" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Coș" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produsul a fost eliminat din coș" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produs" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Cantitate" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Preț" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Verifică" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Cărucior gol" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Nu exista produse în coșul de cumpărături." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Verificați vânzările noastre" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2096,6 +2154,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Plasați comanda" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Livrarea și taxele calculate la checkout" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Du-te la coș" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Verifică" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2206,8 +2279,8 @@ msgstr "Vânzări" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2291,8 +2364,8 @@ msgstr "Pagini" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Eliberare:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2536,7 +2609,7 @@ msgstr "Sigur dorești să elimini colecția %(collection)s?" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Adaugă colecția noua" @@ -2546,47 +2619,47 @@ msgstr "Adaugă colecția noua" msgid "Collections" msgstr "Colecții" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Elimină colecția" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Vezi pe site" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Disponibilitate" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Anulare" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Actualizare" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Crează" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Publicat" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Proiect" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3148,7 +3221,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Total" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3378,393 +3451,393 @@ msgid "Edit address" msgstr "Editează adresa" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Adresa de transport" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Adresa de facturare" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Anulează comanda" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Elimină comanda de proiect" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Printeaza" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detalii" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Plăţile" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Istoric" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Plăţile" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Balanță neefectuată" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Sumă prea mare" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Suma capturată" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Captură" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Rambursare" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Marcă ca plătit" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Client" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Editează detaliile despre client" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Editează" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Nu există adresa de expediere" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "La fel ca adresa de livrare" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Nicio adresă de facturare" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Proiectul de comandă #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Comanda #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Pus pe" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Articol" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Preț" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Cantitate" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Total" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Schimbă cantitatea" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Elimină linia" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Editează livrarea" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Livrarea (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Livrare" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Taxe (incluse)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Taxe " -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Reducere (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Reducere" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Editează voucher" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Editează voucher" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Editează reducerea" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Editează reducerea" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Total general" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Livrează comandă" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Livrează" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Adaugă produs la comandă" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Adaugă produs" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Crează comandă" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Crează comandă" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Factură fiscală" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Vezi pe site" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Livrarea #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Număr de urmărire: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Anulează livrarea" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Anulare" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Editeazi numărul de urmărire" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Editează urmărirea" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Adăugă urmărirea" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Ambalare de ambalaj" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Note de ordin" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Nu sunt note asociate cu această comandă." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Adaugă note" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID-ul tranzacției" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Data" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Starea plății" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Cantitate" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Nu s-au efectuat plăți pentru această comandă." @@ -5729,24 +5802,25 @@ msgstr "Produse recomandate" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(opțional)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Fișier" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6302,6 +6376,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Adresa de facturare" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Nicio adresă de facturare" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6309,7 +6389,7 @@ msgid "Shipping address" msgstr "Adresa de livrare" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Nu este nevoie de livrare" diff --git a/locale/ro/LC_MESSAGES/djangojs.mo b/locale/ro/LC_MESSAGES/djangojs.mo index 4d6d1266ed3..6407a7eaceb 100644 Binary files a/locale/ro/LC_MESSAGES/djangojs.mo and b/locale/ro/LC_MESSAGES/djangojs.mo differ diff --git a/locale/ru/LC_MESSAGES/django.mo b/locale/ru/LC_MESSAGES/django.mo index 4bd487d5b3a..bd7e8d10e55 100644 Binary files a/locale/ru/LC_MESSAGES/django.mo and b/locale/ru/LC_MESSAGES/django.mo differ diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po index 3bc96c0b7d6..0ba5b06c187 100644 --- a/locale/ru/LC_MESSAGES/django.po +++ b/locale/ru/LC_MESSAGES/django.po @@ -5,29 +5,29 @@ # # Translators: # Patryk Zawadzki , 2018 -# Dima Veselov , 2018 # danSamara , 2018 # Dmitriy D, 2018 -# Kirill Makhonin , 2018 # anatoly solomentsev , 2018 -# Никита Евстропов , 2018 -# Optimus Prime , 2018 -# Evgeny Semenov, 2019 -# Weronika Terpilowska , 2019 -# Дмитрий К , 2019 # Georgy Komarov , 2019 -# Maxim , 2019 # O Z , 2019 # Alex Fadeev, 2019 +# Maxim , 2019 +# Weronika Terpilowska , 2019 +# Dima Veselov , 2019 +# Kirill Makhonin , 2019 +# Дмитрий К , 2019 +# Никита Евстропов , 2019 +# Evgeny Semenov, 2019 +# Optimus Prime , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Alex Fadeev, 2019\n" +"Last-Translator: Optimus Prime , 2019\n" "Language-Team: Russian (https://www.transifex.com/mirumee/teams/34782/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,32 +35,82 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Пароль" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "E-mail" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Этот почтовый ящик уже зарегистрирован." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Имя" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Фамилия" @@ -165,12 +215,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Почтовый индекс" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Страна" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Имя" @@ -190,37 +240,37 @@ msgctxt "Address" msgid "Address" msgstr "Адрес" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Город" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Район" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Почтовый индекс" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Область" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Номер телефона" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Улица, почтовый ящик, название компании" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Квартира, номер, блок, здание, этаж и т.д." @@ -234,17 +284,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Это значение неверно для выбранной страны" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Управление покупателями." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Управление сотрудниками." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Копировать покупателя." @@ -265,40 +315,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Вы успешно вышли." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Аккаунт успешно создан." -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Пароль успешно изменен." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Аккаунт успешно обновлен." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Адрес успешно обновлен." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Адрес успешно удален" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Пожалуйста, проверьте ваш почтовый ящик для письма-подтверждения." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -307,98 +357,104 @@ msgstr "" "Ваша учётная запись была успешно удалена. В случае возникновения трудностей " "не стесняйтесь обратиться к нам." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Оплата" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Доставка" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Количество" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Приносим извинения, продукт в настоящее время недоступен для заказа." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Приносим извинения, продукт в настоящее время отсутствует на складе." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Ой. Мы не смогли найти такой продукт." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Только %d в наличии." -msgstr[1] "Только %d в наличии." -msgstr[2] "Только %d в наличии." -msgstr[3] "Только %d в наличии." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Страна" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Введите новый адрес" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Адрес" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Введите новый адрес" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Совпадает с адресом доставки" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Адрес" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Способ доставки" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Код скидки введен неверно или просрочен" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Подарочная карта или код скидки" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -406,182 +462,162 @@ msgstr "" "Приносим извинения. Нужного количества товаров нет на складе. Установлено " "максимально доступное количество в настоящий момент." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Ваш заказ не требует доставки." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Пожалуйста выберите сначала способ доставки. " -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Это предложение недоступно в вашей стране." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Предложение действительно только для отдельных товаров." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Купон уже истёк. Размещение заказа отменено." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Не выбран способ доставки" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Не установлен адрес доставки" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Способ доставки недоступен для вашего адреса" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Платежный адрес не указан" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Этот купон просрочен. Пожалуйста проверьте вашу корзину." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Пожалуйста проверьте вашу корзину." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "Кредит" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "разрешение на культурные события" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "разрешение на развлекательные события" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "разрешение на спортивные события" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "реклама" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "товары для сада и огорода" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "корм для новорожденных" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "велосипеды" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "книги" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "детская одежда" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "топливо для обогрева жилья" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "хозяйственно-бытовое обслуживание" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "электронные книги" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "продукты" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "отели" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "медицинские товары" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "газеты" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "пассажироперевозки" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "лекарства" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "ремонт недвижимости" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "рестораны" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "социальное жильё" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "стандартный" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "вода" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "Алкогольная продукция" @@ -601,7 +637,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Любая страна" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Вы не авторизированы как {}" @@ -626,7 +662,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "г" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -641,93 +677,97 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Конкретный товар" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Определённая коллекция товаров" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Определённая категория товаров" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Доставка" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Бесплатная доставка" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s на стоимость доставки" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "Скидка %(discount)s для %(product_num)d товаров" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "Скидка %(discount)s для %(collections_num)d коллекций" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "Скидка %(discount)s для %(categories_num)d категорий" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "скидка %(discount)s" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Это предложение действительно только для заказов свыше %(amount)s" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Управление скидками и купонами." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Скидка не применима к данному продукту" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Только %(quantity)d позиций осталось заполнить." -msgstr[1] "Только %(quantity)dпозиций осталось заполнить." -msgstr[2] "Только %(quantity)d позиций осталось заполнить." -msgstr[3] "Только %(quantity)dпозиций осталось заполнить." - -#: saleor/graphql/order/mutations/fulfillments.py:218 +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Пополнение не может быть отменено" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Управление навигацией." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "Ссылка:" @@ -737,17 +777,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Категория:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Коллекция:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Страница:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -758,161 +798,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Не исполненный" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Частично исполнен" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Исполнен" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Отменён" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Исполнен" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Отменён" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Подтверждение оплаты" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Подтверждение доставки" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Подтверждение пополнения" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Подтверждение заказа" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Заказ создан %(user_name)s из черновика" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "%(user_name)s отменил платеж" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Успешно возмещено: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Успешно зафиксировано: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Заказ вручную отмечен %(user_name)s как оплаченный" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Заказ был отменен %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Мы пополнили %(quantity)dпозиций" -msgstr[1] "Мы пополнили %(quantity)dпозиций" -msgstr[2] "Мы пополнили %(quantity)dпозиций" -msgstr[3] "Мы пополнили %(quantity)dпозиций" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s добавил комментарий: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Пополнение #%(fulfillment)s было отменено %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "Заполнено %(quantity_fulfilled)dпозиций" -msgstr[1] "Заполнено %(quantity_fulfilled)d позиций" -msgstr[2] "Заполнено %(quantity_fulfilled)d позиций" -msgstr[3] "Заполнено %(quantity_fulfilled)d позиций" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Заказ размещен" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Заказ был полностью оплачен" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s письмо было отправлено покупателю (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "%(user_name)s обновил детали заказа" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Номер отслеживания пополнения #%(fulfillment)s был обновлен %(user_name)s на" -" %(tracking_number)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "%(quantity)dпозиций в этом заказе продано сверх запасов." -msgstr[1] "%(quantity)dозиций в этом заказе продано сверх запасов." -msgstr[2] "%(quantity)dпозиций в этом заказе продано сверх запасов." -msgstr[3] "%(quantity)dпозиций в этом заказе продано сверх запасов." +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -924,23 +976,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Платеж отсутствует" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Оплата не может быть отменена." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Управление покупками." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Пополнение #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -949,12 +1001,12 @@ msgstr "" "Мы не можем закрепить заказ к вашей учётной записи, т.к. почтовые адреса не " "совпадают" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Заказ закреплён за вашей учётной записью" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Управление страницами." @@ -964,58 +1016,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Вручную" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Авторизация" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Оплата" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Возврат" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Зафиксировано" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Отменить" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Не оплачено" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "Частично оплачен" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "Полностью оплачен" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Частично возмещен" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Возмещено полностью" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "Невозможно обработать транзакцию. Пожалуйста попробуйте ещё раз." @@ -1025,7 +1072,7 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Статус платежа" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." @@ -1033,12 +1080,12 @@ msgstr "" "Установка статуса оплаты в {} напрямую не поддерживается. Пожалуйста, " "используйте приборную панель для частичного возмещения." -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Заказ не был оплачен." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Данные оплаты были не верны." @@ -1048,13 +1095,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Заказ не может быть осуществлен." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "Валюта %(currency)s не поддерживается." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Оплатить сейчас с помощью Razorpay" @@ -1062,7 +1109,7 @@ msgstr "Оплатить сейчас с помощью Razorpay" #: saleor/payment/gateways/razorpay/forms.py:16 msgctxt "Razorpay payment gateway secondary title" msgid "Total payment" -msgstr "Общий платеж" +msgstr "Общая сумма" #: saleor/payment/gateways/stripe/errors.py:4 msgctxt "Stripe payment error" @@ -1074,12 +1121,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Заказ не был оплачен." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Общая сумма" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "Заказы с платежами не могут быть помечены вручную как оплаченные." @@ -1124,12 +1171,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "Товары с малым остатком на складе" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "имя" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "Цена" @@ -1139,33 +1186,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "последнее обновление" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Сортировать по" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Цена" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Управление товарами." -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "цифровой товар" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Запрос" @@ -1211,170 +1258,190 @@ msgid "Spanish" msgstr "Испанский" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Эстонский" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "Персидский" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Французский" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Хинди" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Венгерский" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "Армянский" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Индонезийский" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Итальянский" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Японский" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Корейский" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Монгольский" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Норвежский" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Датский" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Польский" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Бразильский португальский" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Румынский" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Русский" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Словацкий" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Сербский" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "суахили" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Шведский" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "тайский" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Турецкий" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Украинский" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Вьетнамский" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Упрощенный китайский" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Традиционный китайский" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Евросоюз" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Шаблон платежа" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Доставка, основывающаяся на цене" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Доставка, основывающаяся на весе" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d стран" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Управление доставкой." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s и больше" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s до %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s и больше" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s до %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Управление настройками." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "Управление переводами." @@ -1834,7 +1901,7 @@ msgstr "Поиск" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Ваша корзина" #: templates/base.html:202 @@ -1846,44 +1913,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Руководство по стилю" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Промежуточный итог" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Цена без учета доставки (самовывоз)" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Перейти в корзину" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Оформить заказ" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "В вашей корзине отсутствуют товары." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Проверьте наши скидки" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Главная" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Промежуточный итог" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Способ доставки для:" @@ -1893,7 +1936,7 @@ msgid "Total" msgstr "Всего" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Цена без учета доставки (самовывоз)" @@ -1948,45 +1991,55 @@ msgid "Total" msgstr "Сумма" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Ваша корзина" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Корзина" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Продукт был удален из корзины" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Продукт" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Количество" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Цена" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Оформить заказ" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Очистить корзину" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "В вашей корзине отсутствуют товары." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Проверьте наши скидки" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2123,6 +2176,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Сделать заказ" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Цена без учета доставки (самовывоз)" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Перейти в корзину" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Оформить заказ" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2239,8 +2307,8 @@ msgstr "Продажи" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2324,8 +2392,8 @@ msgstr "Страницы" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "Отменено:" +msgid "Release:" +msgstr "Выпуск:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2575,7 +2643,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Добавить новую коллекцию" @@ -2585,47 +2653,47 @@ msgstr "Добавить новую коллекцию" msgid "Collections" msgstr "Коллекции" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Удалить коллекцию" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Посмотреть на сайте" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Доступность" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Отменить" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Обновить" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Создать" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Опубликован" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Черновик" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Нельзя снять с публикации коллекцию на главной странице" @@ -3207,7 +3275,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Сумма" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3443,394 +3511,394 @@ msgid "Edit address" msgstr "Редактировать адрес" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Адрес доставки" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Адрес плательщика" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Отменить заказ" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Удалить черновик заказа" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Распечатать" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Подробности" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Платежи" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "История" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Платежи" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "Недоступно" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Выдающийся баланс" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Авторизованное число" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "Недоступно" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Зафиксированное число" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Зафиксировано" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Возмещение" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Отменить" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Отметить как оплаченное" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Покупатель" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Изменить данные покупателя" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Редактировать" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Нет адреса доставки" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Такой же как и адрес доставки" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Нет адреса выставление счёта" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Черновик заказа #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Заказ #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Дата размещения" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Предмет" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Цена" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Количество" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Всего" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "Артикул: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Изменить количество" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Удалить линию" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Изменить данные доставки" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Доставка (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Доставка" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Налоги (включены)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Налоги" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Скидка (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Скидка" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Изменить купон" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Изменить купон" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Изменить скидку" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Изменить скидку" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Общая сумма" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Выполнить заказ" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Пополнение" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Добавить товар в заказ" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Добавить товар" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Создать заказ" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Создать заказ" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Счет" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Посмотреть на сайте" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Исполнение #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Номер отслеживания: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Отменить пополнение" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Отменить" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Редактировать трек-номер" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Редактирование отслеживания" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Добавить отслеживание" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Товарная накладная" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Заметка покупателя" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" "Покупатель, связанный с указанным заказом, не оставил заметок к заказу." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Примечание к заказу" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Нет примечаний к данному заказу." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Добавить примечание" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID транзакции" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Дата" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Статус платежа" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Количество" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Для этого заказа не было сделано платежей." @@ -5858,24 +5926,25 @@ msgstr "Избранные продукты" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(выборочно)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Файл" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6466,6 +6535,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Платежный адрес" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Нет адреса выставление счёта" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6473,7 +6548,7 @@ msgid "Shipping address" msgstr "Адрес доставки" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Доставка не требуется" diff --git a/locale/ru/LC_MESSAGES/djangojs.mo b/locale/ru/LC_MESSAGES/djangojs.mo index ba6040fe5db..841dc2fa502 100644 Binary files a/locale/ru/LC_MESSAGES/djangojs.mo and b/locale/ru/LC_MESSAGES/djangojs.mo differ diff --git a/locale/sk/LC_MESSAGES/django.mo b/locale/sk/LC_MESSAGES/django.mo index e7f2e345dd6..a2476c00c89 100644 Binary files a/locale/sk/LC_MESSAGES/django.mo and b/locale/sk/LC_MESSAGES/django.mo differ diff --git a/locale/sk/LC_MESSAGES/django.po b/locale/sk/LC_MESSAGES/django.po index 1167414bc07..4ecd26ad73e 100644 --- a/locale/sk/LC_MESSAGES/django.po +++ b/locale/sk/LC_MESSAGES/django.po @@ -6,8 +6,8 @@ # Translators: # Patryk Zawadzki , 2018 # Patrik Kucavik , 2018 -# Martin Janšto , 2018 # Stanislav Pavlovic , 2018 +# Martin Janšto , 2019 # Sebastian Simko , 2019 # Jan M, 2019 # @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Jan M, 2019\n" "Language-Team: Slovak (https://www.transifex.com/mirumee/teams/34782/sk/)\n" @@ -26,32 +26,82 @@ msgstr "" "Language: sk\n" "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Heslo" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Táto emailová adresa už bola registrovaná" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Krstné meno" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Priezvisko" @@ -156,12 +206,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "PSČ" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Krajina" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Krstné meno" @@ -181,37 +231,37 @@ msgctxt "Address" msgid "Address" msgstr "Adresa" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Mesto" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Okres" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "PSČ" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Štát alebo provincia" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefónne číslo" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Ulica, P.O.BOX, firma" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Byt, budova, poschodie, atď" @@ -225,17 +275,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Táto hodnota je pre vybranú krajinu neplatná" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Správa zákazníkov." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Správa zamestnancov." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Konanie v mene zákazníka." @@ -256,40 +306,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Boli ste úspešne odhlásený." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Používateľ bol vytvorený" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Heslo bolo úspešne zmenené." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adresa úspešne aktualizovaná." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adresa bola úspešne vymazaná" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Prosím, skontrolujte vaše prijaté správy pre potvrdzujuci mail." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -298,98 +348,104 @@ msgstr "" "Vaše konto bolo úspešne odstránené. Neváhajte nás kontaktovať v prípade " "akýchkoľvek problémov alebo otázok." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Platba" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Doprava" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" -msgstr "Množstvo" +msgstr "Počet" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Prepáčte, tento produkt momentálne nie je k dispozícii." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Prepáčte, tento produkt je momentálne nedostupný." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Je nám ľúto, ale tento produkt sme nenašli." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Iba %d zostáva na sklade." -msgstr[1] "Iba %d zostáva na sklade." -msgstr[2] "Iba %d zostáva na sklade." -msgstr[3] "Iba %d zostáva na sklade." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Krajina" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Zadajte novú adresu" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adresa" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Zadajte novú adresu" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Rovnaka ako dodacia adresa" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adresa" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Spôsob dopravy" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Kód kuponu je neplatný alebo vypršal" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Darčeková karta alebo zľavový kupón" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -397,182 +453,162 @@ msgstr "" "Prepáčte. Nemáme toľko položiek na sklade. Množstvo bolo nastavené na " "maximum momentálne k dispozícii." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Vaša objednávka nevyžaduje prepravu." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Prosím vyberte spôsob odoslania." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Táto ponuka neplatí pre vo vašej krajine." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Táto ponuka platí iba pre vybrané položky." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Platnosť kupónu medzičasom vypršala. Podaná objednávka bola zrušená." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Platnosť tohto poukazu vypršala. Skontrolujte si platbu." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Skontrolujte si platbu." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "ubytovanie" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "vstupné na kultúrne podujatia" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "vstupné na zábavné podujatia" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "vstupné na športové podujatia" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reklama" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "poľnohospodárske zásoby" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "detské potraviny" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "bicykle" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "knihy" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "detské oblečenie" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "domáce palivo" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "domáce služby" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-knihy" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "potraviny" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotely" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "lekárske" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "noviny" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "osobná doprava" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "farmaceutiká" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "rekonštrukcie nehnuteľností" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "reštaurácie" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "sociálne ubytovanie" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "štandard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "voda" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "víno" @@ -592,7 +628,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Ľubovoľná krajina" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Ste prihlásený ako {}" @@ -617,7 +653,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -632,93 +668,97 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Špecifické produkty" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Špecifické kolekcie produktov" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Špecifické kategórie produktov" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Doprava" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Doprava zdarma" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s na objednávku" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s dole na %(product_num)d produktov." -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s dole na %(collections_num)d kolekcií." -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s dole na %(categories_num)d kategórií." -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s na" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Táto ponuka plati iba ak prekročíte sumu %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Správa výpredajov a kupónov" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Zľava sa nevzťahuje na tento produkt" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Ostáva vybaviť položky %(quantity)d položku." -msgstr[1] "Ostáva vybaviť %(quantity)d položky." -msgstr[2] "Ostáva vybaviť %(quantity)d položiek." -msgstr[3] "Ostáva vybaviť %(quantity)d položiek." - -#: saleor/graphql/order/mutations/fulfillments.py:218 +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Toto plnenie nie je možné zrušiť" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Správa navigácie." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -728,17 +768,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategória:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Kolekcia:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Stránka:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -749,165 +789,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Nenaplnené" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Čiastočne nenaplnené" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Splnené" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Zrušené" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Splnené" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Zrušené" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Potvrdenie platby" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Potvrdenie dopravy" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Potvrdenie plnenia" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Potvrdenie objednávky" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Objednávka vytvorená užívateľom %(user_name)s z konceptu." +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Úspešne vrátené: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Úspešne uplatnené: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Objednávka bola ručne označená ako zaplatená užívateľom %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Objednávka bola zrušená užívateľom %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Doplnili sme %(quantity)d položku na sklad" -msgstr[1] "Doplnili sme %(quantity)d položky na sklad" -msgstr[2] "Doplnili sme %(quantity)d položiek na sklad" -msgstr[3] "Doplnili sme %(quantity)d položiek na sklad" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s pridal/a poznámku: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Plnenie č. %(fulfillment)s bolo zrušené užívateľom %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "Vyplnená %(quantity_fulfilled)d položka" -msgstr[1] "Vyplnené %(quantity_fulfilled)d položky" -msgstr[2] "Vyplnených %(quantity_fulfilled)d položiek" -msgstr[3] "Vyplnených %(quantity_fulfilled)d položiek" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Objednávka bola poslaná" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Objednávka bola plne uhradená" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s email bol poslaný zákazníkovi (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Podrobnosti objednávky boli aktualizované užívateľom %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Sledovacie číslo z plnenia č. %(fulfillment)s bolo aktualizované na " -"%(tracking_number)s užívateľom %(user_name)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -"V tejto objednávke bolo predaných o %(quantity)d položku viac ako je možné " -msgstr[1] "" -"V tejto objednávke bolo predaných o %(quantity)d položky viac ako je možné " -msgstr[2] "" -"V tejto objednávke bolo predaných o %(quantity)d položiek viac ako je možné " -msgstr[3] "" -"V tejto objednávke bolo predaných o %(quantity)d položiek viac ako je možné " +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -919,23 +967,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Platba neexistuje" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Správa objednávok." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Naplnené #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -944,12 +992,12 @@ msgstr "" "Nemohli sme priradoť objednávku k Vášmu kontu, nakoľko sa emailové adresy " "nezhodujú" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Objadnávka priradená k Vášmu kontu" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Správa stránok." @@ -959,58 +1007,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manuálne" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Vrátenie" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Zachytené" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1020,18 +1063,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Stav platby" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1041,13 +1084,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1067,12 +1110,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1117,12 +1160,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "vypredané" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "meno" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "cena" @@ -1132,33 +1175,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "posledná zmena" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Zoradiť podľa" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Cena" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Správa produktov." -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Dopyt" @@ -1204,170 +1247,190 @@ msgid "Spanish" msgstr "Španielčina" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 +msgid "Persian" +msgstr "" + +#: saleor/settings.py:74 msgid "French" msgstr "Francúzština" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Maďarčina" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "Arménčina" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Taliančina" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japončina" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Kórejčina" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Nórčina" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Holandčina" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Poľština" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Rumunčina" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Rušština" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovenčina" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turčina" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukrainčina" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnamčina" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Európska Únia" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Cena dopravy v zavislosti od ceny" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Cena dopravy v zavislosti od hmotnosti" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d krajín" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Správa dopravy." -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s a viac" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)sdo %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s a viac" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s do %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Správa nastavení." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1827,7 +1890,7 @@ msgstr "Vyhľadávanie" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Váš košík" #: templates/base.html:202 @@ -1839,44 +1902,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Sprievodca štýlom" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Medzisúčet" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Dopravné náklady vypočítané pri pokladni" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Choď do košíka" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Dokončiť objednávku" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "V nákupnom košíku nie sú žiadne produkty." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Pozrite sa na náše výpredaje" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Domov" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Medzisúčet" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Dopravné náklady za:" @@ -1886,7 +1925,7 @@ msgid "Total" msgstr "Celkom" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Dopravné náklady a daň sa vypočítajú pri pokladni" @@ -1941,45 +1980,55 @@ msgid "Total" msgstr "Súčet" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Váš košík" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Košík" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produkt bol odstránený z košíka" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produkt" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" -msgstr "Množstvo" +msgstr "Počet" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Cena" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Dokončiť objednávku" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Vyčistiť košík" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "V nákupnom košíku nie sú žiadne produkty." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Pozrite sa na náše výpredaje" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2111,6 +2160,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Miesto objednávky" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Dopravné náklady a daň sa vypočítajú pri pokladni" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Choď do košíka" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Dokončiť objednávku" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2221,8 +2285,8 @@ msgstr "Zľavy" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2306,8 +2370,8 @@ msgstr "Stránky" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Verzia:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2557,7 +2621,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Pridať novú kolekciu" @@ -2567,47 +2631,47 @@ msgstr "Pridať novú kolekciu" msgid "Collections" msgstr "Kolekcie" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Odstrániť kolekciu" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Zobraziť na stránkach" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Dostupnosť" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Zrušiť" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Aktualizovať" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Vytvoriť" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Zverejnené" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Koncept" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Kolekciu domovskej stránky nie je možné stiahnuť zo zverejnenia" @@ -3183,7 +3247,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Súčet" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3418,393 +3482,393 @@ msgid "Edit address" msgstr "Upraviť adresu" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Dodacia adresa" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Fakturačná adresa" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Zrušiť objednávku" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Odstrániť rozrobenú objednávku" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Tlačiť" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Podrobnosti" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Platby" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Histórie" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Platby" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "nedostupné" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Zostatok" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Povolená čiastka" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "nedostupné" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Zachytená čiastka" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Zachytiť" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Vrátenie" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Označiť ako zaplatené" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Zákazník" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Upraviť detaily zákazníka" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Upraviť" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Žiadna dodacia adresa." -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Rovnaká ako doručovacia adresa" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Žiadna fakturačná adresa" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Rozrobená objednávka #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Objednávka #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Umiestnené" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Položka" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Cena" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Množstvo" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Súčet" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "EAN: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Zmena množstva" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Odstráňte riadok" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Upraviť spôsob dopravy" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Doprava (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Doprava" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Daňe (zahrnuté)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Daňe" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Zľava (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Zľava" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Upraviť kupón" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Upraviť kupón" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Upraviť zľavu" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Upraviť zľavu" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Súhrn" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Naplniť objednávku" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Naplniť" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Pridať produkt k objednávke" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Pridať produkt" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Vytvoriť objednávku" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Vytvoriť objednávku" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Faktúra" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Zobraziť na stránkach" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Naplnenie #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Trackingnummer: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Zrušiť naplnenie" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Zrušiť" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Upraviť sledovacie číslo" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Upraviť sledovanie" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Pridať sledovanie" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Prepravné dokumenty" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Poznámka od zákazníka" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "K tejto objednávke nie sú spojené žiadne poznámky." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Poznámky k objednávke" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "K tejto objednávke nie sú spojené žiadne poznámky." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Pridať poznámku" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Identifikátor transakcie" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Dátum" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Stav platby" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Suma" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Pre túto objednávku neboli vykonané žiadne platby." @@ -5829,24 +5893,25 @@ msgstr "Vybrané produkty" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(voliteľný)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Súbor" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6412,6 +6477,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Fakturačná adresa" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Žiadna fakturačná adresa" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6419,7 +6490,7 @@ msgid "Shipping address" msgstr "Dodacia adresa" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Doprava nie je nutná" diff --git a/locale/sk/LC_MESSAGES/djangojs.mo b/locale/sk/LC_MESSAGES/djangojs.mo index 6698f545598..95447907184 100644 Binary files a/locale/sk/LC_MESSAGES/djangojs.mo and b/locale/sk/LC_MESSAGES/djangojs.mo differ diff --git a/locale/sl/LC_MESSAGES/django.mo b/locale/sl/LC_MESSAGES/django.mo index cda5764485c..44db1cd3810 100644 Binary files a/locale/sl/LC_MESSAGES/django.mo and b/locale/sl/LC_MESSAGES/django.mo differ diff --git a/locale/sl/LC_MESSAGES/djangojs.mo b/locale/sl/LC_MESSAGES/djangojs.mo index 22c74f4a1b1..648df952e18 100644 Binary files a/locale/sl/LC_MESSAGES/djangojs.mo and b/locale/sl/LC_MESSAGES/djangojs.mo differ diff --git a/locale/sq/LC_MESSAGES/django.mo b/locale/sq/LC_MESSAGES/django.mo index 91708194022..6bdaa1a6e9b 100644 Binary files a/locale/sq/LC_MESSAGES/django.mo and b/locale/sq/LC_MESSAGES/django.mo differ diff --git a/locale/sq/LC_MESSAGES/django.po b/locale/sq/LC_MESSAGES/django.po index b4e52cc4dd5..638efbb5435 100644 --- a/locale/sq/LC_MESSAGES/django.po +++ b/locale/sq/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Eltjona Qato , 2019\n" "Language-Team: Albanian (https://www.transifex.com/mirumee/teams/34782/sq/)\n" @@ -21,32 +21,82 @@ msgstr "" "Language: sq\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Password" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Ky email eshte i regjistruar nga nje perdorues tjeter." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Emri" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Mbiemri" @@ -151,12 +201,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Kodi postar" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Country" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Emri" @@ -176,37 +226,37 @@ msgctxt "Address" msgid "Address" msgstr "Adresa" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Qyteti" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Distrikti" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Kodi postar" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Shteti ose provinca" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Numri i telefonit" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Adresa e rruges, kutia postare, emri i kompanise, etj" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Apartamenti, suita, pallati, kati, etj." @@ -220,17 +270,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Kjo vlere nuk eshte e sakte per shtetin e zgjedhur" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Menaxho klientet" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Menaxho stafin" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Shtiru si nje klient" @@ -251,40 +301,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Ti tashme nuk je me i logguar." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Perdoruesi u krijua." -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Fjalekalimi u ndryshua me sukses." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Llogaria u ndryshua me sukses." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adresa u ndryshua me sukses." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adresa u fshi me suskes." -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Te lutem kontrolloni inbox per e-mailin e konfirmimit." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -293,277 +343,263 @@ msgstr "" "Profili juaj u fshi me sukses. Nese keni ndonje problem ose pyetje, mos " "hezitoni te na kontaktoni." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Faturimi" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Dergesa" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Sasia" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Na falni, ky produkt nuk eshte ne dispozicion." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Na falni, ky produkt nuk eshte me ne stok." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oops, produkti nuk mund te gjendeshe." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Vetem %d ka mbetur ne stok." -msgstr[1] "Vetem %d kane mbetur ne stok." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Country" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Vendosni nje adres te re" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adresa" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Vendosni nje adres te re" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "E njejta si e dergeses" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adresa" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Shipping method" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Kodi i uljes eshte i pasakte ose ka skaduar" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Karte dhurate ose kodi i uljes" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "Na falni, nuk kemi aq shume artikuj ne stok." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Porosia juaj nuk ka nevoje per dergese." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Ju lutem selektoni nje metode dergese si fillim." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Kjo ofert nuk eshte e vlefshme ne shtetin tuaj." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Kjo ofert nuk eshte e vlefshme per artikujt e zgjedhur." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Kuponi ka skaduar. Porosia eshte anulluar." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Menyra e dergeses nuk eshte selektuar." - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Adresa e dergeses nuk eshte vendosur." - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Metoda e dergeses nuk eshte e vlefshme per adresen e dergeses" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Adresa e faturimit nuk eshte vendosur" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Ky kupon ka skaduar. Ju lutem kontrolloni faturen." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Ju lutem kontrolloni faturen perfundimtare. " -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "akomodimi" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "pranimi ne evente kulturore" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "pranimi ne evente argetuese" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "pranimi ne envente sportive" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reklamimi" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "furnizime agrikulture" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "ushqime per femijet" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "bicikleta" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "libra" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "veshje per femije" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "shtepiake" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "sherbime shtepie" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-books" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "ushqime" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotele" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "mjeksi" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "gazeta" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "transport i pasagjereve" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "farmaci" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "renovime shtepie" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restorante" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "shtepi sociale" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "uje" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "vere" @@ -581,7 +617,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Cdo shtet" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Ti tashme je i loguar si {}" @@ -606,7 +642,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -621,91 +657,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Produkte specifike" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Koleksion specifik i produkteve" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Kategori specifike te produkteve" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Dergesa" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Dergesa falas" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s per deregesen" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s ulje per %(product_num)d produkte" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s ulje per %(collections_num)d koleksione" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s ulje per %(categories_num)d kategori" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s ulje" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Kjo oferte eshte e vlefshme per porosite mbi %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Menaxho shitjet dhe kuponet" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Uljet nuk aplikohen per kete produkt." -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Vetem %(quantity)d artikull ka ngelur per tu plotesuar." -msgstr[1] "Vetem %(quantity)d te artikujve kane ngelur per tu plotesuar." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "This fulfillment can't be canceled" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Menaxho navigimin" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL: " @@ -715,17 +755,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategori: " -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Koleksion:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Faqe:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -736,155 +776,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "I paperfunduar" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Pjeserisht i perfunduar" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "I perfunduar" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "I anulluar" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "I plotesuar" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "I anulluar" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Konfirmimi i pageses" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Konfirmimi i dergeses" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Konfirmimi i perfundimit" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Konfirmimi i porosise" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Porosia e krijuar nga draft i %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Pagesa ishte e pavlefshme nga %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Rimbursim i sukseshem: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Kapje e suksesshme: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Porosia eshte konfirmuar manualisht nga %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Porosia eshte anulluar nga %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Ne vendosem ne stok %(quantity)d artikull" -msgstr[1] "Ne vendosem ne stok %(quantity)d artikuj" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s shtoi shenimin: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Perfundimi i #%(fulfillment)s u anullua nga %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "Perfundimi i %(quantity_fulfilled)d artikulli" -msgstr[1] "Perfundimi i %(quantity_fulfilled)d artikujve" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Porosia u pranua." +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Porosia u pagua" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s email u dergua te klienti (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Te dhenat e porosise u ndryshuan nga %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Perfundimi i #%(fulfillment)s statusit te dergeses u ndryshua ne " -"%(tracking_number)s nga %(user_name)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "%(quantity)d artikull u mbishit ne kete porosi." -msgstr[1] "%(quantity)d artikuj u mbishiten ne kete porosi." +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -896,23 +954,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Metoda e pageses nuk ekziston" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Pagesa nuk mund te anullohet" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Menaxho porosite" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Perfundimi #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -921,12 +979,12 @@ msgstr "" "Nuk mund te vendosnim kete porosi ne llogarine tuaj sepse adresa e emailit " "nuk eshte njelloj." -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Porosia eshte vendosur ne llogarine tuaj" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Menaxho faqet" @@ -936,58 +994,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manual" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Autorizim" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Pagese" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Kthim" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "E siguruar" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "E anashkaluar" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "E papaguar" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "Pjeserisht e paguar" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "E paguar" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Pjeserisht e rimbursuar" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "E rimbursuar" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "Nuk mund te procesohej transaksioni. Ju lutem provoni serish." @@ -997,7 +1050,7 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Statusi i pageses" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." @@ -1005,12 +1058,12 @@ msgstr "" "Te vendosurit statusin e rimbursimit per {} direkt nuk eshte e mundur. Ju " "lutem perdorni dashboard per te rimbursuar pjeserisht." -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Porosia nuk eshte paguar." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Te dhenat e pageses ishin te pavlefshme." @@ -1020,13 +1073,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Porosia nuk mund te vazhdohej." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr " %(currency)s nuk eshte e suportuar." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Pay now with Razorpay" @@ -1046,12 +1099,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Porosia nuk eshte paguar." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Pagesa totale" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "Porosite me pagesa nuk mund te behen manualisht si te paguara." @@ -1096,12 +1149,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "jashte stoku" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "emri" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "cmimi" @@ -1111,33 +1164,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "ndryshimi i fundit" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Rendit sipas" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Cmimi" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Menaxho produktet." -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "produkt_dixhital" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Pyetje" @@ -1183,170 +1236,190 @@ msgid "Spanish" msgstr "Spanish" #: saleor/settings.py:71 +msgid "Colombian Spanish" +msgstr "" + +#: saleor/settings.py:72 msgid "Estonian" msgstr "Estonian" -#: saleor/settings.py:72 +#: saleor/settings.py:73 msgid "Persian" msgstr "Persian" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "French" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Hindi" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Hungarian" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Indonesian" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italian" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japanese" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Korean" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongolian" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norwegian" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Dutch" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polish" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Brazilian Portuguese" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Romanian" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Russian" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovak" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Serbian" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "Swahili" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Swedish" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "Thai" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turkish" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukrainian" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnamese" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Simplified Chinese" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Traditional Chinese" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "European Union" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Dummy gateway" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Dergesa ne baze te cmimit" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Dergesa ne baze te peshes" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d shtete" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Menaxho dergesat" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s dhe me shume" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s deri %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s dhe me shume" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s deri %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Menaxho te dhenat." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "Menaxho perkthimet." @@ -1809,7 +1882,7 @@ msgstr "Kerko" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Karta juaj" #: templates/base.html:202 @@ -1821,44 +1894,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Guide e stilit" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Subtotal" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Dergesa dhe taksat do kalkulohen ne fund te porosise" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Shko te karta" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Checkout" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Nuk keni asnje produkt ne karten e blerjeve." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Shiko uljet" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Faqja kryesore" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Subtotal" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Kosto e transportit per:" @@ -1868,9 +1917,9 @@ msgid "Total" msgstr "Totali" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" -msgstr "Dergesa dhe taksat do kalkulohen ne fund te llogarise" +msgstr "Dergesa dhe taksat do kalkulohen ne fund te porosise" #: templates/checkout/details.html:7 msgctxt "Checkout page title" @@ -1923,45 +1972,55 @@ msgid "Total" msgstr "Totali" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Karta juaj" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Karta" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Artikulli eshte fshire nga karta" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Artikull" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Sasia" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Cmimi" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Checkout" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Fshi cdo gje nga karta" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Nuk keni asnje produkt ne karten e blerjeve." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Shiko uljet" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2098,6 +2157,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Porosit" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Dergesa dhe taksat do kalkulohen ne fund te porosise" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Shko te karta" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Checkout" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2214,8 +2288,8 @@ msgstr "Uljet" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2299,8 +2373,8 @@ msgstr "Faqet" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "I pavlefshem:" +msgid "Release:" +msgstr "" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2548,7 +2622,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Shto koleksion te ri" @@ -2558,47 +2632,47 @@ msgstr "Shto koleksion te ri" msgid "Collections" msgstr "Koleksione" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Fshi koleksion" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Shiko ne faqe" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Dispozicioni" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Anullo" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Ndrysho" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Krijo" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "E publikuar" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Draft" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Can't unpublish homepage collection" @@ -3181,7 +3255,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Totali" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3417,393 +3491,393 @@ msgid "Edit address" msgstr "Ndrysho adresen" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Adresa e dergeses" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Adresa e faturimit" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Anullo porosine" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Fshi porosine ne draft" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Print" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detajet" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Pagesat" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Histori" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Pagesat" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Balanci i ngelur" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Shuma e autorizuar me pare" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Shuma e ruajtur" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "E siguruar" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Kthim" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "E anashkaluar" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Vendose si te paguar" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Klienti" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Ndrysho detajet e klientit" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Ndrysho" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Mungon adresa e dergeses" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Njelloj si adresa e dergeses" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Mungon adresa e faturimit" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Porosia draft #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Porosia #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Placed on" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Artikull" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Cmimi" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Sasia" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Totali" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Ndrysho sasine" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Fshi rrjeshtin" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Ndrysho transportin" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Transporti (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Dergesa" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Taksat (e perfshira)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Taksat" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Zbritje (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Zbritje" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Ndrysho kuponin" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Ndrysho kuponin" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Ndrysho zbritjen" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Ndrysho zbritjen" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Totali final" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Perundo porosine" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Perfundo" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Shto artikull ne porosine" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Shto artikull" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Krijo porosi" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Krijo porosi" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Fature" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Shiko ne faqe" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Perfundimi #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Kodi i ndjekjes se statusit: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Anullo perfundimin" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Anullo" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Ndrysho kodin e ndjekjes se statusit" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Ndrysho ndjekjen e statusit" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Shto ndjekjen e statusit" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Paketimi" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Shenim i klientit" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Ska asnje shenim te klientit lidhur me kete porosi." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Shenime te porosise" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Mungojne shenimet lidhur me kete porosi." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Shto shenim" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "ID e transaksionit" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Data" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Statusi i pageses" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Sasia" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Mungon pagesa per kete porosi." @@ -5842,24 +5916,25 @@ msgstr "Produktet me te njejta karakteristika" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(opsionale)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Dosje" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6451,6 +6526,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Adresa e faturimit" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Mungon adresa e faturimit" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6458,7 +6539,7 @@ msgid "Shipping address" msgstr "Adresa e dergeses" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Mungon transporti" diff --git a/locale/sq/LC_MESSAGES/djangojs.mo b/locale/sq/LC_MESSAGES/djangojs.mo index 108be35cb57..9702067e34b 100644 Binary files a/locale/sq/LC_MESSAGES/djangojs.mo and b/locale/sq/LC_MESSAGES/djangojs.mo differ diff --git a/locale/sr/LC_MESSAGES/django.mo b/locale/sr/LC_MESSAGES/django.mo index 9adb255301c..fe162752a4b 100644 Binary files a/locale/sr/LC_MESSAGES/django.mo and b/locale/sr/LC_MESSAGES/django.mo differ diff --git a/locale/sr/LC_MESSAGES/django.po b/locale/sr/LC_MESSAGES/django.po index 8a0275ccdbd..9eebca43d60 100644 --- a/locale/sr/LC_MESSAGES/django.po +++ b/locale/sr/LC_MESSAGES/django.po @@ -4,16 +4,16 @@ # Mirumee Software , 2017. # # Translators: -# Bogdan Đukić , 2018 +# Bogdan Đukić , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Bogdan Đukić , 2018\n" +"Last-Translator: Bogdan Đukić , 2019\n" "Language-Team: Serbian (https://www.transifex.com/mirumee/teams/34782/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,32 +21,82 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Lozinka" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Ova email adresa je već registrovana" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Ime" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Prezime" @@ -151,12 +201,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Poštanski kod" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Država" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Ime" @@ -176,37 +226,37 @@ msgctxt "Address" msgid "Address" msgstr "Adresa" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Grad" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Oblast" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Poštanski kod" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Država ili provincija" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Broj telefona" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Ulica, poštanski fah, naziv kompanije" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Stan, apartman, jedinica, zgrada, sprat, itd" @@ -220,17 +270,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Ova vrednost je nevažeća za odabranu zemlju" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Upravljaj korisnicima" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Upravljaj osobljem" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -251,40 +301,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Uspešno ste odjavljeni" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Korisnik je kreiran" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Lozinka je uspešno promenjena." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Nalog je uspešno ažuriran." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adresa je uspešno ažurirana." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adresa je uspešno izbrisana." -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Molimo Vas proverite vaše sanduče za potvrdni email." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -293,278 +343,264 @@ msgstr "" "Vaš nalog je uspešno izbrisan. U slučaju bilo kakvog problema ili pitanja " "slobodno nas kontaktirajte." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Poštarina" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Količina" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Izvinite. Ovaj proizvod trenutno nije dostupan." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Izvinie. Ovaj proizvod trenutno nije na zalihama." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oops. Nismo uspeli da nađemo taj proizvod." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Samo %d na zalihama." -msgstr[1] "Samo %d na zalihama." -msgstr[2] "Samo %d na zalihama." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Država" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Unesi novu adresu" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adresa" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Unesi novu adresu" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adresa" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Kod je netačan ili je istekao" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -583,7 +619,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -608,7 +644,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -623,92 +659,96 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Određeni proizvodi" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Određene kolekcije proizvoda" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Određene kategorije proizvoda" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Poštarina" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Besplatna poštarina" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Upravljaj popustima i vaučerima." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Popust nije primenjljiv na ovaj proizvod" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Upravljaj navigacijom." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -718,17 +758,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -739,156 +779,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -900,35 +957,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Upravljaj stranicama." @@ -938,58 +995,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -999,18 +1051,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1020,13 +1072,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1046,12 +1098,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1096,12 +1148,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "naziv" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1111,33 +1163,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sortiraj po" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Cena" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1183,170 +1235,190 @@ msgid "Spanish" msgstr "Španski" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 msgid "Persian" msgstr "Persijski" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Francuski" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Mađarski" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italijanski" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japanski" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Koreanski" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongolski" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norveški" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Holandski" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Poljski" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Brazilski Portugalski" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Rumunski" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Ruski" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovački" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Švedski" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turski" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukrajinski" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vijetnamski" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Pojednostavljeni Kineski" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Tradicionalni Kineski" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Evropska Unija" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Poštarina osnovana na ceni" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Poštarina osnovana na težini" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d država" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Upravljaj poštarinom" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s i više" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s do %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s i više" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s do %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Upravljaj postavkama." -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1793,7 +1865,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1805,44 +1877,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Početna" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1852,7 +1900,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1907,45 +1955,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Količina" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Cena" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2077,6 +2135,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2187,8 +2260,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2272,7 +2345,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2517,7 +2590,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2527,47 +2600,47 @@ msgstr "" msgid "Collections" msgstr "Kolekcije" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Odustani" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Ažuriraj" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Objavljeno" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3126,7 +3199,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3356,393 +3429,393 @@ msgid "Edit address" msgstr "Izmeni adresu" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detalji" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Izmeni" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Cena" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Količina" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Poštarina" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Odustani" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Datum" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5694,24 +5767,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6258,6 +6332,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6265,7 +6345,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/sr/LC_MESSAGES/djangojs.mo b/locale/sr/LC_MESSAGES/djangojs.mo index 4a6a2bf36b2..3a33e4faae2 100644 Binary files a/locale/sr/LC_MESSAGES/djangojs.mo and b/locale/sr/LC_MESSAGES/djangojs.mo differ diff --git a/locale/sv/LC_MESSAGES/django.mo b/locale/sv/LC_MESSAGES/django.mo index d86c486f342..81aa05c0e0c 100644 Binary files a/locale/sv/LC_MESSAGES/django.mo and b/locale/sv/LC_MESSAGES/django.mo differ diff --git a/locale/sv/LC_MESSAGES/django.po b/locale/sv/LC_MESSAGES/django.po index 7334185244d..a4f4a4b4805 100644 --- a/locale/sv/LC_MESSAGES/django.po +++ b/locale/sv/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: André Karlsson , 2019\n" "Language-Team: Swedish (https://www.transifex.com/mirumee/teams/34782/sv/)\n" @@ -23,32 +23,82 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Lösenord" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Denna email-adress har redan registrerats" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Förnamn" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Efternamn" @@ -153,12 +203,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Postnummer" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Land" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Förnamn" @@ -178,37 +228,37 @@ msgctxt "Address" msgid "Address" msgstr "Adress" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Postort" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Distrikt" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Postnummer" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Län eller provis" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefonnummer" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Adress, box, företagsnamn" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Lägenhetsnummer våning etc." @@ -222,17 +272,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Felaktigt värde för valt land" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Hantera kunder" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Hantera personal" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Imitera kunder" @@ -253,40 +303,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Du har loggats ut" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Användaren skapad" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Lösenordet har bytts" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Konto är uppdaterat." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adressen uppdaterad" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adressen borttagen" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Vänligen kontrollera din email för konfirmation" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -295,96 +345,102 @@ msgstr "" "Ditt konto har tagits bort. Vid eventuella problem eller frågor, kontakta " "oss gärna" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Betalning" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Leverans" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Antal" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Denna produkt är tyvärr inte tillgänglig" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Denna produkt är tyvärr slut på lager" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oops, vi kan inte hitta den produkten" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Endast %d kvar i lager" -msgstr[1] "Endast %d kvar i lager" +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Land" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Ange email" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adress" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Ange email adress" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Samma som leverans" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adress" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Fraktsätt" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Felaktig eller utgången rabattkod" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Presentkort eller rabattkod" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -392,182 +448,162 @@ msgstr "" "Vi har tyvärr inte så många varor i lager, antalet sattes till max antal " "tillgängliga just nu" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Er order kräver ingen frakt" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Ange en leveransmetod först" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Detta erbjudande är inte tillgängligt i ert land" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Detta erbjudande gäller endast valda varor" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Kupongen blev ogiltig under tiden. Orderplacering avbruten." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Leveranssätt är ej satt" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Leveransadress är ej satt" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Leveranssättet är ej giltigt för angiven leveransadress" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Denna kupong har gått ut. Vänligen gå igenom ert köp" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Vänligen gå igenom ert köp" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "boende" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "inträde på kulturella evenemang" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "inträde på underhållnings evenemang" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "inträde på sport evenemang" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reklam" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "jordbruksprodukter" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "barnmat" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "cyklar" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "böcker" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "barnkläder" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "inhemskt bränsle" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "inhemska tjänster" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-böcker" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "mat" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "hotell" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "medicin" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "tidningar" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "persontransport" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "läkemedel" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "fastighetsrenovering" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restauranger" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "subventionerade social bostäder" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standard" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "vatten" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -585,7 +621,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Vilket land som helst" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Du är nu inloggad som {}" @@ -610,7 +646,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -625,91 +661,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Specifika produkter" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Specifik kollektion av produkter" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Specifik kategori av produkter" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Frakt" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Gratis frakt" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s på frakt" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)spå %(product_num)d produkter" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)spå %(collections_num)dsamlingar" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)spå %(categories_num)dkategorier" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s på" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Detta erbjudande gäller bara på beställningar över %(amount)s" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Hantera försäljning och kuponger" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Rabatt kan inte tillämpas på denna produkt" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Endas t %(quantity)d vara kvar för att uppfylla " -msgstr[1] "Endast %(quantity)d varor kvar för att uppfylla " +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Denna uppfyllelse kan inte avbrytas" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Hantera navigation" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL: " @@ -719,17 +759,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategori:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Kollektioner:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Sida:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -740,155 +780,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Ej fullbordad" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Delvis fullbordad" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Fullbordad" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Avbruten" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Fullbordad" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Avbruten" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Betalningsbekräftelse" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Leveransbekräftelse" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Bekräftelse på fullbordan " +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Orderbekräftelse" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Order skapades från utkast sortera på %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Betalningen blev avbruten av %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Framgångsrikt återbetalat: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Framgångsrikt fångat: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Order manuellt markerad som betald av %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Ordern avbröts av %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Vi har fyllt på %(quantity)d vara" -msgstr[1] "Vi har fyllt på %(quantity)d varor" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s tilläggsnoterade: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Köp #%(fulfillment)s avbröts av %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "Fullbordade %(quantity_fulfilled)d vara" -msgstr[1] "Köp av %(quantity_fulfilled)d varor fullbordad" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Order skapades" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Order har betalats till fullo" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)s e post skickades till kunden (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Order detaljer uppdaterades av %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -"Spårning av köp #%(fulfillment)s ändrades till %(tracking_number)s av " -"%(user_name)s" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "%(quantity)dvara översåld på denna order " -msgstr[1] "%(quantity)d varor översåld på denna order" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -900,23 +958,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Betalning finns inte" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Betalningen kan ej avbrytas." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Hantera ordrar" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "Köp #%s" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -925,12 +983,12 @@ msgstr "" "Vi kan inte matcha ordern till till konto, då e-post adressen inte " "överensstämmer" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Ordern är nu tilldelad till konto" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Hantera sidor" @@ -940,58 +998,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Manual" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Tillstånd" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Belasta" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Återbetalning" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Lås" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Ogiltigt" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Ej belastad" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Återbetalad" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "Kunde ej behandla transaktionen. Försök igen om en stund." @@ -1001,18 +1054,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Betalstatus" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Orden var ej belastad." -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Betalningsuppgifterna var ej giltiga." @@ -1022,13 +1075,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Ordern kunde ej bli uppfylld." -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "Valutan %(currency)s är stöds ej." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Betala nu med Razorpay" @@ -1048,12 +1101,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Orden var ej belastad." -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Total betalning" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1098,12 +1151,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "slut i lager" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "namn" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "pris" @@ -1113,33 +1166,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "senast uppdaterad" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sortera på" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Pris" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Hantera produkter" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Förfrågan" @@ -1185,170 +1238,190 @@ msgid "Spanish" msgstr "Spansk" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 msgid "Persian" msgstr "Persiska" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Fransk" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Ungersk" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "Armenisk" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "Italiensk" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japansk" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Koreansk" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Mongoliska" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norsk" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Holländsk" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polsk" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "Brasiliansk portugisiska" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Rumänsk" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Rysk" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovakisk" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "Svenska" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Turkisk" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "Ukrainsk" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "Vietnamesisk" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Förenklad kinesiska" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Traditionell kinesiska" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "europeiska unionen" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "Dummy gateway" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Prisbaserad frakt" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Viktbaserad frakt" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d länder" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Hantera leverans" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s och över" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s till %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s och över" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s till %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Hantera inställningar" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1807,7 +1880,7 @@ msgstr "Sök" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Din varukorg" #: templates/base.html:202 @@ -1819,44 +1892,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Stil guide" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Delsumma" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Frakt och skatt beräknas vid utcheckning" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Gå till varukorg" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Utcheckning" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Det finns inga varor i din varukorg" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Kolla in vår reor" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Hem" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Delsumma" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Fraktkostnad för:" @@ -1866,7 +1915,7 @@ msgid "Total" msgstr "Totalsumma" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Frakt och skatt beräknas vid utcheckning" @@ -1921,45 +1970,55 @@ msgid "Total" msgstr "Totalsumma" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Din varukorg" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Varukorg" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Produkt borttagen från varukorg" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Produkt" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Antal" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Pris" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Utcheckning" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Rensa varukorg" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Det finns inga varor i din varukorg" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Kolla in vår reor" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2091,6 +2150,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Lägg order" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Frakt och skatt beräknas vid utcheckning" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Gå till varukorg" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Utcheckning" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2201,8 +2275,8 @@ msgstr "Försäljningar" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2286,8 +2360,8 @@ msgstr "Sidor" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "Void:" +msgid "Release:" +msgstr "Version:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2537,7 +2611,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Lägg till ny kollektion" @@ -2547,47 +2621,47 @@ msgstr "Lägg till ny kollektion" msgid "Collections" msgstr "Kollektioner" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Ta bort kollektion" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Se på sida" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Tillgänglighet" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Avbryt" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Uppdatera" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Skapa" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Publicerad" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Utkast" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Kan inte avpublicera sidan kollektioner" @@ -3164,7 +3238,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Totalsumma" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3399,393 +3473,393 @@ msgid "Edit address" msgstr "Ändra adress" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Leveransadress" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Fakturaadress" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Avbryt order" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Ta bort orderförslag" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Skriv ut" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detaljer" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Betalningar" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Historik" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Betalningar" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Innestående balans" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Summa för automatisk betalning" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Låst nu summa" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Lås" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Återbetalning" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Ogiltigt" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Markera som betald" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Kund" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Ändra kunddetaljer" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Ändra" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Ingen Leveransadress" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Samma som leveransadress" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Ingen fakturaadress" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "Orderförslag #%(order)s" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "Order #%(order)s" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Beställd den" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Föremål" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Pris" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Antal" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Totalsumma" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "SKU: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Ändra antal" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Ta bort rad" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Ändra leveransadress" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Leverans (%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Frakt" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Moms(Inkluderad)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Moms" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "Rabatt (%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "Rabatt" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Ändra rabattkupong" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Ändra rabattkupong" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "Ändra rabatt" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "Ändra rabatt" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Totalt" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Slutför order" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Slutför" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Lägg till produkt till order" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Lägg till produkt" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Skapa order" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Skapa order" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Faktura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Se på sida" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "Slutfört #%(fulfillment)s" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Spårningsnummer: %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Avbryt Slutfört" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Avbryt" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Ändra spårningsnummer" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Ändra spårning" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Lägg till spårning" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Packlista" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Kundnotering" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "Det finns ingen kundnotering associerad med denna order." -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Order noteringar" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Det finns inga noteringar associerad med denna order" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Lägg till notering" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Transaktions ID" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Datum" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Betalstatus" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Summa" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Ingen betalning har gjorts för denna order." @@ -5804,24 +5878,25 @@ msgstr "Utvalda produkter" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(valfritt)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Fil" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6390,6 +6465,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Fakturaadress" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Ingen fakturaadress" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6397,7 +6478,7 @@ msgid "Shipping address" msgstr "Leveransadress" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "Ingen leverans krävs" diff --git a/locale/sv/LC_MESSAGES/djangojs.mo b/locale/sv/LC_MESSAGES/djangojs.mo index 389ac859d7d..97a99a1a1d3 100644 Binary files a/locale/sv/LC_MESSAGES/djangojs.mo and b/locale/sv/LC_MESSAGES/djangojs.mo differ diff --git a/locale/sw/LC_MESSAGES/django.mo b/locale/sw/LC_MESSAGES/django.mo index 8d1c66db907..af6864b7dd9 100644 Binary files a/locale/sw/LC_MESSAGES/django.mo and b/locale/sw/LC_MESSAGES/django.mo differ diff --git a/locale/sw/LC_MESSAGES/django.po b/locale/sw/LC_MESSAGES/django.po index 5d5d493833c..ed96caca758 100644 --- a/locale/sw/LC_MESSAGES/django.po +++ b/locale/sw/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Warren alex , 2019\n" "Language-Team: Swahili (https://www.transifex.com/mirumee/teams/34782/sw/)\n" @@ -21,32 +21,82 @@ msgstr "" "Language: sw\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Barua pepe" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Neno la siri" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Barua pepe" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Barua pepe hii tayari imesajiliwa" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Jina la kupewa" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Jina la ukoo" @@ -151,12 +201,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Jina la kupewa" @@ -176,37 +226,37 @@ msgctxt "Address" msgid "Address" msgstr "" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Wilaya" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -220,17 +270,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -249,317 +299,303 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Barua pepe" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -577,7 +613,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -602,7 +638,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "" @@ -617,91 +653,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -711,17 +751,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -732,153 +772,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -890,35 +950,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -928,58 +988,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -989,18 +1044,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1010,13 +1065,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1036,12 +1091,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1086,12 +1141,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1101,33 +1156,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1173,170 +1228,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1783,7 +1858,7 @@ msgstr "" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "" #: templates/base.html:202 @@ -1795,44 +1870,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1842,7 +1893,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1897,45 +1948,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2067,6 +2128,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2177,8 +2253,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2262,7 +2338,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2506,7 +2582,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2516,47 +2592,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3115,7 +3191,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3345,393 +3421,393 @@ msgid "Edit address" msgstr "" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5683,24 +5759,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6247,6 +6324,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6254,7 +6337,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/th/LC_MESSAGES/django.mo b/locale/th/LC_MESSAGES/django.mo index a33847db6c2..f132b6d0caa 100644 Binary files a/locale/th/LC_MESSAGES/django.mo and b/locale/th/LC_MESSAGES/django.mo differ diff --git a/locale/th/LC_MESSAGES/django.po b/locale/th/LC_MESSAGES/django.po index 099239d30d8..da72061de0e 100644 --- a/locale/th/LC_MESSAGES/django.po +++ b/locale/th/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Jakkrit S , 2019\n" "Language-Team: Thai (https://www.transifex.com/mirumee/teams/34782/th/)\n" @@ -22,142 +22,192 @@ msgstr "" "Language: th\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "อีเมล" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "รหัสผ่าน" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "อีเมล" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "อีเมลนี้มีอยู่ในระบบแล้ว" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "ชื่อ" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "นามสกุล" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "พื้นที่" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "ประเทศ" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "แผนก" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "เขต/อำเภอ" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" msgstr "" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "รหัส PIN" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "รหัสไปรษณีย์" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "จังหวัด" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "รัฐ" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "รหัสไปรษณีย์" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "ประเทศ" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "ชื่อ" @@ -177,57 +227,61 @@ msgctxt "Address" msgid "Address" msgstr "ที่อยู่" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "เมือง" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "เขต/อำเภอ" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "รหัสไปรษณีย์" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "จังหวัด" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "เบอร์โทรศัพท์" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "เบอร์โทรศัพท์ไม่ถูกต้อง" + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -246,139 +300,141 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "เบอร์โทรศัพท์ไม่ถูกต้อง" - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "ล็อกเอ๊าท์สำเร็จ" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "สร้างผู้ใช้เรียบร้อยแล้ว" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "เปลี่ยนพาสเวิร์ดสำเร็จ" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "บัญชีอัพเดทสำเร็จ" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "ที่อยู่อัพเดทสำเร็จ" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "ลบที่อยู่เรียบร้อยแล้ว" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "กรุณาตรวจสอบอีเมลยืนยันที่ถูกส่งไปแล้ว" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "ลบบัญชีเรียบร้อยแล้ว หากมีข้อสงสัยหรือคำถาม กรุณาติดต่อเรา" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "บิล" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "ตัวเลือกการจัดส่ง" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "จำนวน" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "ขอโทษค่ะ ไม่มีสินค้านี้ในขณะนี้ค่ะ" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "ขอโทษค่ะ สินค้านี้ไม่มีในสต็อกในขณะนี้ค่ะ" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "ขอโทษค่ะ เราหาสินค้านี้ไม่เจอค่ะ" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." msgstr[0] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "ประเทศ" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "อีเมล" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "กรุณากรอกที่อยู่ใหม่" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "ที่อยู่" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "กรุณากรอกที่อยู่ใหม่" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "ที่อยู่เดียวกับที่อยู่จัดส่ง" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "ที่อยู่" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "ตัวเลือกการจัดส่ง" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "โค๊ดส่วนลดไม่ถูกต้อง หรืออาจหมดอายุแล้ว" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "รหัสโค๊ดบัตรของขวัญหรือรหัสส่วนลด" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -386,182 +442,162 @@ msgstr "" "ขอโทษค่ะ เรามีสินค้าไม่พอในสต็อก " "จำนวนสินค้าที่ต้องการมีน้อยกว่าสินค้าในสต็อกค่ะ" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "คำสั่งซื้อของคุณไม่จำเป็นต้องกรอกที่อยู่จัดส่งค่ะ" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "กรุณาเลือกวิธีจัดส่งก่อนค่ะ" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "ไม่มีข้อเสนอนี้ในประเทศของคุณค่ะ" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "ข้อเสนอนี้ใช้ได้กับเพียงสินค้าบางชิ้นที่เลือกอยู่นะคะ" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "ไม่ได้เลือกวิธีจัดส่งค่ะ" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "ไม่ได้กรอกที่อยู่จัดส่งค่ะ" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "วิธีจัดส่งที่เลือกไม่สามารถใช้ได้กับที่อยู่จัดส่งนี้ค่ะ" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "ที่อยู่จัดส่งบิลไม่ได้ตั้งไว้ค่ะ" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "จักรยาน" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "หนังสือ" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "เสื้อผ้าเด็ก" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "หนังสืออีบุ๊ค" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "โรงแรมที่พัก" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "ยา/เวชภัณฑ์" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "หนังสือพิมพ์" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -578,7 +614,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -603,7 +639,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "เปอร์เซ็นต์" @@ -618,90 +654,94 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "ตัวเลือกการจัดส่ง" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "ส่วนลดนี้ไม่สามารถใช้กับสินค้านี้ค่ะ" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -711,17 +751,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -732,150 +772,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "ยกเลิกแล้ว" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "ยกเลิกแล้ว" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "ยืนยันการชำระเงิน" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "ยืนยันที่อยู่จัดส่ง" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "ยืนยันคำสั่งสินค้า" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "คำสั่งซื้อนี้ได้รับชำระเงินครบถ้วนแล้ว" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -887,35 +950,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "จัดการคำสั่งซื้อ" -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "ไม่สามารถส่งคำสั่งซื้อไปยังบัญชีของคุณได้เนื่องจากอีเมลไม่ตรงกัน" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -925,58 +988,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "คืนเงิน" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "ไม่สามารถดำเนินการได้ อีกสักครู่กรุณาลองใหม่อีกครั้งค่ะ" @@ -986,18 +1044,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "สถานะการชำระเงิน" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1007,13 +1065,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1033,12 +1091,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1083,12 +1141,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "สินค้าหมดสต็อก" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "ชื่อ" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "" @@ -1098,28 +1156,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "เรียงโดย" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "ราคา" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "" @@ -1165,166 +1228,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swedish" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Thai" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Turkish" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Ukrainian" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Vietnamese" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Simplified Chinese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 +msgid "Swedish" +msgstr "" + +#: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "ค่าจัดส่งตามราคา" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "ค่าจัดส่งตามน้ำหนัก" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "จัดการการตั้งค่า" -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "จัดการการแปลภาษา" @@ -1772,8 +1859,8 @@ msgstr "ค้นหา" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" -msgstr "ตระกร้าสินค้า" +msgid "Your cart" +msgstr "" #: templates/base.html:202 msgid "Account" @@ -1784,44 +1871,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "ค่าขนส่งและภาษีจะคำนวณเมื่อเช็คเอ๊าท์" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "ไปยังตระกร้าสินค้า" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "เช็คเอ๊าท์" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "ไม่สินค้าในตระกร้าสินค้า" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "ดูสินค้าลดราคา" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "หน้าแรก" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "ค่าจัดส่งสำหรับ:" @@ -1831,7 +1894,7 @@ msgid "Total" msgstr "รวมทั้งหมด" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "ค่าขนส่งและภาษีจะคำนวณเมื่อเช็คเอ๊าท์" @@ -1886,45 +1949,55 @@ msgid "Total" msgstr "รวมทั้งหมด" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "ลบสินค้าออกจากตระกร้าสินค้าแล้ว" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "สินค้า" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "จำนวน" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "ราคา" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "เช็คเอ๊าท์" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "ไม่สินค้าในตระกร้าสินค้า" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "ดูสินค้าลดราคา" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2056,6 +2129,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "ค่าขนส่งและภาษีจะคำนวณเมื่อเช็คเอ๊าท์" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "ไปยังตระกร้าสินค้า" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "เช็คเอ๊าท์" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2166,8 +2254,8 @@ msgstr "ลดราคา" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2251,7 +2339,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2494,7 +2582,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2504,47 +2592,47 @@ msgstr "" msgid "Collections" msgstr "คอลเล็กชั่น" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "ยกเลิก" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "อัพเดท" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "สร้าง" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3103,7 +3191,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "รวมทั้งหมด" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3333,393 +3421,393 @@ msgid "Edit address" msgstr "แก้ไขที่อยู่" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "ที่อยู่จัดส่ง" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "ี่ที่อยู่ส่งบิล" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "ยกเลิกคำสั่งซื้อ" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "รายละเอียด" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "คืนเงิน" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "ลูกค้า" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "แก้ไขรายละเอียดลูกค้า" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "แก้ไข" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "สั่งซื้อเมื่อ" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "ราคา" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "จำนวน" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "รวมทั้งหมด" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "เปลี่ยนจำนวน" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "แก้ไขการจัดส่ง" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "ตัวเลือกการจัดส่ง" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "ภาษี" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "ส่วนลด" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "แก้ไขส่วนลด" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "แก้ไขส่วนลด" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "สร้างคำสั่งซื้อ" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "สร้างคำสั่งซื้อ" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "ยกเลิก" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "แก้ไขข้อมูลติดตามสถานะจัดส่ง" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "เพิ่มข้อมูลติดตามสถานะจัดส่งสินค้า" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "วันที่" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "สถานะการชำระเงิน" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5671,24 +5759,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6165,14 +6254,14 @@ msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" +msgid "Your order %(order)s has been fulfilled" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:15 @@ -6237,6 +6326,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "ี่ที่อยู่ส่งบิล" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6244,7 +6339,7 @@ msgid "Shipping address" msgstr "ที่อยู่จัดส่ง" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" @@ -6322,8 +6417,14 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." -msgstr "ขอบคุณสำหรับการสั่งซื้อ รายละเอียดสินค้าที่จัดส่งปรากฏด้านล่าง" +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." +msgstr "" #: templates/templated_email/source/confirm_order.mjml:17 #, python-format diff --git a/locale/th/LC_MESSAGES/djangojs.mo b/locale/th/LC_MESSAGES/djangojs.mo index ef9d9362e7a..de254026644 100644 Binary files a/locale/th/LC_MESSAGES/djangojs.mo and b/locale/th/LC_MESSAGES/djangojs.mo differ diff --git a/locale/tr/LC_MESSAGES/django.mo b/locale/tr/LC_MESSAGES/django.mo index 3c0a14ee69e..cb30cd2482c 100644 Binary files a/locale/tr/LC_MESSAGES/django.mo and b/locale/tr/LC_MESSAGES/django.mo differ diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po index 9173a6e2dd4..16777fb87f9 100644 --- a/locale/tr/LC_MESSAGES/django.po +++ b/locale/tr/LC_MESSAGES/django.po @@ -7,24 +7,24 @@ # Patryk Zawadzki , 2018 # NyаnKiyoshi , 2018 # R.Sercan Arıcı , 2018 -# Ömer Faruk Demirel , 2018 # Cihad GÜNDOĞDU , 2018 # Taygun YI , 2019 # Yasin Karadeniz , 2019 -# İsmail Bülent Önsoy , 2019 -# Ramazan Acar , 2019 -# Engin Öz , 2019 # Tugba Cekirge , 2019 # Hakan ıı, 2019 +# Engin Öz , 2019 +# İsmail Bülent Önsoy , 2019 +# Ramazan Acar , 2019 +# Ömer Faruk Demirel , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-25 09:50-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Hakan ıı, 2019\n" +"Last-Translator: Ömer Faruk Demirel , 2019\n" "Language-Team: Turkish (https://www.transifex.com/mirumee/teams/34782/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,142 +32,192 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "E-posta" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Şifre" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "E-posta" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Bu e-posta zaten kayıtlı." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "İsim" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Soyadı" -#: saleor/account/i18n.py:18 +#: saleor/account/i18n.py:19 msgctxt "Address field" msgid "Area" msgstr "Bölge" -#: saleor/account/i18n.py:19 +#: saleor/account/i18n.py:20 msgctxt "Address field" msgid "County" msgstr "Ülke" -#: saleor/account/i18n.py:20 +#: saleor/account/i18n.py:21 msgctxt "Address field" msgid "Department" msgstr "Bölüm" -#: saleor/account/i18n.py:21 +#: saleor/account/i18n.py:22 msgctxt "Address field" msgid "District" msgstr "İlçe" -#: saleor/account/i18n.py:22 +#: saleor/account/i18n.py:23 msgctxt "Address field" msgid "Do/si" msgstr "" -#: saleor/account/i18n.py:23 +#: saleor/account/i18n.py:24 msgctxt "Address field" msgid "Eircode" msgstr "Posta Kodu" -#: saleor/account/i18n.py:24 +#: saleor/account/i18n.py:25 msgctxt "Address field" msgid "Emirate" msgstr "Emirlik" -#: saleor/account/i18n.py:25 +#: saleor/account/i18n.py:26 msgctxt "Address field" msgid "Island" msgstr "Ada" -#: saleor/account/i18n.py:26 +#: saleor/account/i18n.py:27 msgctxt "Address field" msgid "Neighborhood" msgstr "Mahalle" -#: saleor/account/i18n.py:27 +#: saleor/account/i18n.py:28 msgctxt "Address field" msgid "Oblast" msgstr "Şehir" -#: saleor/account/i18n.py:28 +#: saleor/account/i18n.py:29 msgctxt "Address field" msgid "Parish" msgstr "Mahalle" -#: saleor/account/i18n.py:29 +#: saleor/account/i18n.py:30 msgctxt "Address field" msgid "PIN" msgstr "Pin" -#: saleor/account/i18n.py:30 +#: saleor/account/i18n.py:31 msgctxt "Address field" msgid "Postal code" msgstr "Posta Kodu" -#: saleor/account/i18n.py:31 +#: saleor/account/i18n.py:32 msgctxt "Address field" msgid "Prefecture" msgstr "Kasaba" -#: saleor/account/i18n.py:32 +#: saleor/account/i18n.py:33 msgctxt "Address field" msgid "Province" msgstr "Şehir" -#: saleor/account/i18n.py:33 +#: saleor/account/i18n.py:34 msgctxt "Address field" msgid "State" msgstr "Eyalet" -#: saleor/account/i18n.py:34 +#: saleor/account/i18n.py:35 msgctxt "Address field" msgid "Suburb" msgstr "Banliyö" -#: saleor/account/i18n.py:35 +#: saleor/account/i18n.py:36 msgctxt "Address field" msgid "Townland" msgstr "Kasaba" -#: saleor/account/i18n.py:36 +#: saleor/account/i18n.py:37 msgctxt "Address field" msgid "Village/township" msgstr "Köy" -#: saleor/account/i18n.py:37 +#: saleor/account/i18n.py:38 msgctxt "Address field" msgid "ZIP code" msgstr "Posta Kodu" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Ülke" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "İsim" @@ -187,57 +237,61 @@ msgctxt "Address" msgid "Address" msgstr "Adres" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Şehir" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "İlçe" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Posta Kodu" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Eyalet" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Telefon numarası" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Açık adres, posta kutusu, şirket adı" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Apartman, süit, ünite, bina, kat, vs..." -#: saleor/account/i18n.py:170 +#: saleor/account/i18n.py:155 saleor/account/validators.py:11 +msgid "The phone number entered is not valid." +msgstr "Girmiş olduğunuz telefon numarası geçersiz." + +#: saleor/account/i18n.py:195 msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Bu değer seçilen ülke için geçersiz" -#: saleor/account/models.py:147 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Müşterileri yönet." -#: saleor/account/models.py:150 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Personel yönet." -#: saleor/account/models.py:153 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "Müşterilerinizi tanıyın." @@ -258,44 +312,40 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/validators.py:11 -msgid "The phone number entered is not valid." -msgstr "Girmiş olduğunuz telefon numarası geçersiz." - -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Başarılı bir şekilde çıkış yaptınız." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Kullanıcı oluşturuldu" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Şifreniz başarılı bir şekilde değiştirildi." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Hesap başarıyla güncellendi." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Adres başarıyla güncellendi." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Adres silindi" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Aktivasyon e-postası için mailinizi kontrol edin." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -304,96 +354,102 @@ msgstr "" "Hesabınız silindi. Bir sorun yaşamanız halinde ya da sorularınız için " "bizimle iletişime geçebilirsiniz." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Ödeme" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Kargo" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Adet" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Üzgünüz. Bu ürünmevcut değil." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Üzgünüz. Ürün stokta yok." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oops. Ürünü bulamadık." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Stokta sadece %d adet kalmış." -msgstr[1] "Stokta sadece %d adet kalmış." +msgstr[0] "" +msgstr[1] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Ülke" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "E-posta" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Yeni adresi girin" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Adres" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Yeni adresi girin" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Kargo adresiyle aynı" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Adres" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Kargo şekli" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "İndirim kodu geçersiz veya süresi dolmuş" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "İndirim kodu veya hediye kartı" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -401,183 +457,163 @@ msgstr "" "Üzgünüz. Seçtiğiniz üründen stokta istediğiniz miktarda yok. Bu nedenle " "miktar alanına, stokta bulunan miktarı yazdırdık." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Siparişiniz kargo gerektirmiyor." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Lütfen önce teslimat metodunu seçiniz." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Bu teklif ülkeniz için geçerli değil." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Bu teklif sadece belirlenen ürünler içindir." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" "Kupon kısa süre içinde geçerliliğini yitirdi. Verilen sipariş iptal edildi." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Teslimat metodu seçilmedi." - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Teslimat adresi seçilmedi." - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "Teslimat adresiniz için geçersiz teslimat metodu" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "Fatura adresi seçilmedi." - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Kuponun son kullanma tarihi geçmiş. Lütfen bilgileri kontrol ediniz." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Lütfen bilgileri kontrol ediniz." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "Borç Tutarı" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "kültürel etkinliklere giriş" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "eğlence etkinliklerine giriş" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "spor etkinliklerine giriş" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "reklam" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "tarım ürünleri" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "bebek gıdaları" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "bisikletler" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "kitaplar" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "çocuk giyim" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "yurtiçi hizmetler" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "e-kitaplar" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "gıdalar" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "oteller" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "tıbbi" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "gazeteler" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "yolcu taşıması" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "tıbbi ilaçlar" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "mülk tadilatları" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "restoranlar" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "sosyal konutlandırma" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "standart" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "su" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "şarap" @@ -595,7 +631,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Herhangi Bir Ülke" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "{} olarak giriş yaptınız" @@ -620,7 +656,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "g" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -635,91 +671,95 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Özel ürünler" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Özel ürün koleksiyonları" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Özel ürün kategorileri" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Kargo" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Bedava kargo" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "Kargoda %(discount)s indirim" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(product_num)d üründe %(discount)s indirim" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(collections_num)d koleksiyonda %(discount)s indirim" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(categories_num)d kategoride %(discount)s indirim" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s indirim" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Bu teklif sadece %(amount)s üstü siparişlerde geçerlidir." -#: saleor/discount/models.py:180 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Satışları ve kuponları yönet." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "İndirim bu ürüne uygulanamaz." -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "Tamamlamaya sadece %(quantity)d ürün kaldı." -msgstr[1] "Tamamlamaya sadece %(quantity)d ürün kaldı." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" +msgstr[1] "" -#: saleor/graphql/order/mutations/fulfillments.py:216 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Tamamlanmış sipariş iptal olamaz" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Navigasyonu yönet." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "URL:" @@ -729,17 +769,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Kategori:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Koleksiyon:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Sayfa:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -750,153 +790,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Tamamlanmamış" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Kısmen tamamlanmış" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Tamamlanmış" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "İptal edilmiş" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Tamamlanmış" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "İptal edilmiş" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Ödeme onaylaması" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Kargo onaylaması" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Tamamlama onaylaması" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Sipariş onaylaması" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Ödeme %(user_name)s tarafından taslak ödemeden oluşturuldu" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Ödeme %(user_name)s tarafından iptal edildi." +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Başarılı geri ödeme: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Başarılı çekim: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "Sipariş %(user_name)s tarafından ödendi olarak işaretlendi" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Sipariş %(user_name)s tarafından iptal edildi" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "%(quantity)d ürünü yeniden stokladık" -msgstr[1] "%(quantity)d ürünü yeniden stokladık" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s not ekledi: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Siparişiniz alındı" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Ödeme tamamlandı" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Sipariş detayları %(user_name)s tarafından güncellendi" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -908,35 +968,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Ödeme mevcut değil" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Ödeme iptal edilemez." -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Siparişleri yönet." -#: saleor/order/models.py:344 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "E-posta adresleri eşleşmediğinden siparişinizi hesabınıza atamadık" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Sipariş hesabınıza atandı" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Sayfaları yönet." @@ -946,58 +1006,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Yetkilendirme" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Geri ödeme" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "Ödemeniz alınamadı. Daha sonra tekrar deneyiniz" @@ -1007,18 +1062,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Ödeme durumu" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Ödeme alınamadı" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Ödeme bilgileriniz yanlış" @@ -1028,13 +1083,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Siparişinize devam edemiyoruz" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "%(currency)s para birimi desteklenmiyor." -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Razorpay ile ödeme" @@ -1054,12 +1109,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Ödeme alınamadı" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Toplam ödeme" -#: saleor/payment/utils.py:236 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "Siparişlere ait ödemeler ödendi olarak işaretlenemez." @@ -1104,12 +1159,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "stokta kalmadı" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "isim" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "ücret" @@ -1119,28 +1174,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "son güncelleme" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sırala" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Ücret" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s - %(price)s" -#: saleor/product/models.py:129 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Ürünleri yönet" -#: saleor/search/forms.py:9 +#: saleor/product/models.py:379 +msgctxt "File as a digital product" +msgid "digital_product" +msgstr "" + +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Sorgu" @@ -1186,166 +1246,190 @@ msgid "Spanish" msgstr "İspanyolca" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 msgid "Persian" msgstr "Farsça" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "Fransızca" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "Hintçe" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "Macarca" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "Endonezce" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "İtalyanca" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "Japonca" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "Korece" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "Moğolca" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "Norveççe" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "Flemenkçe" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "Polonyaca" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "Romence" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "Rusça" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "Slovakça" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "Sırpça" -#: saleor/settings.py:89 +#: saleor/settings.py:94 +msgid "Swahili" +msgstr "" + +#: saleor/settings.py:95 msgid "Swedish" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:91 +#: saleor/settings.py:97 msgid "Turkish" msgstr "Türkçe" -#: saleor/settings.py:92 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "" -#: saleor/settings.py:93 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "" -#: saleor/settings.py:94 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "Basitleştirilmiş Çince" -#: saleor/settings.py:95 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "Geleneksel Çince" -#: saleor/settings.py:331 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "Avrupa Birliği" -#: saleor/settings.py:568 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Fiyata bağlı kargo" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Ağırlığa bağlı kargo" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d ülke" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Kargo Yönetimi" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s ve üzeri" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s ile %(max_price)s arasında" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s ve üzeri" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s ile %(max_weight)s arası" -#: saleor/site/models.py:40 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Ayarları Yönet" -#: saleor/site/models.py:42 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1802,7 +1886,7 @@ msgstr "Ara" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Sepetiniz" #: templates/base.html:202 @@ -1814,44 +1898,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Tasarım Şekli" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Ara toplam" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Kargo ve vergiler ödeme sırasında hesaplanacaktır" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Sepete git" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Ödeme" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Sepetinizde ürün yok." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "İndirimlere göz atın" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Anasayfa" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Ara toplam" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr " Kargo ücreti:" @@ -1861,7 +1921,7 @@ msgid "Total" msgstr "Toplam" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Kargo ve vergiler ödeme sırasında hesaplanacaktır" @@ -1916,45 +1976,55 @@ msgid "Total" msgstr "Toplam" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Sepetiniz" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Sepet" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Ürün sepetten çıkarıldı" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Ürün" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Adet" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Ücret" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Ödeme" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "Sepeti boşalt" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Sepetinizde ürün yok." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "İndirimlere göz atın" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2089,6 +2159,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Sipariş ver" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Kargo ve vergiler ödeme sırasında hesaplanacaktır" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Sepete git" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Ödeme" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2204,8 +2289,8 @@ msgstr "Satışlar" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2289,8 +2374,8 @@ msgstr "Sayfalar" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "İptal:" +msgid "Release:" +msgstr "" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2540,7 +2625,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "Koleksiyon ekle" @@ -2550,47 +2635,47 @@ msgstr "Koleksiyon ekle" msgid "Collections" msgstr "Koleksiyonlar" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "Koleksiyonu kaldır" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Sitede Gör" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "Uygunluk" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "İptal et" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Güncelle" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Oluştur" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Yayınlandı" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Taslak:" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "Anasayfa koleksiyonu kaldırılamıyor" @@ -3151,7 +3236,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Toplam" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3381,393 +3466,393 @@ msgid "Edit address" msgstr "Adresi Düzenle" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Kargo adresi" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Fatura adresi" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Sipariş İptal" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "Taslak siparişi kaldır" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Yazdır" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Detaylar" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Ödemeler" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Geçmiş" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Ödemeler" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "Bilinmiyor" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "Bilinmiyor" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Geri ödeme" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "Ödendi olarak işaretle" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Müşteri" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "Müşteri detaylarını düzenle" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Düzenle" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Kargo adresi yok" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "Kargo adresi ile aynı" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "Fatura adresi yok" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "#%(order)s taslak sipariş" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "#%(order)s sipariş" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Sipariş tarihi" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Ürün" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Ücret" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Adet" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Toplam" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "Barkod: %(sku)s" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Adet değiştir" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "Teslimatı düzenle" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "Teslimat(%(shipping_name)s)" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Kargo" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Vergiler(dahildir)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Vergiler" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "İndirim(%(voucher)s)" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "İndirim" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "Kupon düzenle" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "Kupon düzenle" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "İndirim düzenle" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "İndirim düzenle" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Toplam tutar" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "Siparişi tamamla" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "Tamamla" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Siparişe ürün ekle" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Ürün ekle" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "Sipariş oluştur" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "Sipariş oluştur" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Fatura" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Sitede Gör" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "#%(fulfillment)s tamamlandı" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Takip numarası : %(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "Tamamlamayı iptal et" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "İptal et" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "Takip numarası düzenelendi" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "Takip düzenle" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "Takip ekle" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "Müşteri notu" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Sipariş notu" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Not ekle" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "İşlem No" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Tarih" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Ödeme durumu" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Tutar" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Bu sipariş için ödeme yok" @@ -5719,24 +5804,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6211,14 +6297,14 @@ msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:4 #, python-format msgctxt "Fulfillment confirmation email subject" -msgid "A shipment from order %(order)s is on the way" +msgid "Your order %(order)s has been fulfilled" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:11 msgctxt "Fulfillment confirmation email text" msgid "" "\n" -"Thank you for your order. Below is the list of shipped products.\n" +"Thank you for your order. Below is the list of fulfilled products.\n" msgstr "" #: templates/templated_email/order/confirm_fulfillment.email:15 @@ -6283,6 +6369,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Fatura adresi" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "Fatura adresi yok" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6290,7 +6382,7 @@ msgid "Shipping address" msgstr "Kargo adresi" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" @@ -6368,8 +6460,14 @@ msgstr "" #: templates/templated_email/source/confirm_fulfillment.mjml:16 msgctxt "Fulfillment confirmation email text" -msgid "Thank you for your order. Below is the list of shipped products." -msgstr "Siparişiniz için teşekkür ederiz. Kargolanmış ürün listesi alttadır." +msgid "Thank you for your order. Below is the list of fulfilled products." +msgstr "" + +#: templates/templated_email/source/confirm_fulfillment.mjml:27 +msgctxt "Fulfillment digital products email text" +msgid "" +"You can download your digital products by clicking in download link(s)." +msgstr "" #: templates/templated_email/source/confirm_order.mjml:17 #, python-format diff --git a/locale/tr/LC_MESSAGES/djangojs.mo b/locale/tr/LC_MESSAGES/djangojs.mo index 49cb8d66f8a..537c3ca5858 100644 Binary files a/locale/tr/LC_MESSAGES/djangojs.mo and b/locale/tr/LC_MESSAGES/djangojs.mo differ diff --git a/locale/uk/LC_MESSAGES/django.mo b/locale/uk/LC_MESSAGES/django.mo index cb8fdfeb013..11624f62ac1 100644 Binary files a/locale/uk/LC_MESSAGES/django.mo and b/locale/uk/LC_MESSAGES/django.mo differ diff --git a/locale/uk/LC_MESSAGES/django.po b/locale/uk/LC_MESSAGES/django.po index 93682bf2f1e..6e385df925f 100644 --- a/locale/uk/LC_MESSAGES/django.po +++ b/locale/uk/LC_MESSAGES/django.po @@ -7,21 +7,22 @@ # Roman Starenkyi , 2017 # Patryk Zawadzki , 2018 # Anatolii Krivko , 2018 -# Oleksandr Pryymak <235@inmind.org>, 2018 # Yevhenii Dehtiar , 2018 -# Николай Инкогнито , 2018 +# Roman Storozhuk , 2019 +# Oleksandr Pryymak <235@inmind.org>, 2019 +# rice_ua , 2019 # Andriy Kovalchuk , 2019 +# Николай Инкогнито , 2019 # Marysya Rudska , 2019 -# Roman Storozhuk , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: Roman Storozhuk , 2019\n" +"Last-Translator: Marysya Rudska , 2019\n" "Language-Team: Ukrainian (https://www.transifex.com/mirumee/teams/34782/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,32 +30,82 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Пароль" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Email" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." -msgstr "" +msgstr "Ця електронна адреса вже зареєстрована." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "ім’я" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Прізвище" @@ -159,12 +210,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Індекс" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Країна" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "ім’я" @@ -184,40 +235,40 @@ msgctxt "Address" msgid "Address" msgstr "Адреса" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "місто" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Район" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Індекс" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "область" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "номер телефону" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" -msgstr "" +msgstr "Вулиця" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" -msgstr "" +msgstr "Будинок, квартира" #: saleor/account/i18n.py:155 saleor/account/validators.py:11 msgid "The phone number entered is not valid." @@ -228,17 +279,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Це значення невірне для обраної країни" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -259,138 +310,144 @@ msgstr "" "%(street_address_1)s\n" "%(street_address_2)s" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Ви успішно вийшли." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Користувача створено" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Пароль змінено успішно." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." -msgstr "" +msgstr "Обліковий запис успішно оновлений." -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Адресу оновлено успішно." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Адресу видалено успішно" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Всі покупки" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Кількість" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Просимо вибачення. На даний момент цей товар недоступний." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Просимо вибачення. На даний момент цей товар відсутній на складі." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Ой. Ми не можемо знайти цей товар." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Лише %d залишився на складі." -msgstr[1] "Лише %d залишилося на складі." -msgstr[2] "Лише %d залишився на складі." -msgstr[3] "Лише %d залишився на складі." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Країна" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Email" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Вкажіть нову адресу" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Адреса" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Вкажіть нову адресу" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Так само, як і доставка" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Адреса" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Метод доставки" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Код знижки неправильний або його термін дії закінчився." -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Подарункова картка або код знижки" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -398,184 +455,164 @@ msgstr "" "Вибачте. У нас нема стільки одиниць в наявності. Кількість була встановлена " "на максимально доступну зараз." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "Ваше замовлення не вимагає доставки." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Будь ласка, спочатку виберіть метод доставки." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Ця пропозиція дійсна лише на обрані позиції" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" "Термін дії ваучера закінчився. Будь ласка, перегляньте оформлення " "замовлення." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Будь ласка перегляньте Ваш розрахунок" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -595,7 +632,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Ви увійшли як {}" @@ -620,7 +657,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -635,93 +672,97 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Всі покупки" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Безкоштовна доставка" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s з доставки" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s знижка" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Ця пропозиція дійсна лише при замовленні більш ніж %(amount)s" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "На цей продукт знижка не дійсна" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -731,17 +772,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -752,159 +793,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Замовлення розміщено" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -916,35 +971,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Цієї оплати немає" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "Тепер замовлення прив'язано до вашого профілю" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -954,58 +1009,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Відшкодування" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Зарахувати" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -1015,18 +1065,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Статус оплати " -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1036,13 +1086,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1062,12 +1112,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1112,12 +1162,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "закінчився" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "назва" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "ціна" @@ -1127,33 +1177,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "Оновлений останнього разу " -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Сортувати по" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Ціна" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "%(variant_label)s-%(price)s" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Запит" @@ -1199,170 +1249,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1818,8 +1888,8 @@ msgstr "Пошук" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" -msgstr "Ваша Корзина" +msgid "Your cart" +msgstr "Ваша корзина" #: templates/base.html:202 msgid "Account" @@ -1830,44 +1900,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "Гід стилю" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Загалом" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Перейти до корзини" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Оформити замовлення" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Ваш кошик — порожній" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "Погляньте на наші розпродажі" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Дім " +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Загалом" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1877,7 +1923,7 @@ msgid "Total" msgstr "Разом" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1932,45 +1978,55 @@ msgid "Total" msgstr "Підсумок" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Ваша корзина" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Корзина" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Товар" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Кількість" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Ціна" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Оформити замовлення" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Ваш кошик — порожній" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "Погляньте на наші розпродажі" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2102,6 +2158,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "Зробити замовлення " +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Перейти до корзини" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Оформити замовлення" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2212,8 +2283,8 @@ msgstr "Розпродажі " #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2297,8 +2368,8 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "Версія:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2543,7 +2614,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2553,47 +2624,47 @@ msgstr "" msgid "Collections" msgstr "Колекції" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "Подивитися на сайті" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Відмінити" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Оновити" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "Створити" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Опубліковано" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "Чернетка" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3152,7 +3223,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Підсумок " -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3382,393 +3453,393 @@ msgid "Edit address" msgstr "Редагувати адресу" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "Адреса доставки " #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "Платіжна адреса" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "Відмінити замовлення" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "Друк" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Деталі" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "Платежі" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "Історія" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "Платежі" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "Залишок до олати" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "Попередньо авторизована оплата" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "N/A" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "Зарахований обсяг" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Зарахувати" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Відшкодування" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Редагувати" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "Немає адреси доставки" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Розміщено на" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "Позиція" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Ціна" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Кількість" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Разом" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "Змінити кількість" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "Видалити запис" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Доставка" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "Повна сума" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "Додати продукт до замовлення" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "Додати продукт" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "Рахунок" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "Подивитися на сайті" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "Номер відслідковування:%(tracking)s" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Відмінити" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "Упаковки" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "Помітки про замовлення " -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "Немає поміток, пов’язаних з цим замовленням." -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "Додати помітку " -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "Транзакція" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Дата" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Статус оплати" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Обсяг" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "#%(payment_id)s" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "Оплата не здійснена за це замовлення" @@ -5725,24 +5796,25 @@ msgstr "Рекламовані товари" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(необов'язково)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "Файл" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6096,7 +6168,7 @@ msgstr "" #: templates/product/details.html:178 msgctxt "Product details primary action" msgid "Add to cart" -msgstr "Додати в корзину" +msgstr "Купити" #: templates/product/details.html:190 msgctxt "Product details text" @@ -6300,6 +6372,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "Адреса оплати" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6307,7 +6385,7 @@ msgid "Shipping address" msgstr "Адреса доставки " #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/uk/LC_MESSAGES/djangojs.mo b/locale/uk/LC_MESSAGES/djangojs.mo index d1c0d1feffe..4ac60533676 100644 Binary files a/locale/uk/LC_MESSAGES/djangojs.mo and b/locale/uk/LC_MESSAGES/djangojs.mo differ diff --git a/locale/vi/LC_MESSAGES/django.mo b/locale/vi/LC_MESSAGES/django.mo index f1cddc268cc..efac3b79043 100644 Binary files a/locale/vi/LC_MESSAGES/django.mo and b/locale/vi/LC_MESSAGES/django.mo differ diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po index 70eaa90ce14..95370567fdc 100644 --- a/locale/vi/LC_MESSAGES/django.po +++ b/locale/vi/LC_MESSAGES/django.po @@ -5,10 +5,10 @@ # # Translators: # Tran Van , 2018 -# Trong Lam Phan , 2018 # Chung Hien Hoang , 2018 # Duc Dang , 2019 # Khoa , 2019 +# Trong Lam Phan , 2019 # Hung Nguyen Tien , 2019 # #, fuzzy @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Hung Nguyen Tien , 2019\n" "Language-Team: Vietnamese (https://www.transifex.com/mirumee/teams/34782/vi/)\n" @@ -26,32 +26,82 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "Thư điện tử" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "Mật khẩu" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "Thư điện tử" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "Email này đã được đăng ký." -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Tên" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Họ" @@ -156,12 +206,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "Mã bưu chính" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "Quốc gia" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "Tên" @@ -181,37 +231,37 @@ msgctxt "Address" msgid "Address" msgstr "Địa chỉ" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "Thành phố" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "Quận" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "Mã bưu chính" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "Tỉnh thành" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "Số điện thoại" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "Địa chỉ, hộp thư P.O, tên công ty" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "Căn hộ, suite, đơn vị, tòa nhà, tầng, ..." @@ -225,17 +275,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "Giá trị này không hợp lệ cho quốc gia đã chọn" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "Quản lý khách hàng." -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "Quản lý nhân viên." -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -254,40 +304,40 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "Bạn đã đăng xuất thành công." -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "Người dùng đã được tạo" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "Mật khẩu đã được thay đổi thành công." -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "Tài khoản cập nhập thành công" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "Đã cập nhật thành công địa chỉ." -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "Đã xóa địa chỉ thành công" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "Vui lòng kiểm tra hộp thư đến của bạn cho một email xác nhận." -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " @@ -296,95 +346,101 @@ msgstr "" "Tài khoản của bạn đã được xóa thành công. Trong trường hợp có rắc rối hay " "câu hỏi hãy liên hệ với chúng tôi." -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "Thanh toán" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "Vận chuyển" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "Số lượng" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "Xin thứ lỗi. Sản phẩm này hiện chưa có." -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "Xin thứ lỗi. Sản phẩm này đang hết hàng." -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "Oops. Chúng tôi không tìm thấy sản phẩm." -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "Chỉ còn %d còn lại trong kho." +msgstr[0] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "Quốc gia" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "Thư điện tử" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "Nhập địa chỉ mới" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "Địa chỉ" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "Nhập địa chỉ mới" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "Tương tự vận chuyển" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "Địa chỉ" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "Phương thức vận chuyển" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "Mã giảm giá không chính xác hoặc đã hết hạn" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "Thẻ quà tặng hoặc mã giảm giá" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." @@ -392,182 +448,162 @@ msgstr "" "Lấy làm tiếc. Chúng tôi không có nhiều mặt hàng trong kho. Số lượng được đặt" " ở mức tối đa có sẵn ngay bây giờ." -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr " Đơn đặt hàng của bạn không yêu cầu giao hàng." -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "Vui lòng chọn phương thức giao hàng trước." -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "Ưu đãi này không hợp lệ ở quốc gia của bạn." -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "Phiếu mua hàng này chỉ hợp lệ cho các mục đã chọn." -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "Voucher hết hạn trong thời gian chờ đợi. Đã hủy vị trí đơn đặt hàng." -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "Chưa chọn phương thức vận chuyển" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "Chưa có địa chỉ giao hàng" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "Phiếu giảm giá này đã hết hạn. Vui lòng xem lại thanh toán của bạn." -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "Vui lòng xem lại thanh toán của bạn." -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "quảng cáo" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "Khách sạn" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "Y tế" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "Nhà hàng" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "Tiêu chuẩn" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "Nước" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -584,7 +620,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "Bất kỳ quốc gia nào" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "Bạn đang đăng nhập là {}" @@ -609,7 +645,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -624,90 +660,94 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "Sản phẩm cụ thể" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "Bộ sưu tập sản phẩm cụ thể" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "Danh mục sản phẩm cụ thể" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "Vận chuyển" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "Miễn phí vận chuyển" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "Giảm %(discount)sphí vận chuyển" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(discount)s off %(product_num)dsản phẩm" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(discount)s off %(collections_num)d bộ sưu tập" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(discount)s off %(categories_num)d danh mục" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s off" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "Ưu đãi này chỉ có với các đơn hàng trên %(amount)s." -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "Quản lý bán hàng và chứng từ." -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "Giảm giá không áp dụng cho sản phẩm này" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "Không thể hủy quá trình thực hiện này" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "Quản lý điều hướng." -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -717,17 +757,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "Danh mục:" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "Bộ sưu tập:" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "Trang:" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -738,150 +778,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "Chưa hoàn thành" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "Đã hoàn thành một phần" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "Đã hoàn thành" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "Đã hủy" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "Đã hoàn thành" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "Đã hủy" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "Xác nhận thanh toán" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "Xác nhận giao hàng" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "Xác nhận hoàn thành" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "Xác nhận Order" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "Đơn đặt hàng được đặt bởi %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "Thanh toán bị trống bởi %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "Đã hoàn tiền thành công: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "Đã chụp thành công: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr " Đặt hàng được đánh dấu thủ công là đã thanh toán bằng %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "Đơn hàng đã bị hủy bởi %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "Chúng tôi đã bổ sung %(quantity)d" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "%(user_name)s thêm ghi chú: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "Fulfillment #%(fulfillment)s bị hủy bởi %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" +msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" -msgstr "Đơn đặt hàng đã được đặt" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" +msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" -msgstr "Đơn đặt hàng đã được thanh toán đầy đủ" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" +msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "%(email_type)semail đã được gửi cho khách hàng (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" +msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" -msgstr "Chi tiết đơn hàng đã được cập nhật bởi %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" +msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -893,23 +956,23 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "Thanh toán không tồn tại" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "Thanh toán không thể bị hủy" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "Quản lý đơn hàng." -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " @@ -918,12 +981,12 @@ msgstr "" "Chúng tôi không thể chỉ định đơn đặt hàng cho tài khoản của bạn vì địa chỉ " "email không khớp" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr " Đơn đặt hàng hiện được chỉ định cho tài khoản của bạn" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "Quản lý trang." @@ -933,58 +996,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "Hướng dẫn" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "Ủy quyền" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "Thanh toán" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "Hoàn tiền" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "Chụp" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "Trống" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "Chưa thanh toán" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "Thanh toán một phần" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "Thanh toán hết" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "Hoàn tiền một phần" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "Hoàn tiền hết" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "Không thể thực hiện giao dịch. Thử lại trong giây lát" @@ -994,18 +1052,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "Tình trạng thanh toán" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "Đơn hàng chưa được thanh toán" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "Dữ liệu thanh toán không chính xác" @@ -1015,13 +1073,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "Đơn đặt hàng không thể thực hiện" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "Chưa hỗ trợ đồng %(currency)s" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "Thanh toán ngay với Razorpay" @@ -1041,12 +1099,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "Đơn đặt hàng chưa thanh toán" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "Thanh toán tổng cộng" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "Đơn đặc hàng với hóa đơn không thể được đánh dấu đã trả bằng tay" @@ -1091,12 +1149,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "Hết hàng" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "tên" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "Giá" @@ -1106,33 +1164,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "Cập nhật mới nhất" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "Sắp xếp theo" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "Giá" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "Quản lý sản phẩm" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "sản phẩm số" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "Truy vấn" @@ -1178,170 +1236,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "Giá vận chuyển" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "Giá theo khối lượng" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "%(num_of_countries)d quốc gia" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "Quản lý vận chuyển" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "%(min_price)s hoặc lớn hơn" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "%(min_price)s đến %(max_price)s" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "%(min_weight)s hoặc lớn hơn" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "%(min_weight)s đến %(max_weight)s" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "Quản lý hệ thống" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "Quản lý ngôn ngữ" @@ -1797,7 +1875,7 @@ msgstr "Tìm kiếm" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "Giỏ hàng" #: templates/base.html:202 @@ -1809,44 +1887,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "Tạm tính" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "Phí vận chuyển và thuế sẽ được tính lúc thanh toán" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "Xem giỏ hàng" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "Thanh toán" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "Không có sản phẩm nào trong giỏ." - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "Trang chủ" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "Tạm tính" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "Phí vận chuyển cho:" @@ -1856,7 +1910,7 @@ msgid "Total" msgstr "Tổng" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "Phí vận chuyển và thuế sẽ được tính lúc thanh toán" @@ -1911,45 +1965,55 @@ msgid "Total" msgstr "Tổng" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "Giỏ hàng" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "Giỏ hàng" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "Sản phẩm đã được xóa khỏi giỏ hàng" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "Sản phẩm" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "Số lượng" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "Giá" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "Thanh toán" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "Không có sản phẩm nào trong giỏ." + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2081,6 +2145,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "Phí vận chuyển và thuế sẽ được tính lúc thanh toán" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "Xem giỏ hàng" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "Thanh toán" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2191,8 +2270,8 @@ msgstr "" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2276,7 +2355,7 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" +msgid "Release:" msgstr "" #: templates/dashboard/base_modal.html:33 @@ -2519,7 +2598,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2529,47 +2608,47 @@ msgstr "" msgid "Collections" msgstr "Bộ sưu tập" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "Hủy" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "Cập nhập" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "Xuất bản" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3128,7 +3207,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "Tổng" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3358,393 +3437,393 @@ msgid "Edit address" msgstr "Thay đổi địa chỉ" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "Chi tiết" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "Chụp" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "Hoàn tiền" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "Trống" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "Khách hàng" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "Chỉnh sửa" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "Nơi giao" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "Giá" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "Số lượng" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "Tổng" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "Vận chuyển" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "Thuế (đã tính)" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "Thuế" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "Hủy" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "Ngày" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "Tình trạng thanh toán" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "Số tiền" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "" @@ -5696,24 +5775,25 @@ msgstr "" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6260,6 +6340,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6267,7 +6353,7 @@ msgid "Shipping address" msgstr "" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/vi/LC_MESSAGES/djangojs.mo b/locale/vi/LC_MESSAGES/djangojs.mo index 8f36fe77627..d5b4c18a6b7 100644 Binary files a/locale/vi/LC_MESSAGES/djangojs.mo and b/locale/vi/LC_MESSAGES/djangojs.mo differ diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 5670e3273d2..e70b8b5118c 100644 Binary files a/locale/zh_Hans/LC_MESSAGES/django.mo and b/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index dacf27e1dc1..43592ed9e20 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -6,19 +6,20 @@ # Translators: # dr.web mike , 2018 # Slade Liu , 2019 -# Patryk Zawadzki , 2019 # iorj <2806198697@qq.com>, 2019 # 小平 吴 , 2019 # 刘 志锋 <752074518@qq.com>, 2019 +# Julian Hu , 2019 +# Patryk Zawadzki , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" -"Last-Translator: 刘 志锋 <752074518@qq.com>, 2019\n" +"Last-Translator: Patryk Zawadzki , 2019\n" "Language-Team: Chinese Simplified (https://www.transifex.com/mirumee/teams/34782/zh-Hans/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,32 +27,82 @@ msgstr "" "Language: zh-Hans\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "电子邮件" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "密码" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "电子邮件" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "该邮件地址已注册。" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "名" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "姓" @@ -156,12 +207,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "邮编" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "国家" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "名" @@ -181,37 +232,37 @@ msgctxt "Address" msgid "Address" msgstr "地址" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "城市" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "区/县" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "邮编" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "州或省" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "手机号码" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "街道地址,信箱地址,公司名字" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "公寓,套房,单元,栋,楼层,等" @@ -225,17 +276,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "该值不适用所选择的国家" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "客户管理。" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "员工管理。" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "顾客扮演。" @@ -254,316 +305,302 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "您已成功登出" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "用户已创建" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "成功修改密码" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "成功更新帐户。" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "成功更新地址" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "成功删除地址" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "请检查您的收件箱以获取确认电子邮件。" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "您的帐户被成功删除。如果有任何麻烦或问题,请随时与我们联系。" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "账单" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "配送" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "数量" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "对不起。此产品目前不可用。" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "对不起,该产品当前无库存" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "我们找不到该产品" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "库存仅剩%d" +msgstr[0] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "国家" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "电子邮件" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "请输入新地址" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "地址" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "请输入新地址" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "同配送" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "地址" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "配送方式" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "折扣码不正确或者已过期" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "礼品卡或者折扣码" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "抱歉。我们的存货没有那么多。数量已被设置为目前可用的最大数量。" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "您的订单不需要配送。" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "请先选择一种配送方式。" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "这个优惠在你的国家不可用。" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "此优惠只适用于选定项目。" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "代金券已过期。订单处理中止。" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "配送方式未设定" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "配送地址未设定" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "送货方式不适用于您的送货地址" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "账单地址未设定" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "这张代金券过期了。请重新检查您的购物车。" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "请重新检查您的购物车。" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "文化活动入场" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "娱乐活动入场" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "体育活动入场" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "广告" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "农用品" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "婴儿食品" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "自行车" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "书籍" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "儿童服装" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "家用燃料" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "家政" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "电子书" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "食品" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "酒店" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "药品" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "报纸" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "客运" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "药物" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "物业装修" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "餐厅" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "公租房" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "标准" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "水" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "酒" @@ -580,7 +617,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "任何国家" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "你已登录, {}" @@ -605,7 +642,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "克" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "%" @@ -620,90 +657,94 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "特定商品" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "特定产品系列" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "特定分类产品" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "配送" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "免费配送" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "%(discount)s配送折扣" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "%(product_num)d件商品享%(discount)s折扣" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "%(collections_num)d类商品享%(discount)s折扣 " -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "%(categories_num)d标签商品享%(discount)s折扣 " -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "%(discount)s折扣" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "超过%(amount)s件才可享此优惠。" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "销售、凭证管理。" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "该产品不适用折扣" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." -msgstr[0] "剩%(quantity)d件物品待完成。" +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." +msgstr[0] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "该操作不能被取消" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "导航管理。" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -713,17 +754,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "分类" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "集合" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "页" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -734,150 +775,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "未完成" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "部分完成" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "已完成" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "已取消" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "已完成" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "已取消" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" -msgstr "已付款" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" +msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" -msgstr "已发货" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" +msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" -msgstr "已发货" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" +msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" -msgstr "订单已完成" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" +msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" -msgstr "按%(user_name)s排序的草稿订单" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" +msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" -msgstr "支付已被用户%(user_name)s取消" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" +msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" -msgstr "已退款:%(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" +msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" -msgstr "已捕获:%(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" +msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" -msgstr "此订单由%(user_name)s手工标记为已付款。" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" +msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" -msgstr "订单已被用户%(user_name)s取消" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" +msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "我们补了%(quantity)d件货" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" -msgstr "用户%(user_name)s增加了标记:%(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" +msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -889,35 +953,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "支付信息不存在" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -927,58 +991,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "退款" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "抓取" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -988,18 +1047,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "支付状态" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1009,13 +1068,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1035,12 +1094,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1085,12 +1144,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "缺货" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "名称" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "价格" @@ -1100,33 +1159,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "最近更新" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "排序" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "价格" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "查询" @@ -1172,170 +1231,190 @@ msgid "Spanish" msgstr "西班牙语" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 +msgid "Estonian" +msgstr "" + +#: saleor/settings.py:73 msgid "Persian" msgstr "波斯语" -#: saleor/settings.py:73 +#: saleor/settings.py:74 msgid "French" msgstr "法语" -#: saleor/settings.py:74 +#: saleor/settings.py:75 msgid "Hindi" msgstr "" -#: saleor/settings.py:75 +#: saleor/settings.py:76 msgid "Hungarian" msgstr "匈牙利语" -#: saleor/settings.py:76 +#: saleor/settings.py:77 +msgid "Armenian" +msgstr "" + +#: saleor/settings.py:78 msgid "Indonesian" msgstr "" -#: saleor/settings.py:77 +#: saleor/settings.py:79 msgid "Italian" msgstr "意大利语" -#: saleor/settings.py:78 +#: saleor/settings.py:80 msgid "Japanese" msgstr "日语" -#: saleor/settings.py:79 +#: saleor/settings.py:81 msgid "Korean" msgstr "" -#: saleor/settings.py:80 +#: saleor/settings.py:82 +msgid "Lithuanian" +msgstr "" + +#: saleor/settings.py:83 msgid "Mongolian" msgstr "" -#: saleor/settings.py:81 +#: saleor/settings.py:84 msgid "Norwegian" msgstr "" -#: saleor/settings.py:82 +#: saleor/settings.py:85 msgid "Dutch" msgstr "" -#: saleor/settings.py:83 +#: saleor/settings.py:86 msgid "Polish" msgstr "" -#: saleor/settings.py:84 +#: saleor/settings.py:87 +msgid "Portuguese" +msgstr "" + +#: saleor/settings.py:88 msgid "Brazilian Portuguese" msgstr "" -#: saleor/settings.py:85 +#: saleor/settings.py:89 msgid "Romanian" msgstr "" -#: saleor/settings.py:86 +#: saleor/settings.py:90 msgid "Russian" msgstr "" -#: saleor/settings.py:87 +#: saleor/settings.py:91 msgid "Slovak" msgstr "" -#: saleor/settings.py:88 +#: saleor/settings.py:92 +msgid "Albanian" +msgstr "" + +#: saleor/settings.py:93 msgid "Serbian" msgstr "" -#: saleor/settings.py:89 +#: saleor/settings.py:94 msgid "Swahili" msgstr "" -#: saleor/settings.py:90 +#: saleor/settings.py:95 msgid "Swedish" msgstr "" -#: saleor/settings.py:91 +#: saleor/settings.py:96 msgid "Thai" msgstr "" -#: saleor/settings.py:92 +#: saleor/settings.py:97 msgid "Turkish" msgstr "" -#: saleor/settings.py:93 +#: saleor/settings.py:98 msgid "Ukrainian" msgstr "" -#: saleor/settings.py:94 +#: saleor/settings.py:99 msgid "Vietnamese" msgstr "" -#: saleor/settings.py:95 +#: saleor/settings.py:100 msgid "Simplified Chinese" msgstr "简体中文" -#: saleor/settings.py:96 +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "繁体中文" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "欧盟" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "虚拟网关" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "配送管理" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1783,7 +1862,7 @@ msgstr "搜索" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "您的购物车" #: templates/base.html:202 @@ -1795,44 +1874,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "样式指南" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "跳转到购物车" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "结账" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "您的购物车是空的" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "首页" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1842,7 +1897,7 @@ msgid "Total" msgstr "总数" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1897,45 +1952,55 @@ msgid "Total" msgstr "总数" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "您的购物车" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "购物车" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "产品从购物车删除" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "产品" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "数量" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "价格" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "结账" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "您的购物车是空的" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2067,6 +2132,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "跳转到购物车" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "结账" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2177,8 +2257,8 @@ msgstr "促销" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2262,8 +2342,8 @@ msgstr "页" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "释放:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2505,7 +2585,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2515,47 +2595,47 @@ msgstr "" msgid "Collections" msgstr "系列" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "在网站中查看" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "取消" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "更新" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "创建" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "已发布" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "草稿" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3118,7 +3198,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "总数" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3348,393 +3428,393 @@ msgid "Edit address" msgstr "编辑地址" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "配送地址" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "账单地址" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "取消订单" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "打印" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "详情" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "支付" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "历史" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "支付" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "未付金额" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "预授权金额" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "抓取" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "退款" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "客户" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "编辑" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "放置在" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "价格" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "数量" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "总数" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "修改数量" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "运送" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "税" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "添加产品" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "发票" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "在网站中查看" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "取消" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "订单备注" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "订单无备注" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "添加备注" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "交易 ID" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "日期" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "支付状态" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "金额" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "订单未支付" @@ -5686,24 +5766,25 @@ msgstr "主打产品" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "(可选)" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "文件" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -5774,7 +5855,7 @@ msgstr "" #: templates/order/_ordered_items_table.html:217 msgctxt "Fulfillment tracking number details" msgid "Tracking number" -msgstr "" +msgstr "追踪编号" #: templates/order/checkout_success.html:8 #: templates/order/checkout_success_anonymous.html:8 @@ -6250,6 +6331,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "账单地址" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6257,7 +6344,7 @@ msgid "Shipping address" msgstr "配送地址" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/zh_Hans/LC_MESSAGES/djangojs.mo b/locale/zh_Hans/LC_MESSAGES/djangojs.mo index b769d74e56a..14fd6bc1ba8 100644 Binary files a/locale/zh_Hans/LC_MESSAGES/djangojs.mo and b/locale/zh_Hans/LC_MESSAGES/djangojs.mo differ diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 6d0b31fef67..d43907f4dd5 100644 Binary files a/locale/zh_Hant/LC_MESSAGES/django.mo and b/locale/zh_Hant/LC_MESSAGES/django.mo differ diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 0ffc7dd1266..cef60236409 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-08 06:18-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-08 11:00+0000\n" "Last-Translator: Patryk Zawadzki , 2019\n" "Language-Team: Chinese Traditional (https://www.transifex.com/mirumee/teams/34782/zh-Hant/)\n" @@ -21,32 +21,82 @@ msgstr "" "Language: zh-Hant\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: saleor/account/forms.py:69 +#: saleor/account/__init__.py:28 +msgctxt "Event from a customer that got their account created" +msgid "The account account was created" +msgstr "" + +#: saleor/account/__init__.py:35 +msgctxt "Event from a customer that got the password reset link sent by email" +msgid "Password reset link was sent to the customer" +msgstr "" + +#: saleor/account/__init__.py:42 +msgctxt "Event from a customer that reset their password" +msgid "The account password was reset" +msgstr "" + +#: saleor/account/__init__.py:48 +msgctxt "Event from a customer that placed an order" +msgid "An order was placed" +msgstr "" + +#: saleor/account/__init__.py:55 +msgctxt "Event from a customer that added a note to one of their orders" +msgid "A note was added" +msgstr "" + +#: saleor/account/__init__.py:62 +msgctxt "Event from a customer that downloaded an ordered digital good" +msgid "A digital good was downloaded" +msgstr "" + +#: saleor/account/__init__.py:69 +msgctxt "Event from a staff user that deleted a customer" +msgid "A customer was deleted" +msgstr "" + +#: saleor/account/__init__.py:76 +msgctxt "Event from a staff user assigned a new name to a customer" +msgid "A customer's name was edited" +msgstr "" + +#: saleor/account/__init__.py:83 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A customer's email address was edited" +msgstr "" + +#: saleor/account/__init__.py:90 +msgctxt "Event from a staff user assigned a new email address to a customer" +msgid "A note was added to the customer" +msgstr "" + +#: saleor/account/forms.py:71 msgctxt "Form field" msgid "Email" msgstr "電子信箱" -#: saleor/account/forms.py:82 +#: saleor/account/forms.py:83 msgctxt "Password" msgid "Password" msgstr "密碼" -#: saleor/account/forms.py:84 +#: saleor/account/forms.py:86 msgctxt "Email" msgid "Email" msgstr "電子信箱" -#: saleor/account/forms.py:88 +#: saleor/account/forms.py:89 msgctxt "Registration error" msgid "This email has already been registered." msgstr "" -#: saleor/account/forms.py:135 +#: saleor/account/forms.py:147 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "" -#: saleor/account/forms.py:137 +#: saleor/account/forms.py:150 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "" @@ -151,12 +201,12 @@ msgctxt "Address field" msgid "ZIP code" msgstr "" -#: saleor/account/i18n.py:63 saleor/account/i18n.py:109 +#: saleor/account/i18n.py:64 saleor/account/i18n.py:105 msgctxt "Country" msgid "Country" msgstr "國家" -#: saleor/account/i18n.py:94 +#: saleor/account/i18n.py:95 msgctxt "Personal name" msgid "Given name" msgstr "" @@ -176,37 +226,37 @@ msgctxt "Address" msgid "Address" msgstr "地址" -#: saleor/account/i18n.py:103 +#: saleor/account/i18n.py:102 msgctxt "City" msgid "City" msgstr "城市" -#: saleor/account/i18n.py:105 +#: saleor/account/i18n.py:103 msgctxt "City area" msgid "District" msgstr "區" -#: saleor/account/i18n.py:107 +#: saleor/account/i18n.py:104 msgctxt "Postal code" msgid "Postal code" msgstr "郵遞區號" -#: saleor/account/i18n.py:111 +#: saleor/account/i18n.py:106 msgctxt "Country area" msgid "State or province" msgstr "" -#: saleor/account/i18n.py:113 +#: saleor/account/i18n.py:107 msgctxt "Phone number" msgid "Phone number" msgstr "電話號碼" -#: saleor/account/i18n.py:116 +#: saleor/account/i18n.py:111 msgctxt "Address" msgid "Street address, P.O. box, company name" msgstr "" -#: saleor/account/i18n.py:118 +#: saleor/account/i18n.py:114 msgctxt "Address" msgid "Apartment, suite, unit, building, floor, etc" msgstr "" @@ -220,17 +270,17 @@ msgctxt "Address form" msgid "This value is invalid for selected country" msgstr "" -#: saleor/account/models.py:154 +#: saleor/account/models.py:162 msgctxt "Permission description" msgid "Manage customers." msgstr "" -#: saleor/account/models.py:157 +#: saleor/account/models.py:164 msgctxt "Permission description" msgid "Manage staff." msgstr "" -#: saleor/account/models.py:160 +#: saleor/account/models.py:167 msgctxt "Permission description" msgid "Impersonate customers." msgstr "" @@ -249,316 +299,302 @@ msgid "" "%(street_address_2)s" msgstr "" -#: saleor/account/views.py:31 +#: saleor/account/views.py:36 msgid "You have been successfully logged out." msgstr "您已成功登出" -#: saleor/account/views.py:45 +#: saleor/account/views.py:49 msgid "User has been created" msgstr "用戶已建立" -#: saleor/account/views.py:97 +#: saleor/account/views.py:111 msgctxt "Storefront message" msgid "Password successfully changed." msgstr "密碼修改成功" -#: saleor/account/views.py:106 +#: saleor/account/views.py:121 msgctxt "Storefront message" msgid "Account successfully updated." msgstr "" -#: saleor/account/views.py:119 +#: saleor/account/views.py:134 msgctxt "Storefront message" msgid "Address successfully updated." msgstr "成功更新地址" -#: saleor/account/views.py:134 +#: saleor/account/views.py:148 msgctxt "Storefront message" msgid "Address successfully removed" msgstr "成功刪除地址" -#: saleor/account/views.py:148 +#: saleor/account/views.py:165 msgctxt "Storefront message, when user requested his account removed" msgid "Please check your inbox for a confirmation e-mail." msgstr "" -#: saleor/account/views.py:163 +#: saleor/account/views.py:182 msgctxt "Account deleted" msgid "" "Your account was deleted successfully. In case of any trouble or questions " "feel free to contact us." msgstr "" -#: saleor/checkout/__init__.py:15 +#: saleor/checkout/__init__.py:13 msgctxt "Type of address used to fulfill order" msgid "Billing" msgstr "" -#: saleor/checkout/__init__.py:19 +#: saleor/checkout/__init__.py:14 msgctxt "Type of address used to fulfill order" msgid "Shipping" msgstr "" -#: saleor/checkout/forms.py:39 -msgctxt "Add to cart form field label" +#: saleor/checkout/forms.py:43 +msgctxt "Add to checkout form field label" msgid "Quantity" msgstr "庫存" -#: saleor/checkout/forms.py:43 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:48 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently not available." msgstr "" -#: saleor/checkout/forms.py:46 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:52 +msgctxt "Add to checkout form error" msgid "Sorry. This product is currently out of stock." msgstr "對不起,該產品目前無庫存" -#: saleor/checkout/forms.py:48 -msgctxt "Add to cart form error" +#: saleor/checkout/forms.py:56 +#, python-format +msgctxt "Add to checkout form error" +msgid "Sorry. You can't add more than %d times this item." +msgstr "" + +#: saleor/checkout/forms.py:59 +msgctxt "Add to checkout form error" msgid "Oops. We could not find that product." msgstr "我們找不到該產品" -#: saleor/checkout/forms.py:51 +#: saleor/checkout/forms.py:63 #, python-format -msgctxt "Add to cart form error" +msgctxt "Add to checkout form error" msgid "Only %d remaining in stock." msgid_plural "Only %d remaining in stock." -msgstr[0] "庫存僅剩%d" +msgstr[0] "" -#: saleor/checkout/forms.py:162 +#: saleor/checkout/forms.py:187 msgctxt "Country form field label" msgid "Country" msgstr "國家" -#: saleor/checkout/forms.py:188 saleor/checkout/forms.py:200 +#: saleor/checkout/forms.py:215 saleor/checkout/forms.py:228 msgctxt "Address form field label" msgid "Email" msgstr "電子信箱" -#: saleor/checkout/forms.py:213 +#: saleor/checkout/forms.py:243 msgctxt "Shipping addresses form choice" msgid "Enter a new address" msgstr "請輸入新地址" -#: saleor/checkout/forms.py:216 +#: saleor/checkout/forms.py:248 msgctxt "Shipping addresses form field label" msgid "Address" msgstr "地址" -#: saleor/checkout/forms.py:233 +#: saleor/checkout/forms.py:269 msgctxt "Billing addresses form choice" msgid "Enter a new address" msgstr "請輸入新地址" -#: saleor/checkout/forms.py:235 +#: saleor/checkout/forms.py:273 msgctxt "Billing addresses form choice" msgid "Same as shipping" msgstr "" -#: saleor/checkout/forms.py:238 +#: saleor/checkout/forms.py:278 msgctxt "Billing addresses form field label" msgid "Address" msgstr "地址" -#: saleor/checkout/forms.py:268 +#: saleor/checkout/forms.py:310 msgctxt "Shipping method form field label" msgid "Shipping method" msgstr "配送方式" -#: saleor/checkout/forms.py:309 +#: saleor/checkout/forms.py:357 msgctxt "Voucher form error" msgid "Discount code incorrect or expired" msgstr "折扣碼不正確或已過期" -#: saleor/checkout/forms.py:320 +#: saleor/checkout/forms.py:370 msgctxt "Checkout discount form label for voucher field" msgid "Gift card or discount code" msgstr "禮品卡或折扣碼" -#: saleor/checkout/utils.py:134 -msgctxt "Cart warning message" +#: saleor/checkout/utils.py:139 +msgctxt "Checkout warning message" msgid "" "Sorry. We don't have that many items in stock. Quantity was set to maximum " "available for now." msgstr "" -#: saleor/checkout/utils.py:630 +#: saleor/checkout/utils.py:676 msgctxt "Voucher not applicable" msgid "Your order does not require shipping." msgstr "您的訂單不需要配送" -#: saleor/checkout/utils.py:636 +#: saleor/checkout/utils.py:682 msgctxt "Voucher not applicable" msgid "Please select a shipping method first." msgstr "請選擇一種配送方式" -#: saleor/checkout/utils.py:644 +#: saleor/checkout/utils.py:690 msgctxt "Voucher not applicable" msgid "This offer is not valid in your country." msgstr "" -#: saleor/checkout/utils.py:666 +#: saleor/checkout/utils.py:716 msgctxt "Voucher not applicable" msgid "This offer is only valid for selected items." msgstr "" -#: saleor/checkout/utils.py:793 +#: saleor/checkout/utils.py:861 msgctxt "Voucher not applicable" msgid "Voucher expired in meantime. Order placement aborted." msgstr "" -#: saleor/checkout/utils.py:898 -msgctxt "order placement_error" -msgid "Shipping method is not set" -msgstr "" - -#: saleor/checkout/utils.py:901 -msgctxt "order placement error" -msgid "Shipping address is not set" -msgstr "" - -#: saleor/checkout/utils.py:905 -msgctxt "order placement error" -msgid "Shipping method is not valid for your shipping address" -msgstr "" - -#: saleor/checkout/utils.py:908 -msgctxt "order placement_error" -msgid "Billing address is not set" -msgstr "" - -#: saleor/checkout/views/discount.py:62 +#: saleor/checkout/views/discount.py:69 msgctxt "Checkout warning" msgid "This voucher has expired. Please review your checkout." msgstr "" -#: saleor/checkout/views/summary.py:37 +#: saleor/checkout/views/summary.py:40 msgctxt "Checkout warning" msgid "Please review your checkout." msgstr "" -#: saleor/core/__init__.py:54 +#: saleor/core/__init__.py:60 msgctxt "VAT rate type" msgid "accommodation" msgstr "" -#: saleor/core/__init__.py:56 +#: saleor/core/__init__.py:63 msgctxt "VAT rate type" msgid "admission to cultural events" msgstr "" -#: saleor/core/__init__.py:58 +#: saleor/core/__init__.py:67 msgctxt "VAT rate type" msgid "admission to entertainment events" msgstr "" -#: saleor/core/__init__.py:60 +#: saleor/core/__init__.py:71 msgctxt "VAT rate type" msgid "admission to sporting events" msgstr "" -#: saleor/core/__init__.py:61 +#: saleor/core/__init__.py:73 msgctxt "VAT rate type" msgid "advertising" msgstr "" -#: saleor/core/__init__.py:63 +#: saleor/core/__init__.py:76 msgctxt "VAT rate type" msgid "agricultural supplies" msgstr "" -#: saleor/core/__init__.py:64 +#: saleor/core/__init__.py:78 msgctxt "VAT rate type" msgid "baby foodstuffs" msgstr "" -#: saleor/core/__init__.py:65 +#: saleor/core/__init__.py:79 msgctxt "VAT rate type" msgid "bikes" msgstr "" -#: saleor/core/__init__.py:66 +#: saleor/core/__init__.py:80 msgctxt "VAT rate type" msgid "books" msgstr "" -#: saleor/core/__init__.py:68 +#: saleor/core/__init__.py:81 msgctxt "VAT rate type" msgid "childrens clothing" msgstr "" -#: saleor/core/__init__.py:69 +#: saleor/core/__init__.py:82 msgctxt "VAT rate type" msgid "domestic fuel" msgstr "" -#: saleor/core/__init__.py:71 +#: saleor/core/__init__.py:83 msgctxt "VAT rate type" msgid "domestic services" msgstr "" -#: saleor/core/__init__.py:72 +#: saleor/core/__init__.py:84 msgctxt "VAT rate type" msgid "e-books" msgstr "" -#: saleor/core/__init__.py:73 +#: saleor/core/__init__.py:85 msgctxt "VAT rate type" msgid "foodstuffs" msgstr "" -#: saleor/core/__init__.py:74 +#: saleor/core/__init__.py:86 msgctxt "VAT rate type" msgid "hotels" msgstr "" -#: saleor/core/__init__.py:75 +#: saleor/core/__init__.py:87 msgctxt "VAT rate type" msgid "medical" msgstr "" -#: saleor/core/__init__.py:76 +#: saleor/core/__init__.py:88 msgctxt "VAT rate type" msgid "newspapers" msgstr "" -#: saleor/core/__init__.py:78 +#: saleor/core/__init__.py:89 msgctxt "VAT rate type" msgid "passenger transport" msgstr "" -#: saleor/core/__init__.py:80 +#: saleor/core/__init__.py:90 msgctxt "VAT rate type" msgid "pharmaceuticals" msgstr "" -#: saleor/core/__init__.py:82 +#: saleor/core/__init__.py:91 msgctxt "VAT rate type" msgid "property renovations" msgstr "" -#: saleor/core/__init__.py:83 +#: saleor/core/__init__.py:92 msgctxt "VAT rate type" msgid "restaurants" msgstr "" -#: saleor/core/__init__.py:84 +#: saleor/core/__init__.py:93 msgctxt "VAT rate type" msgid "social housing" msgstr "" -#: saleor/core/__init__.py:85 +#: saleor/core/__init__.py:94 msgctxt "VAT rate type" msgid "standard" msgstr "" -#: saleor/core/__init__.py:86 +#: saleor/core/__init__.py:95 msgctxt "VAT rate type" msgid "water" msgstr "" -#: saleor/core/__init__.py:87 +#: saleor/core/__init__.py:96 msgctxt "VAT rate type" msgid "wine" msgstr "" @@ -575,7 +611,7 @@ msgctxt "Country choice" msgid "Any Country" msgstr "" -#: saleor/core/views.py:40 +#: saleor/core/views.py:49 msgctxt "Impersonation message" msgid "You are now logged as {}" msgstr "" @@ -600,7 +636,7 @@ msgctxt "Gram weight unit symbol" msgid "g" msgstr "" -#: saleor/discount/__init__.py:12 +#: saleor/discount/__init__.py:11 msgctxt "Discount type" msgid "%" msgstr "" @@ -615,90 +651,94 @@ msgctxt "Voucher: discount for" msgid "Specific products" msgstr "" -#: saleor/discount/__init__.py:26 +#: saleor/discount/__init__.py:27 msgctxt "Voucher: discount for" msgid "Specific collections of products" msgstr "" -#: saleor/discount/__init__.py:28 +#: saleor/discount/__init__.py:31 msgctxt "Voucher: discount for" msgid "Specific categories of products" msgstr "" -#: saleor/discount/__init__.py:29 +#: saleor/discount/__init__.py:33 msgctxt "Voucher: discount for" msgid "Shipping" msgstr "" -#: saleor/discount/models.py:77 +#: saleor/discount/models.py:92 msgctxt "Voucher type" msgid "Free shipping" msgstr "免運費" -#: saleor/discount/models.py:80 +#: saleor/discount/models.py:93 #, python-format msgctxt "Voucher type" msgid "%(discount)s off shipping" msgstr "" -#: saleor/discount/models.py:86 +#: saleor/discount/models.py:100 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(product_num)d products" msgstr "" -#: saleor/discount/models.py:94 +#: saleor/discount/models.py:106 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(collections_num)d collections" msgstr "" -#: saleor/discount/models.py:102 +#: saleor/discount/models.py:112 #, python-format msgctxt "Voucher type" msgid "%(discount)s off %(categories_num)d categories" msgstr "" -#: saleor/discount/models.py:106 +#: saleor/discount/models.py:114 #, python-format msgctxt "Voucher type" msgid "%(discount)s off" msgstr "" -#: saleor/discount/models.py:136 +#: saleor/discount/models.py:144 #, python-format msgctxt "Voucher not applicable" msgid "This offer is only valid for orders over %(amount)s." msgstr "" -#: saleor/discount/models.py:181 +#: saleor/discount/models.py:199 msgctxt "Permission description" msgid "Manage sales and vouchers." msgstr "" -#: saleor/discount/utils.py:49 +#: saleor/discount/utils.py:48 msgctxt "Voucher not applicable" msgid "Discount not applicable for this product" msgstr "該產品不適用折扣" -#: saleor/graphql/order/mutations/fulfillments.py:78 +#: saleor/graphql/core/filters.py:8 +msgid "Enter a list of values." +msgstr "" + +#: saleor/graphql/order/mutations/fulfillments.py:63 #, python-format msgctxt "Fulfill order line mutation error" -msgid "Only %(quantity)d item remaining to fulfill." -msgid_plural "Only %(quantity)d items remaining to fulfill." +msgid "Only %(quantity)d item remaining to fulfill: %(order_line)s." +msgid_plural "Only %(quantity)d items remaining to fulfill: %(order_line)s." msgstr[0] "" -#: saleor/graphql/order/mutations/fulfillments.py:218 +#: saleor/graphql/order/mutations/fulfillments.py:184 msgctxt "Cancel fulfillment mutation error" msgid "This fulfillment can't be canceled" msgstr "" -#: saleor/menu/models.py:21 +#: saleor/menu/models.py:22 msgctxt "Permission description" msgid "Manage navigation." msgstr "" -#: saleor/menu/models.py:69 +#: saleor/menu/models.py:70 msgctxt "Link object type description" msgid "URL: " msgstr "" @@ -708,17 +748,17 @@ msgctxt "Link object type description" msgid "Category: " msgstr "" -#: saleor/menu/models.py:77 +#: saleor/menu/models.py:76 msgctxt "Link object type description" msgid "Collection: " msgstr "" -#: saleor/menu/models.py:80 +#: saleor/menu/models.py:78 msgctxt "Link object type description" msgid "Page: " msgstr "" -#: saleor/order/__init__.py:20 +#: saleor/order/__init__.py:17 msgctxt "" "Status for a fully editable, not confirmed order created by staff users" msgid "Draft" @@ -729,150 +769,173 @@ msgctxt "Status for an order with no items marked as fulfilled" msgid "Unfulfilled" msgstr "" -#: saleor/order/__init__.py:26 +#: saleor/order/__init__.py:30 msgctxt "Status for an order with some items marked as fulfilled" msgid "Partially fulfilled" msgstr "" -#: saleor/order/__init__.py:29 +#: saleor/order/__init__.py:36 msgctxt "Status for an order with all items marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:32 +#: saleor/order/__init__.py:41 msgctxt "Status for a permanently canceled order" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:42 +#: saleor/order/__init__.py:55 msgctxt "Status for a group of products in an order marked as fulfilled" msgid "Fulfilled" msgstr "" -#: saleor/order/__init__.py:46 +#: saleor/order/__init__.py:63 msgctxt "" "Status for a fulfilled group of products in an order marked as canceled" msgid "Canceled" msgstr "" -#: saleor/order/__init__.py:83 -msgctxt "Email type" -msgid "Payment confirmation" +#: saleor/order/__init__.py:108 +msgctxt "Event from a staff user that created a draft order" +msgid "The draft order was created" msgstr "" -#: saleor/order/__init__.py:85 -msgctxt "Email type" -msgid "Shipping confirmation" +#: saleor/order/__init__.py:115 +msgctxt "Event from a staff user that added products to a draft order" +msgid "Some products were added to the draft order" msgstr "" -#: saleor/order/__init__.py:87 -msgctxt "Email type" -msgid "Fulfillment confirmation" +#: saleor/order/__init__.py:122 +msgctxt "Event from a staff user that removed products from a draft order" +msgid "Some products were removed from the draft order" msgstr "" -#: saleor/order/__init__.py:89 -msgctxt "Email type" -msgid "Order confirmation" +#: saleor/order/__init__.py:129 +msgctxt "Event from a user or anonymous user that placed their order" +msgid "The order was placed" msgstr "" -#: saleor/order/__init__.py:115 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order created from draft order by %(user_name)s" +#: saleor/order/__init__.py:136 +msgctxt "Event from a staff user that placed a draft order" +msgid "The draft order was placed" msgstr "" -#: saleor/order/__init__.py:120 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Payment was voided by %(user_name)s" +#: saleor/order/__init__.py:144 +msgctxt "" +"Event from a staff user that placed a draft order by passing oversold items" +msgid "The draft order was placed with oversold items" msgstr "" -#: saleor/order/__init__.py:126 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully refunded: %(amount)s" +#: saleor/order/__init__.py:151 +msgctxt "Event from a staff user that canceled an order" +msgid "The order was canceled" msgstr "" -#: saleor/order/__init__.py:132 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Successfully captured: %(amount)s" +#: saleor/order/__init__.py:159 +msgctxt "Event from a staff user that manually marked an order as fully paid" +msgid "The order was manually marked as fully paid" msgstr "" -#: saleor/order/__init__.py:137 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order manually marked as paid by %(user_name)s" +#: saleor/order/__init__.py:166 +msgctxt "Event from a payment that made the order to be fully paid" +msgid "The order was fully paid" msgstr "" -#: saleor/order/__init__.py:142 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order was canceled by %(user_name)s" +#: saleor/order/__init__.py:173 +msgctxt "Event from a staff user that updated an address of a placed order" +msgid "The address from the placed order was updated" msgstr "" -#: saleor/order/__init__.py:147 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "We restocked %(quantity)d item" -msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" +#: saleor/order/__init__.py:180 +msgctxt "Event generated from a user action that led to a email being sent" +msgid "The email was sent" +msgstr "" -#: saleor/order/__init__.py:153 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(user_name)s added note: %(note)s" +#: saleor/order/__init__.py:188 +msgctxt "" +"Event from a user payment that successfully captured a given amount of money" +msgid "The payment was captured" msgstr "" -#: saleor/order/__init__.py:159 -#, python-format -msgctxt "Dashboard message" -msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +#: saleor/order/__init__.py:195 +msgctxt "Event from a staff user that successfully refunded a payment" +msgid "The payment was refunded" msgstr "" -#: saleor/order/__init__.py:165 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Fulfilled %(quantity_fulfilled)d item" -msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" +#: saleor/order/__init__.py:203 +msgctxt "" +"Event from a staff user that successfully voided an authorized payment" +msgid "The payment was voided" +msgstr "" -#: saleor/order/__init__.py:172 -msgctxt "Dashboard message related to an order" -msgid "Order was placed" +#: saleor/order/__init__.py:210 +msgctxt "Event from a user that generated an unsuccessful payment" +msgid "The payment was failed" msgstr "" -#: saleor/order/__init__.py:176 -msgctxt "Dashboard message related to an order" -msgid "Order was fully paid" +#: saleor/order/__init__.py:217 +msgctxt "Event from a staff user that canceled a fulfillment" +msgid "A fulfillment was canceled" msgstr "" -#: saleor/order/__init__.py:180 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(email_type)s email was sent to the customer (%(email)s)" +#: saleor/order/__init__.py:225 +msgctxt "" +"Event from a staff user that restocked the items that were used for a " +"fulfillment" +msgid "The items of the fulfillment were restocked" msgstr "" -#: saleor/order/__init__.py:187 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "Order details were updated by %(user_name)s" +#: saleor/order/__init__.py:232 +msgctxt "Event from a staff user that fulfilled some items" +msgid "Some items were fulfilled" msgstr "" -#: saleor/order/__init__.py:192 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "" -"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " -"%(user_name)s" +#: saleor/order/__init__.py:240 +msgctxt "" +"Event from a staff user that updated the tracking code of an existing " +"fulfillment" +msgid "The fulfillment's tracking code was updated" msgstr "" -#: saleor/order/__init__.py:200 -#, python-format -msgctxt "Dashboard message related to an order" -msgid "%(quantity)d line item oversold on this order." -msgid_plural "%(quantity)d line items oversold on this order." -msgstr[0] "" +#: saleor/order/__init__.py:247 +msgctxt "Event from an user that added a note to an order" +msgid "A note was added to the order" +msgstr "" + +#: saleor/order/__init__.py:254 +msgctxt "An other type of order event containing a message" +msgid "An unknown order event containing a message" +msgstr "" + +#: saleor/order/__init__.py:275 +msgctxt "A payment confirmation email was sent" +msgid "The payment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:282 +msgctxt "A shipping confirmation email was sent" +msgid "The shipping confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:289 +msgctxt "A tracking code update confirmation email was sent" +msgid "The fulfillment tracking code email was sent" +msgstr "" + +#: saleor/order/__init__.py:296 +msgctxt "A order confirmation email was sent" +msgid "The order placement confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:303 +msgctxt "A fulfillment confirmation email was sent" +msgid "The fulfillment confirmation email was sent" +msgstr "" + +#: saleor/order/__init__.py:310 +msgctxt "An email containing a or some digital link was sent" +msgid "The email containing the digital links was sent" +msgstr "" #: saleor/order/forms.py:16 msgctxt "Payments form label" @@ -884,35 +947,35 @@ msgctxt "Payment delete form error" msgid "Payment does not exist" msgstr "付款資訊不存在" -#: saleor/order/forms.py:41 +#: saleor/order/forms.py:42 msgctxt "Payment delete form error" msgid "Payment cannot be cancelled." msgstr "" -#: saleor/order/models.py:135 +#: saleor/order/models.py:149 msgctxt "Permission description" msgid "Manage orders." msgstr "" -#: saleor/order/models.py:368 +#: saleor/order/models.py:397 #, python-format msgctxt "Fulfillment str" msgid "Fulfillment #%s" msgstr "" -#: saleor/order/views.py:196 +#: saleor/order/views.py:204 msgctxt "Connect order with user warning message" msgid "" "We couldn't assign the order to your account as the email addresses don't " "match" msgstr "" -#: saleor/order/views.py:203 +#: saleor/order/views.py:211 msgctxt "storefront message" msgid "The order is now assigned to your account" msgstr "" -#: saleor/page/models.py:33 +#: saleor/page/models.py:31 msgctxt "Permission description" msgid "Manage pages." msgstr "" @@ -922,58 +985,53 @@ msgctxt "Custom payment choice type" msgid "Manual" msgstr "" -#: saleor/payment/__init__.py:72 +#: saleor/payment/__init__.py:70 msgctxt "transaction kind" msgid "Authorization" msgstr "" -#: saleor/payment/__init__.py:73 -msgctxt "transaction kind" -msgid "Charge" -msgstr "" - -#: saleor/payment/__init__.py:74 +#: saleor/payment/__init__.py:71 msgctxt "transaction kind" msgid "Refund" msgstr "退款" -#: saleor/payment/__init__.py:75 +#: saleor/payment/__init__.py:72 msgctxt "transaction kind" msgid "Capture" msgstr "選取" -#: saleor/payment/__init__.py:76 +#: saleor/payment/__init__.py:73 msgctxt "transaction kind" msgid "Void" msgstr "" -#: saleor/payment/__init__.py:99 +#: saleor/payment/__init__.py:97 msgctxt "payment status" msgid "Not charged" msgstr "" -#: saleor/payment/__init__.py:101 +#: saleor/payment/__init__.py:98 msgctxt "payment status" msgid "Partially charged" msgstr "" -#: saleor/payment/__init__.py:102 +#: saleor/payment/__init__.py:99 msgctxt "payment status" msgid "Fully charged" msgstr "" -#: saleor/payment/__init__.py:104 +#: saleor/payment/__init__.py:100 msgctxt "payment status" msgid "Partially refunded" msgstr "" -#: saleor/payment/__init__.py:105 +#: saleor/payment/__init__.py:101 msgctxt "payment status" msgid "Fully refunded" msgstr "" -#: saleor/payment/gateways/braintree/__init__.py:68 -#: saleor/payment/gateways/braintree/forms.py:35 +#: saleor/payment/gateways/braintree/__init__.py:61 +#: saleor/payment/gateways/braintree/forms.py:33 msgctxt "payment error" msgid "Unable to process transaction. Please try again in a moment" msgstr "" @@ -983,18 +1041,18 @@ msgctxt "Payment status form field" msgid "Payment status" msgstr "付款狀態" -#: saleor/payment/gateways/dummy/forms.py:23 +#: saleor/payment/gateways/dummy/forms.py:27 msgid "" "Setting charge status to {} directly is not supported. Please use the " "dashboard to refund partially." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:5 +#: saleor/payment/gateways/razorpay/errors.py:4 msgctxt "Razorpay payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:7 +#: saleor/payment/gateways/razorpay/errors.py:6 msgctxt "Razorpay payment error" msgid "The payment data was invalid." msgstr "" @@ -1004,13 +1062,13 @@ msgctxt "Razorpay payment error" msgid "The order couldn't be proceeded." msgstr "" -#: saleor/payment/gateways/razorpay/errors.py:11 +#: saleor/payment/gateways/razorpay/errors.py:12 #, python-format msgctxt "Razorpay payment error" msgid "The %(currency)s currency is not supported." msgstr "" -#: saleor/payment/gateways/razorpay/forms.py:14 +#: saleor/payment/gateways/razorpay/forms.py:13 msgctxt "Razorpay payment gateway primary button" msgid "Pay now with Razorpay" msgstr "" @@ -1030,12 +1088,12 @@ msgctxt "Stripe payment error" msgid "Order was not charged." msgstr "" -#: saleor/payment/gateways/stripe/forms.py:11 +#: saleor/payment/gateways/stripe/forms.py:14 msgctxt "Stripe payment gateway description" msgid "Total payment" msgstr "" -#: saleor/payment/utils.py:239 +#: saleor/payment/utils.py:259 msgctxt "Mark order as paid validation error" msgid "Orders with payments can not be manually marked as paid." msgstr "" @@ -1080,12 +1138,12 @@ msgctxt "Variant status" msgid "out of stock" msgstr "已售罄" -#: saleor/product/filters.py:12 +#: saleor/product/filters.py:13 msgctxt "Product list sorting option" msgid "name" msgstr "名稱" -#: saleor/product/filters.py:13 +#: saleor/product/filters.py:14 msgctxt "Product list sorting option" msgid "price" msgstr "價格" @@ -1095,33 +1153,33 @@ msgctxt "Product list sorting option" msgid "last updated" msgstr "" -#: saleor/product/filters.py:20 +#: saleor/product/filters.py:22 msgctxt "Product list sorting form" msgid "Sort by" msgstr "排序" -#: saleor/product/filters.py:24 +#: saleor/product/filters.py:26 msgctxt "Currency amount" msgid "Price" msgstr "價格" -#: saleor/product/forms.py:23 +#: saleor/product/forms.py:22 #, python-format msgctxt "Variant choice field label" msgid "%(variant_label)s - %(price)s" msgstr "" -#: saleor/product/models.py:131 +#: saleor/product/models.py:153 msgctxt "Permission description" msgid "Manage products." msgstr "" -#: saleor/product/models.py:316 +#: saleor/product/models.py:379 msgctxt "File as a digital product" msgid "digital_product" msgstr "" -#: saleor/search/forms.py:9 +#: saleor/search/forms.py:8 msgctxt "Search form label" msgid "Query" msgstr "查詢" @@ -1167,170 +1225,190 @@ msgid "Spanish" msgstr "" #: saleor/settings.py:71 -msgid "Estonian" +msgid "Colombian Spanish" msgstr "" #: saleor/settings.py:72 -msgid "Persian" +msgid "Estonian" msgstr "" #: saleor/settings.py:73 -msgid "French" +msgid "Persian" msgstr "" #: saleor/settings.py:74 -msgid "Hindi" +msgid "French" msgstr "" #: saleor/settings.py:75 -msgid "Hungarian" +msgid "Hindi" msgstr "" #: saleor/settings.py:76 -msgid "Indonesian" +msgid "Hungarian" msgstr "" #: saleor/settings.py:77 -msgid "Italian" +msgid "Armenian" msgstr "" #: saleor/settings.py:78 -msgid "Japanese" +msgid "Indonesian" msgstr "" #: saleor/settings.py:79 -msgid "Korean" +msgid "Italian" msgstr "" #: saleor/settings.py:80 -msgid "Mongolian" +msgid "Japanese" msgstr "" #: saleor/settings.py:81 -msgid "Norwegian" +msgid "Korean" msgstr "" #: saleor/settings.py:82 -msgid "Dutch" +msgid "Lithuanian" msgstr "" #: saleor/settings.py:83 -msgid "Polish" +msgid "Mongolian" msgstr "" #: saleor/settings.py:84 -msgid "Brazilian Portuguese" +msgid "Norwegian" msgstr "" #: saleor/settings.py:85 -msgid "Romanian" +msgid "Dutch" msgstr "" #: saleor/settings.py:86 -msgid "Russian" +msgid "Polish" msgstr "" #: saleor/settings.py:87 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: saleor/settings.py:88 -msgid "Serbian" +msgid "Brazilian Portuguese" msgstr "" #: saleor/settings.py:89 -msgid "Swahili" +msgid "Romanian" msgstr "" #: saleor/settings.py:90 -msgid "Swedish" +msgid "Russian" msgstr "" #: saleor/settings.py:91 -msgid "Thai" +msgid "Slovak" msgstr "" #: saleor/settings.py:92 -msgid "Turkish" +msgid "Albanian" msgstr "" #: saleor/settings.py:93 -msgid "Ukrainian" +msgid "Serbian" msgstr "" #: saleor/settings.py:94 -msgid "Vietnamese" +msgid "Swahili" msgstr "" #: saleor/settings.py:95 -msgid "Simplified Chinese" +msgid "Swedish" msgstr "" #: saleor/settings.py:96 +msgid "Thai" +msgstr "" + +#: saleor/settings.py:97 +msgid "Turkish" +msgstr "" + +#: saleor/settings.py:98 +msgid "Ukrainian" +msgstr "" + +#: saleor/settings.py:99 +msgid "Vietnamese" +msgstr "" + +#: saleor/settings.py:100 +msgid "Simplified Chinese" +msgstr "" + +#: saleor/settings.py:101 msgid "Traditional Chinese" msgstr "" -#: saleor/settings.py:332 +#: saleor/settings.py:342 msgctxt "Name of political and economical union of european countries" msgid "European Union" msgstr "" -#: saleor/settings.py:573 +#: saleor/settings.py:593 msgctxt "Payment method name" msgid "Dummy gateway" msgstr "" -#: saleor/shipping/__init__.py:10 +#: saleor/shipping/__init__.py:9 msgctxt "Type of shipping" msgid "Price based shipping" msgstr "" -#: saleor/shipping/__init__.py:12 +#: saleor/shipping/__init__.py:10 msgctxt "Type of shipping" msgid "Weight based shipping" msgstr "" -#: saleor/shipping/models.py:38 +#: saleor/shipping/models.py:42 #, python-format msgctxt "Number of countries shipping zone apply to" msgid "%(num_of_countries)d countries" msgstr "" -#: saleor/shipping/models.py:53 +#: saleor/shipping/models.py:59 msgctxt "Permission description" msgid "Manage shipping." msgstr "" -#: saleor/shipping/utils.py:53 +#: saleor/shipping/utils.py:51 #, python-format msgctxt "Applies to orders more expensive than the min value" msgid "%(min_price)s and up" msgstr "" -#: saleor/shipping/utils.py:56 +#: saleor/shipping/utils.py:55 #, python-format msgctxt "Applies to order valued within this price range" msgid "%(min_price)s to %(max_price)s" msgstr "" -#: saleor/shipping/utils.py:72 +#: saleor/shipping/utils.py:69 #, python-format msgctxt "Applies to orders heavier than the threshold" msgid "%(min_weight)s and up" msgstr "" -#: saleor/shipping/utils.py:75 +#: saleor/shipping/utils.py:73 #, python-format msgctxt "Applies to orders of total weight within this range" msgid "%(min_weight)s to %(max_weight)s" msgstr "" -#: saleor/site/models.py:42 +#: saleor/site/models.py:46 msgctxt "Permission description" msgid "Manage settings." msgstr "" -#: saleor/site/models.py:44 +#: saleor/site/models.py:50 msgctxt "Permission description" msgid "Manage translations." msgstr "" @@ -1778,7 +1856,7 @@ msgstr "搜尋" #: templates/base.html:148 templates/base.html:208 msgctxt "Main navigation item" -msgid "Your Cart" +msgid "Your cart" msgstr "您的購物車" #: templates/base.html:202 @@ -1790,44 +1868,20 @@ msgctxt "Main navigation item" msgid "Style guide" msgstr "樣式指南" -#: templates/cart_dropdown.html:39 templates/checkout/_subtotal_table.html:8 -#: templates/dashboard/order/detail.html:342 -msgctxt "Order subtotal" -msgid "Subtotal" -msgstr "" - -#: templates/cart_dropdown.html:40 -msgctxt "Cart dropdown text" -msgid "Shipment and taxes calculated at checkout" -msgstr "" - -#: templates/cart_dropdown.html:54 -msgctxt "Cart dropdown secondary action" -msgid "Go to cart" -msgstr "跳轉到購物車" - -#: templates/cart_dropdown.html:57 -msgctxt "Cart dropdown primary action" -msgid "Checkout" -msgstr "結帳" - -#: templates/cart_dropdown.html:62 templates/checkout/index.html:91 -msgctxt "Empty cart message" -msgid "There are no products in your shopping cart." -msgstr "您的購物車是空的" - -#: templates/cart_dropdown.html:67 templates/checkout/index.html:92 -msgctxt "Empty cart link" -msgid "Check out our sales" -msgstr "" - #: templates/category/index.html:7 msgctxt "Category breadcrumbs home" msgid "Home" msgstr "首頁" +#: templates/checkout/_subtotal_table.html:8 +#: templates/checkout_dropdown.html:39 +#: templates/dashboard/order/detail.html:343 +msgctxt "Order subtotal" +msgid "Subtotal" +msgstr "" + #: templates/checkout/_subtotal_table.html:32 -msgctxt "Cart shipping cost form" +msgctxt "Checkout shipping cost form" msgid "Shipping cost for:" msgstr "" @@ -1837,7 +1891,7 @@ msgid "Total" msgstr "" #: templates/checkout/_subtotal_table.html:58 -msgctxt "Cart summary text" +msgctxt "Checkout summary text" msgid "Shipment and taxes calculated at checkout" msgstr "" @@ -1892,45 +1946,55 @@ msgid "Total" msgstr "" #: templates/checkout/index.html:7 -msgctxt "Cart page title" +msgctxt "Checkout page title" msgid "Your cart" msgstr "您的購物車" #: templates/checkout/index.html:12 -msgctxt "Cart breadcrumb" +msgctxt "Checkout breadcrumb" msgid "Cart" msgstr "購物車" #: templates/checkout/index.html:22 -msgctxt "Cart message" -msgid "Product has been removed from cart" -msgstr "從購物車刪除產品" +msgctxt "Checkout message" +msgid "Product has been removed from checkout" +msgstr "" #: templates/checkout/index.html:30 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Product" msgstr "產品" #: templates/checkout/index.html:33 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Quantity" msgstr "庫存" #: templates/checkout/index.html:36 -msgctxt "Cart table header" +msgctxt "Checkout table header" msgid "Price" msgstr "價格" #: templates/checkout/index.html:81 -msgctxt "Cart primary action" +msgctxt "Checkout primary action" msgid "Checkout" msgstr "結帳" #: templates/checkout/index.html:84 -msgctxt "cart page: secondary action, empty the cart" +msgctxt "checkout page: secondary action, empty the checkout" msgid "Clear cart" msgstr "" +#: templates/checkout/index.html:91 templates/checkout_dropdown.html:62 +msgctxt "Empty checkout message" +msgid "There are no products in your shopping cart." +msgstr "您的購物車是空的" + +#: templates/checkout/index.html:92 templates/checkout_dropdown.html:67 +msgctxt "Empty checkout link" +msgid "Check out our sales" +msgstr "" + #: templates/checkout/login.html:6 msgctxt "Checkout login page title" msgid "Login" @@ -2062,6 +2126,21 @@ msgctxt "Checkout summary without shipping action" msgid "Place order" msgstr "" +#: templates/checkout_dropdown.html:40 +msgctxt "Checkout dropdown text" +msgid "Shipment and taxes calculated at checkout" +msgstr "" + +#: templates/checkout_dropdown.html:54 +msgctxt "Checkout dropdown secondary action" +msgid "Go to cart" +msgstr "跳轉到購物車" + +#: templates/checkout_dropdown.html:57 +msgctxt "Checkout dropdown primary action" +msgid "Checkout" +msgstr "結帳" + #: templates/collection/index.html:7 msgctxt "Site breadcrumbs home" msgid "Home" @@ -2172,8 +2251,8 @@ msgstr "促銷" #: templates/dashboard/base.html:151 #: templates/dashboard/order/address_form.html:7 #: templates/dashboard/order/address_form.html:23 -#: templates/dashboard/order/detail.html:12 -#: templates/dashboard/order/detail.html:56 +#: templates/dashboard/order/detail.html:13 +#: templates/dashboard/order/detail.html:57 #: templates/dashboard/order/fulfillment.html:11 #: templates/dashboard/order/fulfillment.html:27 #: templates/dashboard/order/list.html:9 @@ -2257,8 +2336,8 @@ msgstr "" #: templates/dashboard/base.html:234 msgctxt "Dashboard software version" -msgid "Void:" -msgstr "" +msgid "Release:" +msgstr "釋放:" #: templates/dashboard/base_modal.html:33 #: templates/dashboard/category/form.html:114 @@ -2500,7 +2579,7 @@ msgstr "" #: templates/dashboard/collection/detail.html:8 #: templates/dashboard/collection/detail.html:14 -#: templates/dashboard/collection/detail.html:20 +#: templates/dashboard/collection/detail.html:24 msgid "Add new collection" msgstr "" @@ -2510,47 +2589,47 @@ msgstr "" msgid "Collections" msgstr "" -#: templates/dashboard/collection/detail.html:32 +#: templates/dashboard/collection/detail.html:36 msgctxt "Collection action" msgid "Remove collection" msgstr "" -#: templates/dashboard/collection/detail.html:37 +#: templates/dashboard/collection/detail.html:41 msgctxt "Collection action" msgid "View on site" msgstr "在網站中查看" -#: templates/dashboard/collection/detail.html:66 +#: templates/dashboard/collection/detail.html:70 msgctxt "Collection form card title: availability sub form" msgid "Availability" msgstr "" -#: templates/dashboard/collection/detail.html:77 +#: templates/dashboard/collection/detail.html:81 msgctxt "Collection secondary action" msgid "Cancel" msgstr "取消" -#: templates/dashboard/collection/detail.html:80 +#: templates/dashboard/collection/detail.html:84 msgctxt "Collection detail action" msgid "Update" msgstr "更新" -#: templates/dashboard/collection/detail.html:84 +#: templates/dashboard/collection/detail.html:88 msgctxt "Collection detail action" msgid "Create" msgstr "創建" -#: templates/dashboard/collection/detail.html:106 +#: templates/dashboard/collection/detail.html:110 msgctxt "Collection field" msgid "Published" msgstr "已發佈" -#: templates/dashboard/collection/detail.html:108 +#: templates/dashboard/collection/detail.html:112 msgctxt "Collection field" msgid "Draft" msgstr "草稿" -#: templates/dashboard/collection/detail.html:116 +#: templates/dashboard/collection/detail.html:120 msgctxt "Collection field" msgid "Can't unpublish homepage collection" msgstr "" @@ -3109,7 +3188,7 @@ msgctxt "Orders table header" msgid "Total" msgstr "" -#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:211 +#: templates/dashboard/index.html:53 templates/dashboard/order/detail.html:212 #: templates/dashboard/order/list.html:69 msgctxt "Anonymous user account value" msgid "Guest" @@ -3339,393 +3418,393 @@ msgid "Edit address" msgstr "編輯地址" #: templates/dashboard/order/address_form.html:39 -#: templates/dashboard/order/detail.html:217 +#: templates/dashboard/order/detail.html:218 msgctxt "" msgid "Shipping address" msgstr "配送地址" #: templates/dashboard/order/address_form.html:41 -#: templates/dashboard/order/detail.html:233 +#: templates/dashboard/order/detail.html:234 msgctxt "" msgid "Billing address" msgstr "帳單地址" -#: templates/dashboard/order/detail.html:32 +#: templates/dashboard/order/detail.html:33 msgctxt "Order detail action" msgid "Cancel Order" msgstr "取消訂單" -#: templates/dashboard/order/detail.html:39 +#: templates/dashboard/order/detail.html:40 msgctxt "Order detail action" msgid "Remove draft order" msgstr "" -#: templates/dashboard/order/detail.html:45 +#: templates/dashboard/order/detail.html:46 msgctxt "Order detail action" msgid "Print" msgstr "列印" -#: templates/dashboard/order/detail.html:79 +#: templates/dashboard/order/detail.html:80 msgctxt "Order detail tab" msgid "Details" msgstr "詳情" -#: templates/dashboard/order/detail.html:87 -#: templates/dashboard/order/detail.html:575 +#: templates/dashboard/order/detail.html:88 +#: templates/dashboard/order/detail.html:576 msgctxt "Order detail tab" msgid "Payments" msgstr "付款" -#: templates/dashboard/order/detail.html:95 -#: templates/dashboard/order/detail.html:625 +#: templates/dashboard/order/detail.html:96 +#: templates/dashboard/order/detail.html:626 msgctxt "Order detail tab" msgid "History" msgstr "歷史" -#: templates/dashboard/order/detail.html:108 +#: templates/dashboard/order/detail.html:109 msgctxt "Order summary card header" msgid "Payments" msgstr "付款" -#: templates/dashboard/order/detail.html:114 +#: templates/dashboard/order/detail.html:115 msgctxt "Payment status not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:124 +#: templates/dashboard/order/detail.html:125 msgctxt "Order summary card header" msgid "Outstanding balance" msgstr "未付清餘額" -#: templates/dashboard/order/detail.html:137 +#: templates/dashboard/order/detail.html:138 msgctxt "Order summary card header" msgid "Preauthorized amount" msgstr "預先授權金額" -#: templates/dashboard/order/detail.html:143 +#: templates/dashboard/order/detail.html:144 msgctxt "Preauthorized amount not available" msgid "N/A" msgstr "" -#: templates/dashboard/order/detail.html:149 +#: templates/dashboard/order/detail.html:150 msgctxt "Order summary card header" msgid "Captured amount" msgstr "" -#: templates/dashboard/order/detail.html:163 +#: templates/dashboard/order/detail.html:164 msgctxt "Order summary card action" msgid "Capture" msgstr "選取" -#: templates/dashboard/order/detail.html:168 +#: templates/dashboard/order/detail.html:169 msgctxt "Order summary card action" msgid "Refund" msgstr "退款" -#: templates/dashboard/order/detail.html:173 +#: templates/dashboard/order/detail.html:174 msgctxt "Order summary card action" msgid "Void" msgstr "" -#: templates/dashboard/order/detail.html:178 +#: templates/dashboard/order/detail.html:179 msgctxt "Order detail action" msgid "Mark as paid" msgstr "" -#: templates/dashboard/order/detail.html:190 +#: templates/dashboard/order/detail.html:191 msgctxt "Order details summary header" msgid "Customer" msgstr "客戶" -#: templates/dashboard/order/detail.html:194 +#: templates/dashboard/order/detail.html:195 msgctxt "Order customer details action title" msgid "Edit customer details" msgstr "" -#: templates/dashboard/order/detail.html:195 -#: templates/dashboard/order/detail.html:220 -#: templates/dashboard/order/detail.html:236 +#: templates/dashboard/order/detail.html:196 +#: templates/dashboard/order/detail.html:221 +#: templates/dashboard/order/detail.html:237 #: templates/dashboard/product/product_image/list.html:82 #: templates/dashboard/product/product_image/list.html:127 msgctxt "Dashboard edit action" msgid "Edit" msgstr "編輯" -#: templates/dashboard/order/detail.html:227 +#: templates/dashboard/order/detail.html:228 msgctxt "Missing shipping address message" msgid "No shipping address" msgstr "" -#: templates/dashboard/order/detail.html:242 +#: templates/dashboard/order/detail.html:243 msgctxt "Order billing address same as shipping address" msgid "Same as shipping address" msgstr "" -#: templates/dashboard/order/detail.html:247 +#: templates/dashboard/order/detail.html:248 msgctxt "Missing billing address message" msgid "No billing address" msgstr "" -#: templates/dashboard/order/detail.html:260 +#: templates/dashboard/order/detail.html:261 #, python-format msgctxt "Order table title" msgid "Order draft #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:264 +#: templates/dashboard/order/detail.html:265 #, python-format msgctxt "Order table title" msgid "Order #%(order)s" msgstr "" -#: templates/dashboard/order/detail.html:270 +#: templates/dashboard/order/detail.html:271 msgctxt "Order placed on date" msgid "Placed on" msgstr "" -#: templates/dashboard/order/detail.html:280 -#: templates/dashboard/order/detail.html:477 +#: templates/dashboard/order/detail.html:281 +#: templates/dashboard/order/detail.html:478 #: templates/dashboard/order/pdf/packing_slip.html:58 msgctxt "Order table header" msgid "Item" msgstr "" -#: templates/dashboard/order/detail.html:283 +#: templates/dashboard/order/detail.html:284 msgctxt "Order table header" msgid "Price" msgstr "價格" -#: templates/dashboard/order/detail.html:286 -#: templates/dashboard/order/detail.html:480 +#: templates/dashboard/order/detail.html:287 +#: templates/dashboard/order/detail.html:481 #: templates/dashboard/order/pdf/packing_slip.html:64 msgctxt "Order table header" msgid "Quantity" msgstr "庫存" -#: templates/dashboard/order/detail.html:289 +#: templates/dashboard/order/detail.html:290 msgctxt "Order table header" msgid "Total" msgstr "" -#: templates/dashboard/order/detail.html:304 +#: templates/dashboard/order/detail.html:305 #: templates/dashboard/order/fulfillment.html:85 #, python-format msgctxt "Order table text" msgid "SKU: %(sku)s" msgstr "" -#: templates/dashboard/order/detail.html:320 #: templates/dashboard/order/detail.html:321 +#: templates/dashboard/order/detail.html:322 msgctxt "Order table row action" msgid "Change quantity" msgstr "修改庫存" -#: templates/dashboard/order/detail.html:325 #: templates/dashboard/order/detail.html:326 +#: templates/dashboard/order/detail.html:327 msgctxt "Order table row action" msgid "Remove line" msgstr "" -#: templates/dashboard/order/detail.html:348 +#: templates/dashboard/order/detail.html:349 msgctxt "Order totals action" msgid "Edit shipping" msgstr "" -#: templates/dashboard/order/detail.html:350 -#: templates/dashboard/order/detail.html:359 +#: templates/dashboard/order/detail.html:351 +#: templates/dashboard/order/detail.html:360 #, python-format msgctxt "Order totals header" msgid "Shipping (%(shipping_name)s)" msgstr "" -#: templates/dashboard/order/detail.html:354 -#: templates/dashboard/order/detail.html:363 +#: templates/dashboard/order/detail.html:355 +#: templates/dashboard/order/detail.html:364 msgctxt "Order totals header" msgid "Shipping" msgstr "" -#: templates/dashboard/order/detail.html:370 +#: templates/dashboard/order/detail.html:371 msgctxt "Order total taxes" msgid "Taxes (included)" msgstr "" -#: templates/dashboard/order/detail.html:372 +#: templates/dashboard/order/detail.html:373 msgctxt "Order total taxes" msgid "Taxes" msgstr "" -#: templates/dashboard/order/detail.html:380 -#: templates/dashboard/order/detail.html:404 +#: templates/dashboard/order/detail.html:381 +#: templates/dashboard/order/detail.html:405 #, python-format msgctxt "Order totals header" msgid "Discount (%(voucher)s)" msgstr "" -#: templates/dashboard/order/detail.html:384 -#: templates/dashboard/order/detail.html:408 +#: templates/dashboard/order/detail.html:385 +#: templates/dashboard/order/detail.html:409 msgctxt "Order totals header" msgid "Discount" msgstr "" -#: templates/dashboard/order/detail.html:391 +#: templates/dashboard/order/detail.html:392 msgctxt "Order totals action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:392 +#: templates/dashboard/order/detail.html:393 msgctxt "Order detail action" msgid "Edit voucher" msgstr "" -#: templates/dashboard/order/detail.html:397 +#: templates/dashboard/order/detail.html:398 msgctxt "Order totals action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:398 +#: templates/dashboard/order/detail.html:399 msgctxt "Order detail action" msgid "Edit discount" msgstr "" -#: templates/dashboard/order/detail.html:413 +#: templates/dashboard/order/detail.html:414 msgctxt "Order totals header" msgid "Grand total" msgstr "" -#: templates/dashboard/order/detail.html:436 +#: templates/dashboard/order/detail.html:437 msgctxt "Order summary card action title" msgid "Fulfill order" msgstr "" -#: templates/dashboard/order/detail.html:437 +#: templates/dashboard/order/detail.html:438 msgctxt "Order summary card action" msgid "Fulfill" msgstr "" -#: templates/dashboard/order/detail.html:441 +#: templates/dashboard/order/detail.html:442 msgctxt "Order summary card action title" msgid "Add product to order" msgstr "" -#: templates/dashboard/order/detail.html:442 +#: templates/dashboard/order/detail.html:443 msgctxt "Order summary card action" msgid "Add product" msgstr "新增產品" -#: templates/dashboard/order/detail.html:447 +#: templates/dashboard/order/detail.html:448 msgctxt "Order summary card action title" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:448 +#: templates/dashboard/order/detail.html:449 msgctxt "Order summary card action" msgid "Create order" msgstr "" -#: templates/dashboard/order/detail.html:454 +#: templates/dashboard/order/detail.html:455 msgctxt "Order detail action" msgid "Invoice" msgstr "發票" -#: templates/dashboard/order/detail.html:457 +#: templates/dashboard/order/detail.html:458 msgctxt "Order detail action" msgid "View on site" msgstr "在網站中查看" -#: templates/dashboard/order/detail.html:466 +#: templates/dashboard/order/detail.html:467 #, python-format msgctxt "Fulfillment table title" msgid "Fulfillment #%(fulfillment)s" msgstr "" -#: templates/dashboard/order/detail.html:498 +#: templates/dashboard/order/detail.html:499 #, python-format msgctxt "Fulfillment table text" msgid "Tracking number: %(tracking)s" msgstr "" -#: templates/dashboard/order/detail.html:510 +#: templates/dashboard/order/detail.html:511 msgctxt "Fulfillment summary card action title" msgid "Cancel fulfillment" msgstr "" -#: templates/dashboard/order/detail.html:511 +#: templates/dashboard/order/detail.html:512 msgctxt "Fulfillment summary card action" msgid "Cancel" msgstr "取消" -#: templates/dashboard/order/detail.html:514 +#: templates/dashboard/order/detail.html:515 msgctxt "Fulfillment summary card action title" msgid "Edit tracking number" msgstr "" -#: templates/dashboard/order/detail.html:516 +#: templates/dashboard/order/detail.html:517 msgctxt "Fulfillment summary card action" msgid "Edit tracking" msgstr "" -#: templates/dashboard/order/detail.html:518 +#: templates/dashboard/order/detail.html:519 msgctxt "Fulfillment summary card action" msgid "Add tracking" msgstr "" -#: templates/dashboard/order/detail.html:523 +#: templates/dashboard/order/detail.html:524 msgctxt "Order detail action" msgid "Packing Slips" msgstr "" -#: templates/dashboard/order/detail.html:533 +#: templates/dashboard/order/detail.html:534 msgctxt "Customer order note card title" msgid "Customer note" msgstr "" -#: templates/dashboard/order/detail.html:539 +#: templates/dashboard/order/detail.html:540 msgctxt "No customer order note card message" msgid "There is no note from the customer associated with this order." msgstr "" -#: templates/dashboard/order/detail.html:548 +#: templates/dashboard/order/detail.html:549 msgctxt "Order notes card title" msgid "Order notes" msgstr "訂單備註" -#: templates/dashboard/order/detail.html:561 +#: templates/dashboard/order/detail.html:562 msgctxt "Empty order notes card message" msgid "There are no notes associated with this order." msgstr "訂單無備註" -#: templates/dashboard/order/detail.html:567 +#: templates/dashboard/order/detail.html:568 msgctxt "Order notes card action" msgid "Add note" msgstr "新增備註" -#: templates/dashboard/order/detail.html:582 +#: templates/dashboard/order/detail.html:583 msgctxt "Payment history table header" msgid "Transaction ID" msgstr "交易編號" -#: templates/dashboard/order/detail.html:585 +#: templates/dashboard/order/detail.html:586 msgctxt "Payment history table header" msgid "Date" msgstr "日期" -#: templates/dashboard/order/detail.html:588 +#: templates/dashboard/order/detail.html:589 msgctxt "Payment history table header" msgid "Payment status" msgstr "付款狀態" -#: templates/dashboard/order/detail.html:591 +#: templates/dashboard/order/detail.html:592 msgctxt "Payment history table header" msgid "Amount" msgstr "金額" -#: templates/dashboard/order/detail.html:599 +#: templates/dashboard/order/detail.html:600 #, python-format msgctxt "Payment item column data" msgid "#%(payment_id)s" msgstr "" -#: templates/dashboard/order/detail.html:620 +#: templates/dashboard/order/detail.html:621 msgctxt "Empty payment history table message" msgid "No payments made for this order." msgstr "訂單未付款" @@ -5677,24 +5756,25 @@ msgstr "主打產品" #: templates/materializecssform/field.html:109 #: templates/materializecssform/field.html:135 #: templates/materializecssform/field.html:160 -#: templates/materializecssform/field.html:180 -#: templates/materializecssform/field.html:194 -#: templates/materializecssform/field.html:228 -#: templates/materializecssform/field.html:257 -#: templates/materializecssform/field.html:285 -#: templates/materializecssform/field.html:320 -#: templates/materializecssform/field.html:350 -#: templates/materializecssform/field.html:376 +#: templates/materializecssform/field.html:183 +#: templates/materializecssform/field.html:241 +#: templates/materializecssform/field.html:275 +#: templates/materializecssform/field.html:304 +#: templates/materializecssform/field.html:332 +#: templates/materializecssform/field.html:367 +#: templates/materializecssform/field.html:397 +#: templates/materializecssform/field.html:423 msgctxt "Dashboard form labels" msgid "(optional)" msgstr "可選" -#: templates/materializecssform/field.html:200 -#: templates/materializecssform/field.html:234 +#: templates/materializecssform/field.html:215 +#: templates/materializecssform/field.html:247 +#: templates/materializecssform/field.html:281 msgid "File" msgstr "文件" -#: templates/materializecssform/field.html:355 +#: templates/materializecssform/field.html:402 #, python-format msgctxt "" "Message showing how many chars were used out of maximum field's length" @@ -6241,6 +6321,12 @@ msgctxt "Order confirmation e-mail billing address" msgid "Billing address" msgstr "帳單地址" +#: templates/templated_email/order/confirm_order.email:25 +#: templates/templated_email/source/confirm_order.mjml:39 +msgctxt "Order confirmation e-mail text" +msgid "No billing address" +msgstr "" + #: templates/templated_email/order/confirm_order.email:27 #: templates/templated_email/source/confirm_order.mjml:30 msgctxt "Order confirmation e-mail shipping address" @@ -6248,7 +6334,7 @@ msgid "Shipping address" msgstr "配送地址" #: templates/templated_email/order/confirm_order.email:28 -#: templates/templated_email/source/confirm_order.mjml:42 +#: templates/templated_email/source/confirm_order.mjml:46 msgctxt "Order confirmation e-mail text" msgid "No shipping required" msgstr "" diff --git a/locale/zh_Hant/LC_MESSAGES/djangojs.mo b/locale/zh_Hant/LC_MESSAGES/djangojs.mo index d253de1ef50..55726bb025a 100644 Binary files a/locale/zh_Hant/LC_MESSAGES/djangojs.mo and b/locale/zh_Hant/LC_MESSAGES/djangojs.mo differ diff --git a/package-lock.json b/package-lock.json index 75552d4a35e..1f11e6aa9c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6106,7 +6106,7 @@ }, "@storybook/podda": { "version": "1.2.3", - "resolved": "http://registry.npmjs.org/@storybook/podda/-/podda-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/@storybook/podda/-/podda-1.2.3.tgz", "integrity": "sha512-g7dsdsn50AhlGZ8iIDKdF8bi7Am++iFOq+QN+hNKz3FvgLuf8Dz+mpC/BFl90eE9bEYxXqXKeMf87399Ec5Qhw==", "dev": true, "requires": { @@ -6251,7 +6251,7 @@ "dependencies": { "hoist-non-react-statics": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=", "dev": true }, @@ -6277,7 +6277,7 @@ "dependencies": { "hoist-non-react-statics": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=", "dev": true } @@ -6815,7 +6815,7 @@ }, "@types/events": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" }, "@types/fs-extra": { @@ -6870,6 +6870,19 @@ "indefinite-observable": "^1.0.1" } }, + "@types/lodash": { + "version": "4.14.135", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.135.tgz", + "integrity": "sha512-Ed+tSZ9qM1oYpi5kzdsBuOzcAIn1wDW+e8TFJ50IMJMlSopGdJgKAbhHzN6h1E1OfjlGOr2JepzEWtg9NIfoNg==" + }, + "@types/lodash-es": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.3.tgz", + "integrity": "sha512-iHI0i7ZAL1qepz1Y7f3EKg/zUMDwDfTzitx+AlHhJJvXwenP682ZyGbgPSc5Ej3eEAKVbNWKFuwOadCj5vBbYQ==", + "requires": { + "@types/lodash": "*" + } + }, "@types/moment-timezone": { "version": "0.5.9", "resolved": "https://registry.npmjs.org/@types/moment-timezone/-/moment-timezone-0.5.9.tgz", @@ -7039,9 +7052,9 @@ "dev": true }, "@types/url-join": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-0.8.2.tgz", - "integrity": "sha1-EYHsvh2XtwNODqHjXmLobMJrQi0=" + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-0.8.3.tgz", + "integrity": "sha512-bM7dzLHuCqDNlbeOxvo/KfweN3La4d9C1VFGCgefxiZXn0JcRtyGDwWCSUEO8RrMhnx/LGhDOXP8TTokM1grSA==" }, "@types/vfile": { "version": "3.0.2", @@ -7066,7 +7079,7 @@ }, "@types/webpack-env": { "version": "1.13.6", - "resolved": "http://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.6.tgz", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.6.tgz", "integrity": "sha512-5Th3OsZ4gTRdr9Mho83BQ23cex4sRhOR4XTG+m+cJc0FhtUBK9Vn62hBJ+pnQYnSxoPOsKoAPOx6FcphxBC8ng==", "dev": true }, @@ -7339,7 +7352,7 @@ }, "acorn-jsx": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { @@ -7348,7 +7361,7 @@ "dependencies": { "acorn": { "version": "3.3.0", - "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true } @@ -7481,7 +7494,7 @@ }, "ansi-escapes": { "version": "3.1.0", - "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" }, "ansi-html": { @@ -7993,7 +8006,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "moment": { @@ -8527,7 +8540,7 @@ }, "array-equal": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, @@ -8658,7 +8671,7 @@ }, "util": { "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -8808,7 +8821,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -8893,7 +8906,7 @@ "dependencies": { "jsesc": { "version": "1.3.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true } @@ -8913,7 +8926,7 @@ }, "babel-helper-is-nodes-equiv": { "version": "0.0.1", - "resolved": "http://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", "dev": true }, @@ -8983,7 +8996,7 @@ }, "babel-plugin-istanbul": { "version": "4.1.6", - "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", "dev": true, "requires": { @@ -9168,7 +9181,7 @@ }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, @@ -10036,7 +10049,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -10081,7 +10094,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -10151,7 +10164,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -10616,7 +10629,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -10957,7 +10970,7 @@ }, "color": { "version": "0.11.4", - "resolved": "http://registry.npmjs.org/color/-/color-0.11.4.tgz", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { @@ -10981,7 +10994,7 @@ }, "color-string": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", "dev": true, "requires": { @@ -11001,7 +11014,7 @@ }, "colors": { "version": "1.1.2", - "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, @@ -11217,7 +11230,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -11230,7 +11243,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -11319,13 +11332,13 @@ }, "css-color-names": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", "dev": true }, "css-loader": { "version": "0.28.11", - "resolved": "http://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", "dev": true, "requires": { @@ -11353,7 +11366,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -11403,7 +11416,7 @@ }, "css-select": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { @@ -11432,7 +11445,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, @@ -11449,13 +11462,13 @@ }, "regjsgen": { "version": "0.2.0", - "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", "dev": true }, "regjsparser": { "version": "0.1.5", - "resolved": "http://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { @@ -11502,7 +11515,7 @@ }, "cssnano": { "version": "3.10.0", - "resolved": "http://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", "dev": true, "requires": { @@ -11572,7 +11585,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -11992,7 +12005,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -12085,7 +12098,7 @@ "dependencies": { "domelementtype": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", "dev": true } @@ -12147,7 +12160,7 @@ }, "dotenv": { "version": "5.0.1", - "resolved": "http://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", "dev": true }, @@ -12220,7 +12233,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -12661,7 +12674,7 @@ }, "eslint": { "version": "4.19.1", - "resolved": "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { @@ -12889,7 +12902,7 @@ }, "doctrine": { "version": "1.5.0", - "resolved": "http://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { @@ -12905,7 +12918,7 @@ }, "load-json-file": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { @@ -12982,7 +12995,7 @@ "dependencies": { "semver": { "version": "5.3.0", - "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true } @@ -13030,7 +13043,7 @@ }, "espree": { "version": "3.5.4", - "resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { @@ -13156,7 +13169,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { @@ -13669,7 +13682,7 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { @@ -14121,7 +14134,7 @@ }, "file-loader": { "version": "1.1.11", - "resolved": "http://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", "dev": true, "requires": { @@ -14142,7 +14155,7 @@ "dependencies": { "fs-extra": { "version": "0.30.0", - "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "dev": true, "requires": { @@ -14155,7 +14168,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { @@ -14201,7 +14214,7 @@ }, "finalhandler": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { @@ -15132,28 +15145,28 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "resolved": false, "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "resolved": false, "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "optional": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "resolved": false, "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "resolved": false, "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, @@ -15164,14 +15177,14 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "resolved": false, "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, @@ -15182,42 +15195,42 @@ }, "chownr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "resolved": false, "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "resolved": false, "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": false, "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "resolved": false, "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": false, "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "optional": true, @@ -15227,28 +15240,28 @@ }, "deep-extend": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "resolved": false, "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "resolved": false, "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "resolved": false, "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "resolved": false, "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, @@ -15258,14 +15271,14 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": false, "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "resolved": false, "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, @@ -15282,7 +15295,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "resolved": false, "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "optional": true, @@ -15297,14 +15310,14 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "resolved": false, "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "resolved": false, "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "dev": true, "optional": true, @@ -15314,7 +15327,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "resolved": false, "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, @@ -15324,7 +15337,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "resolved": false, "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, @@ -15335,21 +15348,21 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "resolved": false, "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true, "optional": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "resolved": false, "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": false, "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "optional": true, @@ -15359,14 +15372,14 @@ }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": false, "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "optional": true, @@ -15376,14 +15389,14 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": false, "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true, "optional": true }, "minipass": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", + "resolved": false, "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", "dev": true, "optional": true, @@ -15394,7 +15407,7 @@ }, "minizlib": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "resolved": false, "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "dev": true, "optional": true, @@ -15404,7 +15417,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": false, "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "optional": true, @@ -15414,14 +15427,14 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "resolved": false, "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "needle": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", + "resolved": false, "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", "dev": true, "optional": true, @@ -15433,7 +15446,7 @@ }, "node-pre-gyp": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", + "resolved": false, "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", "dev": true, "optional": true, @@ -15452,7 +15465,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "resolved": false, "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, @@ -15463,14 +15476,14 @@ }, "npm-bundled": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "resolved": false, "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "resolved": false, "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "dev": true, "optional": true, @@ -15481,7 +15494,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "resolved": false, "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, @@ -15494,21 +15507,21 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "resolved": false, "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "resolved": false, "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "resolved": false, "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "optional": true, @@ -15518,21 +15531,21 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": false, "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": false, "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "resolved": false, "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, @@ -15543,21 +15556,21 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": false, "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "resolved": false, "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "resolved": false, "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "optional": true, @@ -15570,7 +15583,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": false, "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true @@ -15579,7 +15592,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": false, "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, @@ -15595,7 +15608,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "resolved": false, "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "optional": true, @@ -15605,49 +15618,49 @@ }, "safe-buffer": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "resolved": false, "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "resolved": false, "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "resolved": false, "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "resolved": false, "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "resolved": false, "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "resolved": false, "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": false, "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "optional": true, @@ -15659,7 +15672,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": false, "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, @@ -15669,7 +15682,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, @@ -15679,14 +15692,14 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "resolved": false, "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", + "resolved": false, "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", "dev": true, "optional": true, @@ -15702,14 +15715,14 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": false, "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "resolved": false, "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, @@ -15719,14 +15732,14 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "optional": true }, "yallist": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "resolved": false, "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", "dev": true, "optional": true @@ -16962,7 +16975,7 @@ }, "into-stream": { "version": "3.1.0", - "resolved": "http://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", "requires": { "from2": "^2.1.1", @@ -17048,7 +17061,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -18729,28 +18742,28 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "resolved": false, "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "resolved": false, "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "optional": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "resolved": false, "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "resolved": false, "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, @@ -18761,14 +18774,14 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "resolved": false, "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, @@ -18779,42 +18792,42 @@ }, "chownr": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "resolved": false, "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "resolved": false, "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": false, "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "resolved": false, "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": false, "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "optional": true, @@ -18824,28 +18837,28 @@ }, "deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "resolved": false, "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "resolved": false, "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "resolved": false, "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "resolved": false, "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, @@ -18855,14 +18868,14 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": false, "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "resolved": false, "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, @@ -18879,7 +18892,7 @@ }, "glob": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "resolved": false, "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, @@ -18894,14 +18907,14 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "resolved": false, "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "resolved": false, "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "optional": true, @@ -18911,7 +18924,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "resolved": false, "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, @@ -18921,7 +18934,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "resolved": false, "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, @@ -18932,21 +18945,21 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "resolved": false, "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true, "optional": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "resolved": false, "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": false, "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "optional": true, @@ -18956,14 +18969,14 @@ }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": false, "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "optional": true, @@ -18973,14 +18986,14 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": false, "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true, "optional": true }, "minipass": { "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "resolved": false, "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, "optional": true, @@ -18991,7 +19004,7 @@ }, "minizlib": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "resolved": false, "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "dev": true, "optional": true, @@ -19001,7 +19014,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": false, "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "optional": true, @@ -19011,14 +19024,14 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "resolved": false, "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "needle": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", + "resolved": false, "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", "dev": true, "optional": true, @@ -19030,7 +19043,7 @@ }, "node-pre-gyp": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", + "resolved": false, "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", "dev": true, "optional": true, @@ -19049,7 +19062,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "resolved": false, "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, @@ -19060,14 +19073,14 @@ }, "npm-bundled": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", + "resolved": false, "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", + "resolved": false, "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", "dev": true, "optional": true, @@ -19078,7 +19091,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "resolved": false, "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, @@ -19091,21 +19104,21 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "resolved": false, "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "resolved": false, "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "resolved": false, "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "optional": true, @@ -19115,21 +19128,21 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": false, "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": false, "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "resolved": false, "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, @@ -19140,21 +19153,21 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": false, "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "resolved": false, "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "resolved": false, "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "optional": true, @@ -19167,7 +19180,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": false, "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true @@ -19176,7 +19189,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": false, "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, @@ -19192,7 +19205,7 @@ }, "rimraf": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "resolved": false, "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "optional": true, @@ -19202,49 +19215,49 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "resolved": false, "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "resolved": false, "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "resolved": false, "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "resolved": false, "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "resolved": false, "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "resolved": false, "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": false, "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "optional": true, @@ -19256,7 +19269,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": false, "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, @@ -19266,7 +19279,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, @@ -19276,14 +19289,14 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "resolved": false, "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "resolved": false, "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "dev": true, "optional": true, @@ -19299,14 +19312,14 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": false, "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "resolved": false, "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, @@ -19316,14 +19329,14 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "optional": true }, "yallist": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "resolved": false, "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true, "optional": true @@ -22284,7 +22297,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { "ansi-styles": "^2.2.1", @@ -22356,7 +22369,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -22399,6 +22412,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, + "lodash-es": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.11.tgz", + "integrity": "sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q==" + }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", @@ -22773,7 +22791,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, @@ -22827,7 +22845,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -23189,7 +23207,7 @@ "dependencies": { "load-json-file": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { @@ -23566,7 +23584,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -24768,7 +24786,7 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, @@ -24785,7 +24803,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, @@ -24801,7 +24819,7 @@ }, "p-cancelable": { "version": "0.4.1", - "resolved": "http://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" }, "p-defer": { @@ -24826,7 +24844,7 @@ }, "p-is-promise": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" }, "p-limit": { @@ -24900,7 +24918,7 @@ }, "parse-asn1": { "version": "5.1.1", - "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { @@ -25027,7 +25045,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { @@ -25346,7 +25364,7 @@ }, "postcss-calc": { "version": "5.3.1", - "resolved": "http://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { @@ -25363,7 +25381,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -25430,7 +25448,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -25496,7 +25514,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -25546,7 +25564,7 @@ }, "postcss-discard-comments": { "version": "2.0.4", - "resolved": "http://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { @@ -25561,7 +25579,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -25626,7 +25644,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -25676,7 +25694,7 @@ }, "postcss-discard-empty": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { @@ -25691,7 +25709,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -25741,7 +25759,7 @@ }, "postcss-discard-overridden": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { @@ -25756,7 +25774,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -25806,7 +25824,7 @@ }, "postcss-discard-unused": { "version": "2.2.3", - "resolved": "http://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { @@ -25822,7 +25840,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -25887,7 +25905,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26049,7 +26067,7 @@ }, "postcss-merge-idents": { "version": "2.1.7", - "resolved": "http://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", "dev": true, "requires": { @@ -26066,7 +26084,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26131,7 +26149,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26210,7 +26228,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26266,7 +26284,7 @@ }, "postcss-minify-font-values": { "version": "1.0.5", - "resolved": "http://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", "dev": true, "requires": { @@ -26283,7 +26301,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26333,7 +26351,7 @@ }, "postcss-minify-gradients": { "version": "1.0.5", - "resolved": "http://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { @@ -26349,7 +26367,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26399,7 +26417,7 @@ }, "postcss-minify-params": { "version": "1.2.2", - "resolved": "http://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", "dev": true, "requires": { @@ -26417,7 +26435,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26467,7 +26485,7 @@ }, "postcss-minify-selectors": { "version": "2.1.1", - "resolved": "http://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", "dev": true, "requires": { @@ -26485,7 +26503,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26574,7 +26592,7 @@ }, "postcss-normalize-charset": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { @@ -26589,7 +26607,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26639,7 +26657,7 @@ }, "postcss-normalize-url": { "version": "3.0.8", - "resolved": "http://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", "dev": true, "requires": { @@ -26657,7 +26675,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26723,7 +26741,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26773,7 +26791,7 @@ }, "postcss-reduce-idents": { "version": "2.4.0", - "resolved": "http://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { @@ -26789,7 +26807,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26839,7 +26857,7 @@ }, "postcss-reduce-initial": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { @@ -26854,7 +26872,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26904,7 +26922,7 @@ }, "postcss-reduce-transforms": { "version": "1.0.4", - "resolved": "http://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", "dev": true, "requires": { @@ -26921,7 +26939,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -26982,7 +27000,7 @@ }, "postcss-svgo": { "version": "2.1.6", - "resolved": "http://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", "dev": true, "requires": { @@ -27000,7 +27018,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -27050,7 +27068,7 @@ }, "postcss-unique-selectors": { "version": "2.0.2", - "resolved": "http://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", "dev": true, "requires": { @@ -27067,7 +27085,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -27123,7 +27141,7 @@ }, "postcss-zindex": { "version": "2.2.0", - "resolved": "http://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", "dev": true, "requires": { @@ -27140,7 +27158,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -27244,13 +27262,13 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, "printj": { "version": "1.1.2", - "resolved": "http://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" }, "private": { @@ -27417,7 +27435,7 @@ }, "query-string": { "version": "5.1.1", - "resolved": "http://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "requires": { "decode-uri-component": "^0.2.0", @@ -27459,7 +27477,7 @@ }, "ramda": { "version": "0.21.0", - "resolved": "http://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz", "integrity": "sha1-oAGr7bP/YQd9T/HVd9RN536NCjU=", "dev": true }, @@ -27828,7 +27846,7 @@ }, "globby": { "version": "8.0.1", - "resolved": "http://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", "dev": true, "requires": { @@ -28493,7 +28511,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -28631,7 +28649,7 @@ }, "reduce-css-calc": { "version": "1.3.0", - "resolved": "http://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", "dev": true, "requires": { @@ -28751,7 +28769,7 @@ }, "regexpp": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true }, @@ -29001,7 +29019,7 @@ }, "require-uncached": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { @@ -29189,7 +29207,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -29882,7 +29900,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { "inherits": "^2.0.1", @@ -30361,7 +30379,7 @@ }, "stream-browserify": { "version": "2.0.1", - "resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { @@ -30576,7 +30594,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" @@ -30601,7 +30619,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-indent": { @@ -31377,7 +31395,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -31929,7 +31947,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } @@ -32596,7 +32614,7 @@ }, "valid-data-url": { "version": "0.1.6", - "resolved": "http://registry.npmjs.org/valid-data-url/-/valid-data-url-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-0.1.6.tgz", "integrity": "sha512-FXg2qXMzfAhZc0y2HzELNfUeiOjPr+52hU1DNBWiJJ2luXD+dD1R9NA48Ug5aj0ibbxroeGDc/RJv6ThiGgkDw==", "dev": true }, @@ -33156,7 +33174,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -33579,7 +33597,7 @@ }, "webpack-bundle-tracker": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-0.3.0.tgz", "integrity": "sha512-I0Gwkug8QX8xZS14SvmfWin1AmZDoZp/0AGvlgKqNxyw20DgkFkq1jTQ/Ml73YgjFTmQ5bATyQM7TjtYMP1nFA==", "dev": true, "requires": { @@ -33590,7 +33608,7 @@ "dependencies": { "ansi-regex": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", "integrity": "sha1-QchHGUZGN15qGl0Qw8oFTvn8mA0=", "dev": true }, @@ -33602,7 +33620,7 @@ }, "strip-ansi": { "version": "2.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", "integrity": "sha1-32LBqpTtLxFOHQ8h/R1QSCt5pg4=", "dev": true, "requires": { diff --git a/package.json b/package.json index 6edd7a0a2be..d09cae6643c 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@types/classnames": "^2.2.6", "@types/enzyme": "^3.1.15", "@types/fuzzaldrin": "^2.1.1", + "@types/lodash-es": "^4.17.3", "@types/moment-timezone": "^0.5.9", "@types/react-dropzone": "^4.2.2", "@types/react-helmet": "^5.0.7", @@ -30,7 +31,7 @@ "@types/react-sortable-tree": "^0.3.6", "@types/storybook__addon-storyshots": "^3.4.3", "@types/string-similarity": "^1.2.0", - "@types/url-join": "^0.8.2", + "@types/url-join": "^0.8.3", "apollo": "^2.8.1", "apollo-cache-inmemory": "^1.3.11", "apollo-client": "^2.4.7", @@ -64,6 +65,7 @@ "keycode": "^2.2.0", "lazysizes": "^4.0.1", "lodash": "^4.17.11", + "lodash-es": "^4.17.11", "materialize-css": "^0.100.2", "medium-editor": "^5.23.3", "mobx": "^3.0.2", @@ -198,7 +200,8 @@ "node" ], "moduleNameMapper": { - "@saleor(.*)$": "/saleor/static/dashboard-next/$1" + "@saleor(.*)$": "/saleor/static/dashboard-next/$1", + "^lodash-es(.*)$": "lodash/$1" } }, "scripts": { diff --git a/requirements.txt b/requirements.txt index 32f91d68b42..4c62a3d1c10 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,18 +1,18 @@ -i https://pypi.python.org/simple amqp==2.5.0 -aniso8601==5.1.0 +aniso8601==6.0.0 autopep8==1.4.4 babel==2.7.0 billiard==3.6.0.0 bleach==2.1.4 -boto3==1.9.163 -botocore==1.12.163 +boto3==1.9.180 +botocore==1.12.180 braintree==3.49.0 cachetools==3.1.1 cairocffi==1.0.2 cairosvg==2.4.0 celery[redis]==4.3.0 -certifi==2019.3.9 +certifi==2019.6.16 cffi==1.12.3 chardet==3.0.4 cssselect2==0.2.1 @@ -25,8 +25,8 @@ django-babel==0.6.2 django-bootstrap4==0.0.8 django-cache-url==3.0.0 django-countries==5.3.3 -django-debug-toolbar-request-history==0.0.10 -django-debug-toolbar==1.11 +django-debug-toolbar-request-history==0.0.11 +django-debug-toolbar==2.0 django-elasticsearch-dsl==0.5.1 django-filter==2.1.0 django-graphql-jwt==0.2.1 @@ -46,24 +46,24 @@ django-storages[google]==1.7.1 django-templated-email==2.3.0 django-versatileimagefield==1.10 django-webpack-loader==0.6.0 -django==2.2.2 +django==2.2.3 docutils==0.14 elasticsearch-dsl==6.0.1 elasticsearch==6.3.1 faker==1.0.7 freezegun==0.3.12 -google-api-core==1.11.1 +google-api-core==1.13.0 google-auth==1.6.3 -google-cloud-core==1.0.1 +google-cloud-core==1.0.2 google-cloud-storage==1.16.1 -google-i18n-address==2.3.4 +google-i18n-address==2.3.5 google-measurement-protocol==1.0.0 google-resumable-media==0.3.2 googleapis-common-protos==1.6.0 gprof2dot==2016.10.13 -graphene-django-optimizer==0.4.0 -graphene-django==2.2.0 -graphene==2.1.5 +graphene-django-optimizer==0.4.2 +graphene-django==2.3.2 +graphene==2.1.6 graphql-core==2.2 graphql-relay==0.4.5 html5lib==1.0.1 @@ -72,7 +72,7 @@ ipaddress==1.0.22 jinja2==2.10.1 jmespath==0.9.4 jsonfield==2.0.2 -kombu==4.6.1 +kombu==4.6.3 markdown==3.1.1 markupsafe==1.1.1 maxminddb-geolite2==2018.703 @@ -80,12 +80,12 @@ maxminddb==1.4.1 measurement==2.0.1 mpmath==1.1.0 oauthlib==3.0.1 -phonenumberslite==8.10.13 +phonenumberslite==8.10.14 pillow==5.4.1 prices==1.0.0 promise==2.2.1 protobuf==3.8.0 -psycopg2-binary==2.8.2 +psycopg2-binary==2.8.3 purl==1.5 pyasn1-modules==0.2.5 pyasn1==0.4.5 @@ -100,7 +100,6 @@ pytz==2019.1 raven==6.9.0 razorpay==1.2.0 redis==3.2.1 -relativetimebuilder==1.0.0 requests-oauthlib==1.2.0 requests==2.22.0 rsa==4.0 @@ -111,11 +110,11 @@ six==1.12.0 social-auth-app-django==3.1.0 social-auth-core==3.2.0 sqlparse==0.3.0 -stripe==2.29.4 +stripe==2.32.0 sympy==1.4 text-unidecode==1.2 tinycss2==1.0.2 -typing==3.6.6 +typing==3.7.4 urllib3==1.25.3 uwsgi==2.0.18 ; platform_system != 'Windows' vine==1.3.0 diff --git a/requirements_dev.txt b/requirements_dev.txt index f7b33f74c4e..f71555f5b86 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -7,28 +7,28 @@ atomicwrites==1.3.0 attrs==19.1.0 beautifultable==0.7.0 black==19.3b0 -certifi==2019.3.9 +certifi==2019.6.16 cfgv==2.0.0 chardet==3.0.4 click==7.0 codecov==2.0.15 colorama==0.4.1 coverage==4.5.3 -django-extensions==2.1.7 -django==2.2.2 +django-extensions==2.1.9 +django==2.2.3 entrypoints==0.3 execnet==1.6.0 filelock==3.0.12 flake8==3.7.7 -identify==1.4.3 +identify==1.4.5 idna==2.8 -importlib-metadata==0.17 -isort==4.3.20 +importlib-metadata==0.18 +isort==4.3.21 jinja2==2.10.1 lazy-object-proxy==1.4.1 markupsafe==1.1.1 mccabe==0.6.1 -more-itertools==7.0.0 ; python_version > '2.7' +more-itertools==7.1.0 multidict==4.5.2 nodeenv==1.3.3 packaging==19.0 @@ -44,30 +44,30 @@ pylint-plugin-utils==0.5 pylint==2.3.1 pyparsing==2.4.0 pytest-cov==2.7.1 -pytest-django-queries==1.0.0 -pytest-django==3.5.0 +pytest-django-queries==1.1.0 +pytest-django==3.5.1 pytest-forked==1.0.2 pytest-mock==1.10.4 pytest-vcr==1.0.2 -pytest-xdist==1.28.0 -pytest==4.6.2 +pytest-xdist==1.29.0 +pytest==5.0.0 python-slugify==1.2.6 pytz==2019.1 pyyaml==5.1.1 requests==2.22.0 six==1.12.0 -snowballstemmer==1.2.1 +snowballstemmer==1.9.0 sqlparse==0.3.0 toml==0.10.0 -tox==3.12.1 +tox==3.13.1 transifex-client==0.13.6 typed-ast==1.4.0 ; implementation_name == 'cpython' -unidecode==1.0.23 +unidecode==1.1.1 urllib3==1.25.3 vcrpy==2.0.1 -virtualenv==16.6.0 +virtualenv==16.6.1 wcwidth==0.1.7 -wrapt==1.11.1 +wrapt==1.11.2 yapf==0.27.0 yarl==1.3.0 ; python_version >= '3.4' zipp==0.5.1 diff --git a/saleor/account/i18n.py b/saleor/account/i18n.py index a192a8d5e26..e5e9924893e 100644 --- a/saleor/account/i18n.py +++ b/saleor/account/i18n.py @@ -3,13 +3,11 @@ import i18naddress from django import forms from django.forms.forms import BoundField -from django.utils.translation import pgettext_lazy, ugettext_lazy as _ +from django.utils.translation import pgettext_lazy from django_countries import countries -from phonenumber_field.phonenumber import PhoneNumber -from phonenumbers import NumberParseException -from phonenumbers.phonenumberutil import is_possible_number from .models import Address +from .validators import validate_possible_number from .widgets import DatalistTextWidget, PhonePrefixWidget COUNTRY_FORMS = {} @@ -145,26 +143,12 @@ def clean(self): country = data.get("country") if phone: try: - data["phone"] = clean_phone_for_country(phone, country) + data["phone"] = validate_possible_number(phone, country) except forms.ValidationError as error: self.add_error("phone", error) return data -def clean_phone_for_country(phone, country): - error = _("The phone number entered is not valid.") - error_code = "invalid_phone_number" - if phone: - try: - phone = PhoneNumber.from_string(phone, country) - except NumberParseException: - raise forms.ValidationError(error, code=error_code) - else: - if not is_possible_number(phone): - raise forms.ValidationError(error, code=error_code) - return phone - - class CountryAwareAddressForm(AddressForm): I18N_MAPPING = [ diff --git a/saleor/account/migrations/0028_user_private_meta.py b/saleor/account/migrations/0028_user_private_meta.py new file mode 100644 index 00000000000..8f447ed3480 --- /dev/null +++ b/saleor/account/migrations/0028_user_private_meta.py @@ -0,0 +1,22 @@ +# Generated by Django 2.2.1 on 2019-05-31 10:44 + +import django.contrib.postgres.fields.jsonb +from django.db import migrations +import saleor.core.utils.json_serializer + + +class Migration(migrations.Migration): + + dependencies = [("account", "0027_customerevent")] + + operations = [ + migrations.AddField( + model_name="user", + name="private_meta", + field=django.contrib.postgres.fields.jsonb.JSONField( + blank=True, + default=dict, + encoder=saleor.core.utils.json_serializer.CustomJsonEncoder, + ), + ) + ] diff --git a/saleor/account/models.py b/saleor/account/models.py index a7c59af3183..8ca624fefbb 100644 --- a/saleor/account/models.py +++ b/saleor/account/models.py @@ -151,6 +151,8 @@ class User(PermissionsMixin, AbstractBaseUser): ) avatar = VersatileImageField(upload_to="user-avatars", blank=True, null=True) + private_meta = JSONField(blank=True, default=dict, encoder=CustomJsonEncoder) + USERNAME_FIELD = "email" objects = UserManager() @@ -187,6 +189,14 @@ def get_ajax_label(self): return "%s %s (%s)" % (address.first_name, address.last_name, self.email) return self.email + def get_private_meta(self, label): + return self.private_meta.get(label, {}) + + def store_private_meta(self, label, key, value): + if label not in self.private_meta: + self.private_meta[label] = {} + self.private_meta[label][str(key)] = value + class CustomerNote(models.Model): user = models.ForeignKey( diff --git a/saleor/account/validators.py b/saleor/account/validators.py index 5eb99dc0716..4bfcb0ad8fe 100644 --- a/saleor/account/validators.py +++ b/saleor/account/validators.py @@ -4,9 +4,14 @@ from phonenumbers.phonenumberutil import is_possible_number -def validate_possible_number(value, country=None): - phone_number = to_python(value, country) - if phone_number and not is_possible_number(phone_number): +def validate_possible_number(phone, country=None): + phone_number = to_python(phone, country) + if ( + phone_number + and not is_possible_number(phone_number) + or not phone_number.is_valid() + ): raise ValidationError( _("The phone number entered is not valid."), code="invalid_phone_number" ) + return phone_number diff --git a/saleor/checkout/forms.py b/saleor/checkout/forms.py index 79631eff6aa..e6404a54951 100644 --- a/saleor/checkout/forms.py +++ b/saleor/checkout/forms.py @@ -1,18 +1,19 @@ """Checkout-related forms and fields.""" -from datetime import date from typing import Any from django import forms from django.conf import settings from django.core.exceptions import NON_FIELD_ERRORS +from django.utils import timezone from django.utils.encoding import smart_text from django.utils.safestring import mark_safe from django.utils.translation import npgettext_lazy, pgettext_lazy -from django_countries.fields import LazyTypedChoiceField +from django_countries.fields import Country, LazyTypedChoiceField from ..core.exceptions import InsufficientStock +from ..core.taxes import display_gross_prices +from ..core.taxes.interface import apply_taxes_to_shipping, calculate_checkout_subtotal from ..core.utils import format_money -from ..core.utils.taxes import display_gross_prices, get_taxed_shipping_price from ..discount.models import NotApplicable, Voucher from ..shipping.models import ShippingMethod, ShippingZone from ..shipping.utils import get_shipping_price_estimate @@ -69,7 +70,8 @@ def __init__(self, *args, **kwargs): self.checkout = kwargs.pop("checkout") self.product = kwargs.pop("product") self.discounts = kwargs.pop("discounts", ()) - self.taxes = kwargs.pop("taxes", {}) + self.country = kwargs.pop("country", {}) + self.taxes = kwargs.pop("taxes", None) super().__init__(*args, **kwargs) def add_error_i18n(self, field, error_name, fmt: Any = tuple()): @@ -188,7 +190,6 @@ class CountryForm(forms.Form): ) def __init__(self, *args, **kwargs): - self.taxes = kwargs.pop("taxes", {}) super().__init__(*args, **kwargs) available_countries = { (country.code, country.name) @@ -203,8 +204,10 @@ def get_shipping_price_estimate(self, price, weight): """Return a shipping price range for given order for the selected country. """ - code = self.cleaned_data["country"] - return get_shipping_price_estimate(price, weight, code, self.taxes) + country = self.cleaned_data["country"] + if isinstance(country, str): + country = Country(country) + return get_shipping_price_estimate(price, weight, country) class AnonymousUserShippingForm(forms.ModelForm): @@ -289,16 +292,17 @@ class ShippingMethodChoiceField(forms.ModelChoiceField): prices. """ - taxes = None + shipping_address = None widget = forms.RadioSelect() def label_from_instance(self, obj): """Return a friendly label for the shipping method.""" - price = get_taxed_shipping_price(obj.price, self.taxes) if display_gross_prices(): - price = price.gross + price = apply_taxes_to_shipping( + obj.price, shipping_address=self.shipping_address + ).gross else: - price = price.net + price = obj.price price_html = format_money(price) label = mark_safe("%s %s" % (obj.name, price_html)) return label @@ -317,16 +321,16 @@ class Meta: def __init__(self, *args, **kwargs): discounts = kwargs.pop("discounts") - taxes = kwargs.pop("taxes") super().__init__(*args, **kwargs) - country_code = self.instance.shipping_address.country.code + shipping_address = self.instance.shipping_address + country_code = shipping_address.country.code qs = ShippingMethod.objects.applicable_shipping_methods( - price=self.instance.get_subtotal(discounts, taxes).gross, + price=calculate_checkout_subtotal(self.instance, discounts).gross, weight=self.instance.get_total_weight(), country_code=country_code, ) self.fields["shipping_method"].queryset = qs - self.fields["shipping_method"].taxes = taxes + self.fields["shipping_method"].shipping_address = shipping_address if self.initial.get("shipping_method") is None: shipping_methods = qs.all() @@ -378,7 +382,7 @@ class Meta: def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields["voucher"].queryset = Voucher.objects.active(date=date.today()) + self.fields["voucher"].queryset = Voucher.objects.active(date=timezone.now()) def clean(self): from .utils import get_voucher_discount_for_checkout diff --git a/saleor/checkout/migrations/0015_auto_20181017_1346.py b/saleor/checkout/migrations/0015_auto_20181017_1346.py index d98911e4d73..bbec093e155 100644 --- a/saleor/checkout/migrations/0015_auto_20181017_1346.py +++ b/saleor/checkout/migrations/0015_auto_20181017_1346.py @@ -1,8 +1,9 @@ # Generated by Django 2.1.2 on 2018-10-17 18:46 +import django_prices.models from django.conf import settings from django.db import migrations -import django_prices.models + import saleor.core @@ -17,7 +18,7 @@ class Migration(migrations.Migration): field=django_prices.models.MoneyField( currency=settings.DEFAULT_CURRENCY, decimal_places=2, - default=saleor.core.utils.taxes.zero_money, + default=saleor.core.taxes.zero_money, max_digits=12, ), ) diff --git a/saleor/checkout/models.py b/saleor/checkout/models.py index ada30ff0cab..3f4698ad499 100644 --- a/saleor/checkout/models.py +++ b/saleor/checkout/models.py @@ -11,7 +11,7 @@ from django_prices.models import MoneyField from ..account.models import Address -from ..core.utils.taxes import ZERO_MONEY, ZERO_TAXED_MONEY, zero_money +from ..core.taxes import zero_money from ..core.weight import zero_weight from ..giftcard.models import GiftCard from ..shipping.models import ShippingMethod @@ -94,34 +94,33 @@ def is_shipping_required(self): """Return `True` if any of the lines requires shipping.""" return any(line.is_shipping_required() for line in self) - def get_shipping_price(self, taxes): + def get_shipping_price(self): return ( - self.shipping_method.get_total(taxes) + self.shipping_method.get_total() if self.shipping_method and self.is_shipping_required() - else ZERO_TAXED_MONEY + else zero_money() ) - def get_subtotal(self, discounts=None, taxes=None): + def get_subtotal(self, discounts=None): """Return the total cost of the checkout prior to shipping.""" - subtotals = (line.get_total(discounts, taxes) for line in self) - return sum(subtotals, ZERO_TAXED_MONEY) + subtotals = (line.get_total(discounts) for line in self) + return sum(subtotals, zero_money(currency=settings.DEFAULT_CURRENCY)) - def get_total(self, discounts=None, taxes=None): + def get_total(self, discounts=None): """Return the total cost of the checkout.""" total = ( - self.get_subtotal(discounts, taxes) - + self.get_shipping_price(taxes) + self.get_subtotal(discounts) + + self.get_shipping_price() - self.discount_amount - - self.get_total_gift_cards_balance() ) - return max(total, ZERO_TAXED_MONEY) + return max(total, zero_money(total.currency)) def get_total_gift_cards_balance(self): """Return the total balance of the gift cards assigned to the checkout.""" balance = self.gift_cards.aggregate(models.Sum("current_balance"))[ "current_balance__sum" ] - return balance or ZERO_MONEY + return balance or zero_money(currency=settings.DEFAULT_CURRENCY) def get_total_weight(self): # Cannot use `sum` as it parses an empty Weight to an int @@ -183,9 +182,9 @@ def __getstate__(self): def __setstate__(self, data): self.variant, self.quantity = data - def get_total(self, discounts=None, taxes=None): + def get_total(self, discounts=None): """Return the total price of this line.""" - amount = self.quantity * self.variant.get_price(discounts, taxes) + amount = self.quantity * self.variant.get_price(discounts) return amount.quantize(CENTS) def is_shipping_required(self): diff --git a/saleor/checkout/utils.py b/saleor/checkout/utils.py index edea309c3e2..903ff4f36c8 100644 --- a/saleor/checkout/utils.py +++ b/saleor/checkout/utils.py @@ -3,11 +3,11 @@ from functools import wraps from uuid import UUID -from django.conf import settings from django.contrib import messages from django.core.exceptions import ValidationError from django.db import transaction from django.db.models import Sum +from django.utils import timezone from django.utils.encoding import smart_text from django.utils.translation import get_language, pgettext, pgettext_lazy from prices import TaxedMoneyRange @@ -17,13 +17,22 @@ from ..account.utils import store_user_address from ..core.demo_obfuscators import obfuscate_checkout, obfuscate_order from ..core.exceptions import InsufficientStock +from ..core.taxes import quantize_price, zero_money, zero_taxed_money +from ..core.taxes.interface import ( + calculate_checkout_line_total, + calculate_checkout_shipping, + calculate_checkout_subtotal, + calculate_checkout_total, + postprocess_order_creation, + preprocess_order_creation, + taxes_are_enabled, +) from ..core.utils import to_local_currency from ..core.utils.promo_code import ( InvalidPromoCode, promo_code_is_gift_card, promo_code_is_voucher, ) -from ..core.utils.taxes import ZERO_MONEY, get_tax_rate_by_name, get_taxes_for_country from ..discount import VoucherType from ..discount.models import NotApplicable, Voucher from ..discount.utils import ( @@ -40,7 +49,6 @@ from ..order import events from ..order.emails import send_order_confirmation from ..order.models import Order, OrderLine -from ..product.models import ProductVariant from ..shipping.models import ShippingMethod from . import AddressType, logger from .forms import ( @@ -94,38 +102,85 @@ def remove_unavailable_variants(checkout): add_variant_to_checkout(checkout, line.variant, quantity, replace=True) -def get_variant_prices_from_lines(lines): - """Get's price of each individual item within the lines.""" - return [line.variant.get_price() for line in lines for item in range(line.quantity)] +def get_prices_of_discounted_specific_product(lines, voucher, discounts=None): + """Get prices of variants belonging to the discounted specific products. + + Specific products are products, collections and categories. + Product must be assigned directly to the discounted category, assigning + product to child category won't work. + """ + discounted_products = voucher.products.all() + discounted_categories = set(voucher.categories.all()) + discounted_collections = set(voucher.collections.all()) + + line_prices = [] + discounted_lines = [] + if discounted_products or discounted_collections or discounted_categories: + for line in lines: + line_product = line.variant.product + line_category = line.variant.product.category + line_collections = set(line.variant.product.collections.all()) + if line.variant and ( + line_product in discounted_products + or line_category in discounted_categories + or line_collections.intersection(discounted_collections) + ): + discounted_lines.append(line) + else: + # If there's no discounted products, collections or categories, + # it means that all products are discounted + discounted_lines.extend(list(lines)) + + for line in discounted_lines: + line_total = calculate_checkout_line_total(line, discounts or []).gross + line_unit_price = quantize_price( + (line_total / line.quantity), line_total.currency + ) + line_prices.extend([line_unit_price] * line.quantity) + + return line_prices -def get_prices_of_discounted_products(lines, discounted_products): +def get_prices_of_discounted_products(checkout, discounted_products, discounts=None): """Get prices of variants belonging to the discounted products.""" # If there's no discounted_products, # it means that all products are discounted + line_prices = [] if discounted_products: - lines = (line for line in lines if line.variant.product in discounted_products) - return get_variant_prices_from_lines(lines) + for line in checkout: + if line.variant.product in discounted_products: + line_total = calculate_checkout_line_total(line, discounts or []).gross + line_unit_price = quantize_price( + (line_total / line.quantity), line_total.currency + ) + line_prices.extend([line_unit_price] * line.quantity) + return line_prices -def get_prices_of_products_in_discounted_collections(lines, discounted_collections): +def get_prices_of_products_in_discounted_collections( + checkout, discounted_collections, discounts=None +): """Get prices of variants belonging to the discounted collections.""" # If there's no discounted collections, # it means that all of them are discounted + line_prices = [] if discounted_collections: - discounted_collections = set(discounted_collections) - lines = ( - line - for line in lines - if line.variant - and set(line.variant.product.collections.all()).intersection( - discounted_collections - ) - ) - return get_variant_prices_from_lines(lines) - - -def get_prices_of_products_in_discounted_categories(lines, discounted_categories): + for line in checkout: + if not line.variant: + continue + product_collections = line.variant.product.collections.all() + if set(product_collections).intersection(discounted_collections): + line_total = calculate_checkout_line_total(line, discounts or []).gross + line_unit_price = quantize_price( + (line_total / line.quantity), line_total.currency + ) + line_prices.extend([line_unit_price] * line.quantity) + return line_prices + + +def get_prices_of_products_in_discounted_categories( + checkout, discounted_categories, discounts=None +): """Get prices of variants belonging to the discounted categories. Product must be assigned directly to the discounted category, assigning @@ -133,14 +188,20 @@ def get_prices_of_products_in_discounted_categories(lines, discounted_categories """ # If there's no discounted collections, # it means that all of them are discounted + line_prices = [] if discounted_categories: discounted_categories = set(discounted_categories) - lines = ( - line - for line in lines - if line.variant and line.variant.product.category in discounted_categories - ) - return get_variant_prices_from_lines(lines) + for line in checkout: + if not line.variant: + continue + product_category = line.variant.product.category + if product_category in discounted_categories: + line_total = calculate_checkout_line_total(line, discounts or []).gross + line_unit_price = quantize_price( + (line_total / line.quantity), line_total.currency + ) + line_prices.extend([line_unit_price] * line.quantity) + return line_prices def check_product_availability_and_warn(request, checkout): @@ -645,26 +706,30 @@ def change_shipping_address_in_checkout(checkout, address): checkout.save(update_fields=["shipping_address"]) -def get_checkout_context( - checkout, discounts, taxes, currency=None, shipping_range=None -): +def get_checkout_context(checkout, discounts, currency=None, shipping_range=None): """Data shared between views in checkout process.""" - checkout_total = checkout.get_total(discounts, taxes) + checkout_total = ( + calculate_checkout_total(checkout=checkout, discounts=discounts) + - checkout.get_total_gift_cards_balance() + ) + checkout_total = max(checkout_total, zero_taxed_money(checkout_total.currency)) + checkout_subtotal = calculate_checkout_subtotal(checkout, discounts) + shipping_price = calculate_checkout_shipping(checkout, discounts) + shipping_required = checkout.is_shipping_required() - checkout_subtotal = checkout.get_subtotal(discounts, taxes) total_with_shipping = TaxedMoneyRange( start=checkout_subtotal, stop=checkout_subtotal ) if shipping_required and shipping_range: - total_with_shipping = shipping_range + checkout_subtotal + total_with_shipping = shipping_range + checkout_subtotal.net context = { "checkout": checkout, - "checkout_are_taxes_handled": bool(taxes), + "checkout_are_taxes_handled": taxes_are_enabled(), "checkout_lines": [ - (line, line.get_total(discounts, taxes)) for line in checkout + (line, calculate_checkout_line_total(line, discounts)) for line in checkout ], - "checkout_shipping_price": checkout.get_shipping_price(taxes), + "checkout_shipping_price": shipping_price, "checkout_subtotal": checkout_subtotal, "checkout_total": checkout_total, "shipping_required": checkout.is_shipping_required(), @@ -681,7 +746,7 @@ def get_checkout_context( return context -def _get_shipping_voucher_discount_for_checkout(voucher, checkout): +def _get_shipping_voucher_discount_for_checkout(voucher, checkout, discounts=None): """Calculate discount value for a voucher of shipping type.""" if not checkout.is_shipping_required(): msg = pgettext( @@ -704,48 +769,57 @@ def _get_shipping_voucher_discount_for_checkout(voucher, checkout): raise NotApplicable(msg) return get_shipping_voucher_discount( - voucher, checkout.get_subtotal(), shipping_method.get_total() + voucher, + calculate_checkout_subtotal(checkout, discounts).gross, + calculate_checkout_shipping(checkout, discounts).gross, + checkout.quantity, ) -def _get_products_voucher_discount(order_or_checkout, voucher): +def _get_products_voucher_discount(checkout, voucher, discounts=None): """Calculate products discount value for a voucher, depending on its type. """ - if voucher.type == VoucherType.PRODUCT: + prices = None + if voucher.type == VoucherType.SPECIFIC_PRODUCT: + prices = get_prices_of_discounted_specific_product(checkout, voucher, discounts) + elif voucher.type == VoucherType.PRODUCT: prices = get_prices_of_discounted_products( - order_or_checkout.lines.all(), voucher.products.all() + checkout, voucher.products.all(), discounts ) elif voucher.type == VoucherType.COLLECTION: prices = get_prices_of_products_in_discounted_collections( - order_or_checkout.lines.all(), voucher.collections.all() + checkout, voucher.collections.all(), discounts ) elif voucher.type == VoucherType.CATEGORY: prices = get_prices_of_products_in_discounted_categories( - order_or_checkout.lines.all(), voucher.categories.all() + checkout, voucher.categories.all(), discounts ) if not prices: msg = pgettext( "Voucher not applicable", "This offer is only valid for selected items." ) raise NotApplicable(msg) - return get_products_voucher_discount(voucher, prices) + subtotal = calculate_checkout_subtotal(checkout, discounts).gross + return get_products_voucher_discount(voucher, prices, subtotal, checkout.quantity) -def get_voucher_discount_for_checkout(voucher, checkout): +def get_voucher_discount_for_checkout(voucher, checkout, discounts=None): """Calculate discount value depending on voucher and discount types. Raise NotApplicable if voucher of given type cannot be applied. """ - if voucher.type == VoucherType.VALUE: - return get_value_voucher_discount(voucher, checkout.get_subtotal()) + if voucher.type == VoucherType.ENTIRE_ORDER: + subtotal = calculate_checkout_subtotal(checkout, discounts).gross + return get_value_voucher_discount(voucher, subtotal, checkout.quantity) if voucher.type == VoucherType.SHIPPING: - return _get_shipping_voucher_discount_for_checkout(voucher, checkout) + return _get_shipping_voucher_discount_for_checkout(voucher, checkout, discounts) if voucher.type in ( VoucherType.PRODUCT, VoucherType.COLLECTION, VoucherType.CATEGORY, + VoucherType.SPECIFIC_PRODUCT, ): - return _get_products_voucher_discount(checkout, voucher) + return _get_products_voucher_discount(checkout, voucher, discounts) raise NotImplementedError("Unknown discount type") @@ -753,7 +827,7 @@ def get_voucher_for_checkout(checkout, vouchers=None, with_lock=False): """Return voucher with voucher code saved in checkout if active or None.""" if checkout.voucher_code is not None: if vouchers is None: - vouchers = Voucher.objects.active(date=date.today()) + vouchers = Voucher.objects.active(date=timezone.now()) try: qs = vouchers if with_lock: @@ -764,7 +838,7 @@ def get_voucher_for_checkout(checkout, vouchers=None, with_lock=False): return None -def recalculate_checkout_discount(checkout, discounts, taxes): +def recalculate_checkout_discount(checkout, discounts): """Recalculate `checkout.discount` based on the voucher. Will clear both voucher and discount if the discount is no longer @@ -773,11 +847,11 @@ def recalculate_checkout_discount(checkout, discounts, taxes): voucher = get_voucher_for_checkout(checkout) if voucher is not None: try: - discount = get_voucher_discount_for_checkout(voucher, checkout) + discount = get_voucher_discount_for_checkout(voucher, checkout, discounts) except NotApplicable: remove_voucher_from_checkout(checkout) else: - subtotal = checkout.get_subtotal(discounts, taxes).gross + subtotal = calculate_checkout_subtotal(checkout, discounts).gross checkout.discount_amount = min(discount, subtotal) checkout.discount_name = str(voucher) checkout.translated_discount_name = ( @@ -796,42 +870,42 @@ def recalculate_checkout_discount(checkout, discounts, taxes): remove_voucher_from_checkout(checkout) -def add_promo_code_to_checkout(checkout: Checkout, promo_code: str): +def add_promo_code_to_checkout(checkout: Checkout, promo_code: str, discounts=None): """Add gift card or voucher data to checkout. Raise InvalidPromoCode if promo code does not match to any voucher or gift card. """ if promo_code_is_voucher(promo_code): - add_voucher_code_to_checkout(checkout, promo_code) + add_voucher_code_to_checkout(checkout, promo_code, discounts) elif promo_code_is_gift_card(promo_code): add_gift_card_code_to_checkout(checkout, promo_code) else: raise InvalidPromoCode() -def add_voucher_code_to_checkout(checkout: Checkout, voucher_code: str): +def add_voucher_code_to_checkout(checkout: Checkout, voucher_code: str, discounts=None): """Add voucher data to checkout by code. Raise InvalidPromoCode() if voucher of given type cannot be applied. """ try: - voucher = Voucher.objects.active(date=date.today()).get(code=voucher_code) + voucher = Voucher.objects.active(date=timezone.now()).get(code=voucher_code) except Voucher.DoesNotExist: raise InvalidPromoCode() try: - add_voucher_to_checkout(checkout, voucher) + add_voucher_to_checkout(checkout, voucher, discounts) except NotApplicable: raise ValidationError( {"promo_code": "Voucher is not applicable to that checkout."} ) -def add_voucher_to_checkout(checkout: Checkout, voucher: Voucher): +def add_voucher_to_checkout(checkout: Checkout, voucher: Voucher, discounts=None): """Add voucher data to checkout. Raise NotApplicable if voucher of given type cannot be applied. """ - discount_amount = get_voucher_discount_for_checkout(voucher, checkout) + discount_amount = get_voucher_discount_for_checkout(voucher, checkout, discounts) checkout.voucher_code = voucher.code checkout.discount_name = voucher.name checkout.translated_discount_name = ( @@ -868,7 +942,7 @@ def remove_voucher_from_checkout(checkout: Checkout): checkout.voucher_code = None checkout.discount_name = None checkout.translated_discount_name = None - checkout.discount_amount = ZERO_MONEY + checkout.discount_amount = zero_money() checkout.save( update_fields=[ "voucher_code", @@ -879,24 +953,13 @@ def remove_voucher_from_checkout(checkout: Checkout): ) -def get_taxes_for_checkout(checkout, default_taxes): - """Return taxes (if handled) due to shipping address or default one.""" - if not settings.VATLAYER_ACCESS_KEY: - return None - - if checkout.shipping_address: - return get_taxes_for_country(checkout.shipping_address.country) - - return default_taxes - - -def is_valid_shipping_method(checkout, taxes, discounts): +def is_valid_shipping_method(checkout, discounts): """Check if shipping method is valid and remove (if not).""" if not checkout.shipping_method: return False valid_methods = ShippingMethod.objects.applicable_shipping_methods( - price=checkout.get_subtotal(discounts, taxes).gross, + price=calculate_checkout_subtotal(checkout, discounts).gross, weight=checkout.get_total_weight(), country_code=checkout.shipping_address.country.code, ) @@ -940,7 +1003,7 @@ def _get_voucher_data_for_order(checkout): } -def _process_shipping_data_for_order(checkout, taxes): +def _process_shipping_data_for_order(checkout, shipping_price): """Fetch, process and return shipping data from checkout.""" if not checkout.is_shipping_required(): return {} @@ -956,7 +1019,7 @@ def _process_shipping_data_for_order(checkout, taxes): "shipping_address": shipping_address, "shipping_method": checkout.shipping_method, "shipping_method_name": smart_text(checkout.shipping_method), - "shipping_price": checkout.get_shipping_price(taxes), + "shipping_price": shipping_price, "weight": checkout.get_total_weight(), } @@ -991,13 +1054,13 @@ def validate_gift_cards(checkout: Checkout): raise NotApplicable(msg) -def create_line_for_order( - variant: ProductVariant, quantity: int, discounts, taxes -) -> OrderLine: +def create_line_for_order(checkout_line: "CheckoutLine", discounts) -> OrderLine: """ :raises InsufficientStock: when there is not enough items in stock for this variant """ + quantity = checkout_line.quantity + variant = checkout_line.variant variant.check_quantity(quantity) product_name = variant.display_product() @@ -1006,6 +1069,10 @@ def create_line_for_order( if translated_product_name == product_name: translated_product_name = "" + total_line_price = calculate_checkout_line_total(checkout_line, discounts) + unit_price = quantize_price( + total_line_price / checkout_line.quantity, total_line_price.currency + ) line = OrderLine( product_name=product_name, translated_product_name=translated_product_name, @@ -1013,16 +1080,14 @@ def create_line_for_order( is_shipping_required=variant.is_shipping_required(), quantity=quantity, variant=variant, - unit_price=variant.get_price(discounts, taxes), - tax_rate=get_tax_rate_by_name(variant.product.tax_rate, taxes), + unit_price=unit_price, + tax_rate=unit_price.tax / unit_price.net, ) return line -def prepare_order_data( - *, checkout: Checkout, tracking_code: str, discounts, taxes -) -> dict: +def prepare_order_data(*, checkout: Checkout, tracking_code: str, discounts) -> dict: """ Runs checks and returns all the data from a given checkout to create an order. @@ -1030,24 +1095,26 @@ def prepare_order_data( """ order_data = {} - order_data.update(_process_shipping_data_for_order(checkout, taxes)) + total = ( + calculate_checkout_total(checkout=checkout, discounts=discounts) + - checkout.get_total_gift_cards_balance() + ) + total = max(total, zero_taxed_money(total.currency)) + + shipping_total = calculate_checkout_shipping(checkout, discounts) + order_data.update(_process_shipping_data_for_order(checkout, shipping_total)) order_data.update(_process_user_data_for_order(checkout)) order_data.update( { "language_code": get_language(), "tracking_client_id": tracking_code, - "total": checkout.get_total(discounts, taxes), + "total": total, } ) order_data["lines"] = [ - create_line_for_order( - variant=line.variant, - quantity=line.quantity, - discounts=discounts, - taxes=taxes, - ) - for line in checkout # type: CheckoutLine + create_line_for_order(checkout_line=line, discounts=discounts) + for line in checkout ] # validate checkout gift cards @@ -1058,11 +1125,12 @@ def prepare_order_data( # assign gift cards to the order order_data["total_price_left"] = ( - checkout.get_subtotal(discounts, taxes) - + checkout.get_shipping_price(taxes) + calculate_checkout_subtotal(checkout, discounts) + + shipping_total - checkout.discount_amount ).gross + preprocess_order_creation(checkout, discounts) return order_data @@ -1114,6 +1182,8 @@ def create_order(*, checkout: Checkout, order_data: dict, user: User) -> Order: # assign checkout payments to the order checkout.payments.update(order=order) + postprocess_order_creation(order) + # Create the order placed events.order_created_event(order=order, user=user) @@ -1122,23 +1192,29 @@ def create_order(*, checkout: Checkout, order_data: dict, user: User) -> Order: return order -def is_fully_paid(checkout: Checkout, taxes, discounts): +def is_fully_paid(checkout: Checkout, discounts): """Check if provided payment methods cover the checkout's total amount. Note that these payments may not be captured or charged at all.""" payments = [payment for payment in checkout.payments.all() if payment.is_active] total_paid = sum([p.total for p in payments]) - checkout_total = checkout.get_total(discounts=discounts, taxes=taxes).gross.amount - return total_paid >= checkout_total + checkout_total = ( + calculate_checkout_total(checkout=checkout, discounts=discounts) + - checkout.get_total_gift_cards_balance() + ) + checkout_total = max( + checkout_total, zero_taxed_money(checkout_total.currency) + ).gross + return total_paid >= checkout_total.amount -def clean_checkout(checkout: Checkout, taxes, discounts): +def clean_checkout(checkout: Checkout, discounts): """Check if checkout can be completed.""" if checkout.is_shipping_required(): if not checkout.shipping_method: raise ValidationError("Shipping method is not set") if not checkout.shipping_address: raise ValidationError("Shipping address is not set") - if not is_valid_shipping_method(checkout, taxes, discounts): + if not is_valid_shipping_method(checkout, discounts): raise ValidationError( "Shipping method is not valid for your shipping address" ) @@ -1146,7 +1222,7 @@ def clean_checkout(checkout: Checkout, taxes, discounts): if not checkout.billing_address: raise ValidationError("Billing address is not set") - if not is_fully_paid(checkout, taxes, discounts): + if not is_fully_paid(checkout, discounts): raise ValidationError( "Provided payment methods can not cover the checkout's total " "amount" ) diff --git a/saleor/checkout/views/__init__.py b/saleor/checkout/views/__init__.py index 42bfe892fba..3cdfc250add 100644 --- a/saleor/checkout/views/__init__.py +++ b/saleor/checkout/views/__init__.py @@ -1,11 +1,17 @@ """Checkout related views.""" +from django.conf import settings from django.http import JsonResponse from django.shortcuts import get_object_or_404, redirect, render from django.template.response import TemplateResponse from ...account.forms import LoginForm +from ...core.taxes import ( + get_display_price, + interface as tax_interface, + quantize_price, + zero_taxed_money, +) from ...core.utils import format_money, get_user_shipping_country, to_local_currency -from ...core.utils.taxes import ZERO_TAXED_MONEY, get_display_price from ...shipping.utils import get_shipping_price_estimate from ..forms import CheckoutShippingMethodForm, CountryForm, ReplaceCheckoutLineForm from ..models import Checkout @@ -13,7 +19,6 @@ check_product_availability_and_warn, get_checkout_context, get_or_empty_db_checkout, - get_taxes_for_checkout, is_valid_shipping_method, update_checkout_quantity, ) @@ -71,13 +76,11 @@ def checkout_shipping_address(request, checkout): def checkout_shipping_method(request, checkout): """Display the shipping method selection step.""" discounts = request.discounts - taxes = get_taxes_for_checkout(checkout, request.taxes) - is_valid_shipping_method(checkout, request.taxes, discounts) + is_valid_shipping_method(checkout, discounts) form = CheckoutShippingMethodForm( request.POST or None, discounts=discounts, - taxes=taxes, instance=checkout, initial={"shipping_method": checkout.shipping_method}, ) @@ -85,7 +88,7 @@ def checkout_shipping_method(request, checkout): form.save() return redirect("checkout:summary") - ctx = get_checkout_context(checkout, discounts, taxes) + ctx = get_checkout_context(checkout, discounts) ctx.update({"shipping_method_form": form}) return TemplateResponse(request, "checkout/shipping_method.html", ctx) @@ -109,7 +112,6 @@ def checkout_order_summary(request, checkout): def checkout_index(request, checkout): """Display checkout details.""" discounts = request.discounts - taxes = request.taxes checkout_lines = [] check_product_availability_and_warn(request, checkout) @@ -138,13 +140,14 @@ def checkout_index(request, checkout): variant=line.variant, initial=initial, discounts=discounts, - taxes=taxes, ) + total_line = tax_interface.calculate_checkout_line_total(line, discounts) + variant_price = quantize_price(total_line / line.quantity, total_line.currency) checkout_lines.append( { "variant": line.variant, - "get_price": line.variant.get_price(discounts, taxes), - "get_total": line.get_total(discounts, taxes), + "get_price": variant_price, + "get_total": total_line, "form": form, } ) @@ -152,16 +155,14 @@ def checkout_index(request, checkout): default_country = get_user_shipping_country(request) country_form = CountryForm(initial={"country": default_country}) shipping_price_range = get_shipping_price_estimate( - price=checkout.get_subtotal(discounts, taxes).gross, + price=tax_interface.calculate_checkout_subtotal(checkout, discounts).gross, weight=checkout.get_total_weight(), country_code=default_country, - taxes=taxes, ) context = get_checkout_context( checkout, discounts, - taxes, currency=request.currency, shipping_range=shipping_price_range, ) @@ -178,10 +179,12 @@ def checkout_index(request, checkout): @get_or_empty_db_checkout(checkout_queryset=Checkout.objects.for_display()) def checkout_shipping_options(request, checkout): """Display shipping options to get a price estimate.""" - country_form = CountryForm(request.POST or None, taxes=request.taxes) + country_form = CountryForm(request.POST or None) if country_form.is_valid(): shipping_price_range = country_form.get_shipping_price_estimate( - price=checkout.get_subtotal(request.discounts, request.taxes).gross, + price=tax_interface.calculate_checkout_subtotal( + checkout, request.discounts + ).gross, weight=checkout.get_total_weight(), ) else: @@ -190,7 +193,6 @@ def checkout_shipping_options(request, checkout): checkout_data = get_checkout_context( checkout, request.discounts, - request.taxes, currency=request.currency, shipping_range=shipping_price_range, ) @@ -206,23 +208,23 @@ def update_checkout_line(request, checkout, variant_id): checkout_line = get_object_or_404(checkout.lines, variant_id=variant_id) discounts = request.discounts - taxes = request.taxes status = None form = ReplaceCheckoutLineForm( request.POST, checkout=checkout, variant=checkout_line.variant, discounts=discounts, - taxes=taxes, ) if form.is_valid(): form.save() checkout.refresh_from_db() # Refresh obj from db and confirm that checkout still has this line checkout_line = checkout.lines.filter(variant_id=variant_id).first() - line_total = ZERO_TAXED_MONEY + line_total = zero_taxed_money(currency=settings.DEFAULT_CURRENCY) if checkout_line: - line_total = checkout_line.get_total(discounts, taxes) + line_total = tax_interface.calculate_checkout_line_total( + checkout_line, discounts + ) subtotal = get_display_price(line_total) response = { "variantId": variant_id, @@ -231,7 +233,8 @@ def update_checkout_line(request, checkout, variant_id): "checkout": {"numItems": checkout.quantity, "numLines": len(checkout)}, } - checkout_total = get_display_price(checkout.get_subtotal(discounts, taxes)) + checkout_total = tax_interface.calculate_checkout_subtotal(checkout, discounts) + checkout_total = get_display_price(checkout_total) response["total"] = format_money(checkout_total) local_checkout_total = to_local_currency(checkout_total, request.currency) if local_checkout_total is not None: @@ -259,7 +262,6 @@ def clear_checkout(request, checkout): def checkout_dropdown(request, checkout): """Display a checkout summary suitable for displaying on all pages.""" discounts = request.discounts - taxes = request.taxes def prepare_line_data(line): first_image = line.variant.get_first_image() @@ -270,7 +272,7 @@ def prepare_line_data(line): "variant": line.variant, "quantity": line.quantity, "image": first_image, - "line_total": line.get_total(discounts, taxes), + "line_total": tax_interface.calculate_checkout_line_total(line, discounts), "variant_url": line.variant.get_absolute_url(), } @@ -279,7 +281,7 @@ def prepare_line_data(line): else: data = { "quantity": checkout.quantity, - "total": checkout.get_subtotal(discounts, taxes), + "total": tax_interface.calculate_checkout_subtotal(checkout, discounts), "lines": [prepare_line_data(line) for line in checkout], } diff --git a/saleor/checkout/views/discount.py b/saleor/checkout/views/discount.py index f726b5f4079..fae86d5d48c 100644 --- a/saleor/checkout/views/discount.py +++ b/saleor/checkout/views/discount.py @@ -1,9 +1,9 @@ -from datetime import date from functools import wraps from django.contrib import messages from django.shortcuts import redirect from django.template.response import TemplateResponse +from django.utils import timezone from django.utils.translation import pgettext from django.views.decorators.http import require_POST @@ -12,7 +12,6 @@ from ..models import Checkout from ..utils import ( get_or_empty_db_checkout, - get_taxes_for_checkout, recalculate_checkout_discount, remove_voucher_from_checkout, ) @@ -38,8 +37,7 @@ def func(request, checkout): # if only discount form was used we clear post for other forms request.POST = {} else: - taxes = get_taxes_for_checkout(checkout, request.taxes) - recalculate_checkout_discount(checkout, request.discounts, taxes) + recalculate_checkout_discount(checkout, request.discounts) response = view(request, checkout) if isinstance(response, TemplateResponse): response.context_data["voucher_form"] = voucher_form @@ -59,7 +57,7 @@ def validate_voucher(view): def func(request, checkout): if checkout.voucher_code: try: - Voucher.objects.active(date=date.today()).get( + Voucher.objects.active(date=timezone.now()).get( code=checkout.voucher_code ) except Voucher.DoesNotExist: diff --git a/saleor/checkout/views/shipping.py b/saleor/checkout/views/shipping.py index 0f2dcd4c8e4..e85c63028b7 100644 --- a/saleor/checkout/views/shipping.py +++ b/saleor/checkout/views/shipping.py @@ -3,7 +3,6 @@ from ..utils import ( get_checkout_context, - get_taxes_for_checkout, update_shipping_address_in_anonymous_checkout, update_shipping_address_in_checkout, ) @@ -18,8 +17,7 @@ def anonymous_user_shipping_address_view(request, checkout): if updated: return redirect("checkout:shipping-method") - taxes = get_taxes_for_checkout(checkout, request.taxes) - ctx = get_checkout_context(checkout, request.discounts, taxes) + ctx = get_checkout_context(checkout, request.discounts) ctx.update({"address_form": address_form, "user_form": user_form}) return TemplateResponse(request, "checkout/shipping_address.html", ctx) @@ -37,12 +35,10 @@ def user_shipping_address_view(request, checkout): addresses_form, address_form, updated = update_shipping_address_in_checkout( checkout, user_addresses, request.POST or None, request.country ) - if updated: return redirect("checkout:shipping-method") - taxes = get_taxes_for_checkout(checkout, request.taxes) - ctx = get_checkout_context(checkout, request.discounts, taxes) + ctx = get_checkout_context(checkout, request.discounts) ctx.update( { "additional_addresses": user_addresses, diff --git a/saleor/checkout/views/summary.py b/saleor/checkout/views/summary.py index fd20f47be8c..520cec8c1f9 100644 --- a/saleor/checkout/views/summary.py +++ b/saleor/checkout/views/summary.py @@ -7,12 +7,12 @@ from ...account.models import Address from ...core import analytics from ...core.exceptions import InsufficientStock +from ...core.taxes.errors import TaxError from ...discount.models import NotApplicable from ..forms import CheckoutNoteForm from ..utils import ( create_order, get_checkout_context, - get_taxes_for_checkout, prepare_order_data, update_billing_address_in_anonymous_checkout, update_billing_address_in_checkout, @@ -34,7 +34,6 @@ def _handle_order_placement(request, checkout): checkout=checkout, tracking_code=analytics.get_client_id(request), discounts=request.discounts, - taxes=get_taxes_for_checkout(checkout, request.taxes), ) except InsufficientStock: return redirect("checkout:index") @@ -43,6 +42,14 @@ def _handle_order_placement(request, checkout): request, pgettext("Checkout warning", "Please review your checkout.") ) return redirect("checkout:summary") + except TaxError as tax_error: + messages.warning( + request, + pgettext( + "Checkout warning", "Unable to calculate taxes - %s" % str(tax_error) + ), + ) + return redirect("checkout:summary") # Push the order data into the database order = create_order(checkout=checkout, order_data=order_data, user=request.user) @@ -74,8 +81,7 @@ def summary_with_shipping_view(request, checkout): if updated: return _handle_order_placement(request, checkout) - taxes = get_taxes_for_checkout(checkout, request.taxes) - ctx = get_checkout_context(checkout, request.discounts, taxes) + ctx = get_checkout_context(checkout, request.discounts) ctx.update( { "additional_addresses": user_addresses, @@ -103,8 +109,7 @@ def anonymous_summary_without_shipping(request, checkout): if updated: return _handle_order_placement(request, checkout) - taxes = get_taxes_for_checkout(checkout, request.taxes) - ctx = get_checkout_context(checkout, request.discounts, taxes) + ctx = get_checkout_context(checkout, request.discounts) ctx.update( {"address_form": address_form, "note_form": note_form, "user_form": user_form} ) @@ -129,8 +134,7 @@ def summary_without_shipping(request, checkout): if updated: return _handle_order_placement(request, checkout) - taxes = get_taxes_for_checkout(checkout, request.taxes) - ctx = get_checkout_context(checkout, request.discounts, taxes) + ctx = get_checkout_context(checkout, request.discounts) ctx.update( { "additional_addresses": user_addresses, diff --git a/saleor/checkout/views/validators.py b/saleor/checkout/views/validators.py index fc25009a1a8..462768bbcbb 100644 --- a/saleor/checkout/views/validators.py +++ b/saleor/checkout/views/validators.py @@ -54,7 +54,7 @@ def validate_shipping_method(view): @wraps(view) def func(request, checkout): - if not is_valid_shipping_method(checkout, request.taxes, request.discounts): + if not is_valid_shipping_method(checkout, request.discounts): return redirect("checkout:shipping-method") return view(request, checkout) diff --git a/saleor/core/__init__.py b/saleor/core/__init__.py index f319d985ec1..e2d512343a2 100644 --- a/saleor/core/__init__.py +++ b/saleor/core/__init__.py @@ -1,6 +1,5 @@ from django.conf import settings from django.core.checks import Warning, register -from django.utils.translation import pgettext_lazy TOKEN_PATTERN = ( "(?P[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}" "-[0-9a-z]{12})" @@ -27,71 +26,3 @@ def check_session_caching(app_configs, **kwargs): # pragma: no cover ) ) return errors - - -class TaxRateType: - ACCOMMODATION = "accommodation" - ADMISSION_TO_CULTURAL_EVENTS = "admission to cultural events" - ADMISSION_TO_ENTERTAINMENT_EVENTS = "admission to entertainment events" - ADMISSION_TO_SPORTING_EVENTS = "admission to sporting events" - ADVERTISING = "advertising" - AGRICULTURAL_SUPPLIES = "agricultural supplies" - BABY_FOODSTUFFS = "baby foodstuffs" - BIKES = "bikes" - BOOKS = "books" - CHILDRENDS_CLOTHING = "childrens clothing" - DOMESTIC_FUEL = "domestic fuel" - DOMESTIC_SERVICES = "domestic services" - E_BOOKS = "e-books" - FOODSTUFFS = "foodstuffs" - HOTELS = "hotels" - MEDICAL = "medical" - NEWSPAPERS = "newspapers" - PASSENGER_TRANSPORT = "passenger transport" - PHARMACEUTICALS = "pharmaceuticals" - PROPERTY_RENOVATIONS = "property renovations" - RESTAURANTS = "restaurants" - SOCIAL_HOUSING = "social housing" - STANDARD = "standard" - WATER = "water" - WINE = "wine" - - CHOICES = ( - (ACCOMMODATION, pgettext_lazy("VAT rate type", "accommodation")), - ( - ADMISSION_TO_CULTURAL_EVENTS, - pgettext_lazy("VAT rate type", "admission to cultural events"), - ), - ( - ADMISSION_TO_ENTERTAINMENT_EVENTS, - pgettext_lazy("VAT rate type", "admission to entertainment events"), - ), - ( - ADMISSION_TO_SPORTING_EVENTS, - pgettext_lazy("VAT rate type", "admission to sporting events"), - ), - (ADVERTISING, pgettext_lazy("VAT rate type", "advertising")), - ( - AGRICULTURAL_SUPPLIES, - pgettext_lazy("VAT rate type", "agricultural supplies"), - ), - (BABY_FOODSTUFFS, pgettext_lazy("VAT rate type", "baby foodstuffs")), - (BIKES, pgettext_lazy("VAT rate type", "bikes")), - (BOOKS, pgettext_lazy("VAT rate type", "books")), - (CHILDRENDS_CLOTHING, pgettext_lazy("VAT rate type", "childrens clothing")), - (DOMESTIC_FUEL, pgettext_lazy("VAT rate type", "domestic fuel")), - (DOMESTIC_SERVICES, pgettext_lazy("VAT rate type", "domestic services")), - (E_BOOKS, pgettext_lazy("VAT rate type", "e-books")), - (FOODSTUFFS, pgettext_lazy("VAT rate type", "foodstuffs")), - (HOTELS, pgettext_lazy("VAT rate type", "hotels")), - (MEDICAL, pgettext_lazy("VAT rate type", "medical")), - (NEWSPAPERS, pgettext_lazy("VAT rate type", "newspapers")), - (PASSENGER_TRANSPORT, pgettext_lazy("VAT rate type", "passenger transport")), - (PHARMACEUTICALS, pgettext_lazy("VAT rate type", "pharmaceuticals")), - (PROPERTY_RENOVATIONS, pgettext_lazy("VAT rate type", "property renovations")), - (RESTAURANTS, pgettext_lazy("VAT rate type", "restaurants")), - (SOCIAL_HOUSING, pgettext_lazy("VAT rate type", "social housing")), - (STANDARD, pgettext_lazy("VAT rate type", "standard")), - (WATER, pgettext_lazy("VAT rate type", "water")), - (WINE, pgettext_lazy("VAT rate type", "wine")), - ) diff --git a/saleor/core/middleware.py b/saleor/core/middleware.py index 6221233bb36..f0dc1665b75 100644 --- a/saleor/core/middleware.py +++ b/saleor/core/middleware.py @@ -1,85 +1,20 @@ import logging -from datetime import date -from functools import wraps -from typing import Callable - -import django.contrib.auth.middleware -import django.contrib.messages.middleware -import django.contrib.sessions.middleware -import django.middleware.common -import django.middleware.csrf -import django.middleware.locale -import django.middleware.security -import django_babel.middleware -import impersonate.middleware -import social_django.middleware + from django.conf import settings from django.contrib.sites.models import Site from django.core.exceptions import MiddlewareNotUsed -from django.urls import reverse +from django.utils import timezone from django.utils.functional import SimpleLazyObject from django.utils.translation import get_language from django_countries.fields import Country -from ..discount.models import Sale +from ..discount.utils import fetch_discounts from . import analytics from .utils import get_client_ip, get_country_by_ip, get_currency_for_country -from .utils.taxes import get_taxes_for_country logger = logging.getLogger(__name__) -def django_only_request_handler(get_response: Callable, handler: Callable): - api_path = reverse("api") - - @wraps(handler) - def handle_request(request): - if request.path == api_path: - return get_response(request) - return handler(request) - - return handle_request - - -def django_only_middleware(middleware): - @wraps(middleware) - def wrapped(get_response): - handler = middleware(get_response) - return django_only_request_handler(get_response, handler) - - return wrapped - - -social_auth_exception_middleware = django_only_middleware( - social_django.middleware.SocialAuthExceptionMiddleware -) -impersonate_middleware = django_only_middleware( - impersonate.middleware.ImpersonateMiddleware -) -babel_locale_middleware = django_only_middleware( - django_babel.middleware.LocaleMiddleware -) -django_locale_middleware = django_only_middleware( - django.middleware.locale.LocaleMiddleware -) -django_messages_middleware = django_only_middleware( - django.contrib.messages.middleware.MessageMiddleware -) -django_auth_middleware = django_only_middleware( - django.contrib.auth.middleware.AuthenticationMiddleware -) -django_csrf_view_middleware = django_only_middleware( - django.middleware.csrf.CsrfViewMiddleware -) -django_security_middleware = django_only_middleware( - django.middleware.security.SecurityMiddleware -) -django_session_middleware = django_only_middleware( - django.contrib.sessions.middleware.SessionMiddleware -) - - -@django_only_middleware def google_analytics(get_response): """Report a page view to Google Analytics.""" @@ -106,9 +41,7 @@ def discounts(get_response): """Assign active discounts to `request.discounts`.""" def middleware(request): - request.discounts = Sale.objects.active(date.today()).prefetch_related( - "products", "categories", "collections" - ) + request.discounts = SimpleLazyObject(lambda: fetch_discounts(timezone.now())) return get_response(request) return middleware @@ -166,6 +99,10 @@ def taxes(get_response): def middleware(request): if settings.VATLAYER_ACCESS_KEY: + # FIXME this should be disabled after we will introduce plugin architecure. + # For now, a lot of templates use tax_rate function. + from .taxes.vatlayer import get_taxes_for_country + request.taxes = SimpleLazyObject( lambda: get_taxes_for_country(request.country) ) diff --git a/saleor/core/taxes/__init__.py b/saleor/core/taxes/__init__.py new file mode 100644 index 00000000000..8e11b50c08c --- /dev/null +++ b/saleor/core/taxes/__init__.py @@ -0,0 +1,63 @@ +from dataclasses import dataclass +from decimal import Decimal +from typing import Union + +from babel.numbers import get_currency_precision +from django.conf import settings +from django.contrib.sites.models import Site +from prices import Money, MoneyRange, TaxedMoney, TaxedMoneyRange + + +def zero_money(currency=settings.DEFAULT_CURRENCY): + """Function used as a model's default.""" + return Money(0, currency) + + +def zero_taxed_money(currency=settings.DEFAULT_CURRENCY): + zero = zero_money(currency) + return TaxedMoney(net=zero, gross=zero) + + +def include_taxes_in_prices(): + return Site.objects.get_current().settings.include_taxes_in_prices + + +def display_gross_prices(): + return Site.objects.get_current().settings.display_gross_prices + + +def charge_taxes_on_shipping(): + return Site.objects.get_current().settings.charge_taxes_on_shipping + + +def get_display_price( + base: Union[TaxedMoney, TaxedMoneyRange], display_gross=None +) -> Money: + """Return price amount that should be displayed based on settings""" + if not display_gross: + display_gross = display_gross_prices() + if isinstance(base, TaxedMoneyRange): + if display_gross: + base = MoneyRange(start=base.start.gross, stop=base.stop.gross) + else: + base = MoneyRange(start=base.start.net, stop=base.stop.net) + + if isinstance(base, TaxedMoney): + base = base.gross if display_gross else base.net + return base + + +def quantize_price( + price: Union["TaxedMoney", "Money", "Decimal", "TaxedMoneyRange"], currency +): + precision = get_currency_precision(currency) + number_places = Decimal(10) ** -precision + return price.quantize(number_places) + + +@dataclass(frozen=True) +class TaxType: + """Dataclass for unifying tax type object that comes from tax gateway""" + + code: str + description: str diff --git a/saleor/core/taxes/avatax/__init__.py b/saleor/core/taxes/avatax/__init__.py new file mode 100644 index 00000000000..3150990a9fb --- /dev/null +++ b/saleor/core/taxes/avatax/__init__.py @@ -0,0 +1,420 @@ +import json +import logging +from datetime import date +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from urllib.parse import urljoin + +import requests +from django.conf import settings +from django.core.cache import cache +from django.utils.translation import pgettext_lazy +from requests.auth import HTTPBasicAuth + +from saleor.core.utils import get_company_address + +from .. import charge_taxes_on_shipping, include_taxes_in_prices + +if TYPE_CHECKING: + from ....checkout.models import Checkout + from ....order.models import Order + +logger = logging.getLogger(__name__) + +META_FIELD = "avatax" +CACHE_TIME = 60 * 60 # 1 hour +TAX_CODES_CACHE_TIME = 60 * 60 * 24 * 7 # 7 days +CACHE_KEY = "avatax_request_id_" +TAX_CODES_CACHE_KEY = "avatax_tax_codes_cache_key" +TIMEOUT = 10 # API HTTP Requests Timeout + +# Common carrier code used to identify the line as a shipping service +COMMON_CARRIER_CODE = "FR020100" + +# Common discount code use to apply discount on order +COMMON_DISCOUNT_VOUCHER_CODE = "OD010000" + + +class TransactionType: + INVOICE = "SalesInvoice" + ORDER = "SalesOrder" + + +class CustomerErrors: + DEFAULT_MSG = pgettext_lazy( + "We are not able to calculate taxes for your order. Please try later" + ) + ERRORS = ("InvalidPostalCode", "InvalidAddress", "MissingAddress") + + @classmethod + def get_error_msg(cls, error: dict) -> str: + error_code = error.get("code") + if error_code in cls.ERRORS: + return error.get("message", cls.DEFAULT_MSG) + return cls.DEFAULT_MSG + + +def get_api_url() -> str: + """Based on settings return sanbox or production url""" + if settings.AVATAX_USE_SANDBOX: + return "https://sandbox-rest.avatax.com/api/v2/" + return "https://rest.avatax.com/api/v2/" + + +def api_post_request( + url: str, + data: Dict[str, Any], + username: str = settings.AVATAX_USERNAME_OR_ACCOUNT, + password: str = settings.AVATAX_PASSWORD_OR_LICENSE, +) -> Dict[str, Any]: + try: + auth = HTTPBasicAuth(username, password) + response = requests.post(url, auth=auth, data=json.dumps(data), timeout=TIMEOUT) + logger.debug("Hit to Avatax to calculate taxes %s", url) + except requests.exceptions.RequestException: + logger.warning("Fetching taxes failed %s", url) + return {} + return response.json() + + +def api_get_request( + url: str, + username: str = settings.AVATAX_USERNAME_OR_ACCOUNT, + password: str = settings.AVATAX_PASSWORD_OR_LICENSE, +): + try: + auth = HTTPBasicAuth(username, password) + response = requests.get(url, auth=auth, timeout=TIMEOUT) + logger.debug("[GET] Hit to %s", url) + except requests.exceptions.RequestException: + logger.warning("Failed to fetch data from %s", url) + return {} + return response.json() + + +def _validate_order(order: "Order") -> bool: + """Validate if order object contains enough information to generate a request to + avatax""" + if not order.lines.count(): + return False + shipping_address = order.shipping_address + is_shipping_required = order.is_shipping_required() + address = shipping_address or order.billing_address + + if not is_shipping_required and not address: + return False + if not shipping_address: + return False + if not order.shipping_method: + return False + return True + + +def _validate_checkout(checkout: "Checkout") -> bool: + """Validate if checkout object contains enough information to generate a request to + avatax""" + if not checkout.lines.count(): + return False + + shipping_address = checkout.shipping_address + is_shipping_required = checkout.is_shipping_required + address = shipping_address or checkout.billing_address + if not is_shipping_required and not address: + return False + if not shipping_address: + return False + if not checkout.shipping_method: + return False + return True + + +def _retrieve_from_cache(token): + taxes_cache_key = CACHE_KEY + token + cached_data = cache.get(taxes_cache_key) + return cached_data + + +def checkout_needs_new_fetch(data, checkout_token: str) -> bool: + """We store the response from avatax for checkout object for given time. If object + doesn't exist in cache or something has changed, then we fetch data from avatax.""" + + cached_checkout = _retrieve_from_cache(checkout_token) + + if not cached_checkout: + return True + + cached_request_data, cached_response = cached_checkout + if data != cached_request_data: + return True + return False + + +def taxes_need_new_fetch(data: Dict[str, Any], taxes_token: str) -> bool: + """We store the response from avatax. If object doesn't exist in cache or + something has changed, then we fetch data from avatax.""" + cached_data = _retrieve_from_cache(taxes_token) + + if not cached_data: + return True + + cached_request_data, _ = cached_data + if data != cached_request_data: + return True + return False + + +def append_line_to_data( + data: List[Dict[str, str]], + quantity: int, + amount: str, + tax_code: str, + item_code: str, + description: str = None, + tax_included: Optional[bool] = None, +): + if tax_included is None: + tax_included = include_taxes_in_prices() + data.append( + { + "quantity": quantity, + "amount": str(amount), + "taxCode": tax_code, + "taxIncluded": tax_included, + "itemCode": item_code, + "description": description[:2000] if description else "", + } + ) + + +def get_checkout_lines_data( + checkout: "Checkout", discounts=None +) -> List[Dict[str, str]]: + data = [] + lines = checkout.lines.prefetch_related( + "variant__product__category", + "variant__product__collections", + "variant__product__product_type", + ) + for line in lines: + if not line.variant.product.charge_taxes: + continue + description = line.variant.product.description + product = line.variant.product + product_type = line.variant.product.product_type + tax_code = retrieve_tax_code_from_meta(product) + tax_code = tax_code or retrieve_tax_code_from_meta(product_type) + append_line_to_data( + data=data, + quantity=line.quantity, + amount=str(line.get_total(discounts).amount), + tax_code=tax_code, + item_code=line.variant.sku, + description=description, + ) + + if charge_taxes_on_shipping() and checkout.shipping_method: + append_line_to_data( + data, + quantity=1, + amount=str(checkout.shipping_method.price.amount), + tax_code=COMMON_CARRIER_CODE, + item_code="Shipping", + ) + return data + + +def get_order_lines_data(order: "Order") -> List[Dict[str, str]]: + data = [] + lines = order.lines.prefetch_related( + "variant__product__category", + "variant__product__collections", + "variant__product__product_type", + ) + for line in lines: + if not line.variant.product.charge_taxes: + continue + product = line.variant.product + product_type = line.variant.product.product_type + tax_code = retrieve_tax_code_from_meta(product) + tax_code = tax_code or retrieve_tax_code_from_meta(product_type) + append_line_to_data( + data=data, + quantity=line.quantity, + amount=line.unit_price_net.amount * line.quantity, + tax_code=tax_code, + item_code=line.variant.sku, + description=line.variant.product.description, + ) + if order.discount_amount and order.discount_amount.amount: + append_line_to_data( + data=data, + quantity=1, + amount=order.discount_amount.amount * -1, + tax_code=COMMON_DISCOUNT_VOUCHER_CODE, + item_code="Voucher", + description=order.discount_name, + tax_included=True, # Voucher should be always applied as a gross amount + ) + if charge_taxes_on_shipping() and order.shipping_method: + append_line_to_data( + data, + quantity=1, + amount=order.shipping_method.price.amount, + tax_code=COMMON_CARRIER_CODE, + item_code="Shipping", + ) + return data + + +def generate_request_data( + transaction_type: str, + lines: List[Dict[str, Any]], + transaction_token: str, + address: Dict[str, str], + customer_code: Optional[int], + customer_email: str, + commit=False, + currency=settings.DEFAULT_CURRENCY, +): + company_address = get_company_address() + if company_address: + company_address = company_address.as_data() + else: + logging.warning( + "To correct calculate taxes by Avatax, company address should be provided " + "in dashboard.settings." + ) + company_address = {} + + data = { + "companyCode": settings.AVATAX_COMPANY_NAME, + "type": transaction_type, + "lines": lines, + "code": transaction_token, + "date": str(date.today()), + "customerCode": customer_code, + "addresses": { + "shipFrom": { + "line1": company_address.get("street_address_1"), + "line2": company_address.get("street_address_2"), + "city": company_address.get("city"), + "region": company_address.get("country_area"), + "country": company_address.get("country"), + "postalCode": company_address.get("postal_code"), + }, + "shipTo": { + "line1": address.get("street_address_1"), + "line2": address.get("street_address_2"), + "city": address.get("city"), + "region": address.get("country_area"), + "country": address.get("country"), + "postalCode": address.get("postal_code"), + }, + }, + "commit": commit, + "currencyCode": currency, + "email": customer_email, + } + return {"createTransactionModel": data} + + +def generate_request_data_from_checkout( + checkout: "Checkout", + transaction_token=None, + transaction_type=TransactionType.ORDER, + commit=False, + discounts=None, +): + + address = checkout.shipping_address or checkout.billing_address + lines = get_checkout_lines_data(checkout, discounts) + + # FIXME after we introduce multicurrency this should be taken from Checkout obj + currency = checkout.get_subtotal().currency + data = generate_request_data( + transaction_type=transaction_type, + lines=lines, + transaction_token=transaction_token or str(checkout.token), + address=address.as_data(), + customer_code=checkout.user.id if checkout.user else 0, + customer_email=checkout.email, + commit=commit, + currency=currency, + ) + return data + + +def get_cached_response_or_fetch(data, token_in_cache, force_refresh=False): + """Try to find response in cache. Return cached response if requests data are + the same. Fetch new data in other cases""" + data_cache_key = CACHE_KEY + token_in_cache + if taxes_need_new_fetch(data, token_in_cache) or force_refresh: + transaction_url = urljoin(get_api_url(), "transactions/createoradjust") + response = api_post_request(transaction_url, data) + if response and "error" not in response: + cache.set(data_cache_key, (data, response), CACHE_TIME) + else: + # cache failed response to limit hits to avatax. + cache.set(data_cache_key, (data, response), 10) + else: + _, response = cache.get(data_cache_key) + + return response + + +def get_checkout_tax_data(checkout: "Checkout", discounts) -> Dict[str, Any]: + data = generate_request_data_from_checkout(checkout, discounts=discounts) + return get_cached_response_or_fetch(data, str(checkout.token)) + + +def get_order_tax_data( + order: "Order", commit=False, force_refresh=False +) -> Dict[str, Any]: + address = order.shipping_address or order.billing_address + lines = get_order_lines_data(order) + transaction = ( + TransactionType.INVOICE if not order.is_draft() else TransactionType.ORDER + ) + data = generate_request_data( + transaction_type=transaction, + lines=lines, + transaction_token=order.token, + address=address.as_data(), + customer_code=order.user.id if order.user else None, + customer_email=order.user_email, + commit=commit, + currency=order.total.currency, + ) + response = get_cached_response_or_fetch( + data, "order_%s" % order.token, force_refresh + ) + return response + + +def generate_tax_codes_dict( + response: Dict[str, Union[str, int, bool]] +) -> Dict[str, str]: + tax_codes = {} + for line in response.get("value", []): + if line.get("isActive"): + tax_codes[line.get("taxCode")] = line.get("description") + return tax_codes + + +def get_cached_tax_codes_or_fetch(cache_time: int = TAX_CODES_CACHE_TIME): + """Try to get cached tax codes. If cache is empty fetch the newest taxcodes from + avatax""" + tax_codes = cache.get(TAX_CODES_CACHE_KEY, {}) + if not tax_codes: + tax_codes_url = urljoin(get_api_url(), "definitions/taxcodes") + response = api_get_request(tax_codes_url) + if response and "error" not in response: + tax_codes = generate_tax_codes_dict(response) + cache.set(TAX_CODES_CACHE_KEY, tax_codes, cache_time) + return tax_codes + + +def retrieve_tax_code_from_meta(obj: Union["Product", "ProductVariant"]): + if not hasattr(obj, "meta"): + return "O9999999" # "Temporary Unmapped Other SKU - taxable default" + tax = obj.meta.get("taxes", {}).get(META_FIELD, {}) + return tax.get("code", "O9999999") diff --git a/saleor/core/taxes/avatax/interface.py b/saleor/core/taxes/avatax/interface.py new file mode 100644 index 00000000000..7329858c629 --- /dev/null +++ b/saleor/core/taxes/avatax/interface.py @@ -0,0 +1,220 @@ +import logging +from decimal import Decimal +from typing import TYPE_CHECKING, List, Union +from urllib.parse import urljoin + +from django.conf import settings +from prices import Money, TaxedMoney + +from ....checkout import models as checkout_models +from .. import TaxType, zero_taxed_money +from ..errors import TaxError +from . import ( + META_FIELD, + CustomerErrors, + TransactionType, + _validate_checkout, + _validate_order, + api_post_request, + generate_request_data_from_checkout, + get_api_url, + get_cached_tax_codes_or_fetch, + get_checkout_tax_data, + get_order_tax_data, +) + +if TYPE_CHECKING: + from ....checkout.models import Checkout + from ....order.models import Order, OrderLine + +logger = logging.getLogger(__name__) + + +def calculate_checkout_total( + checkout: "checkout_models.Checkout", discounts: List["DiscountInfo"] +): + checkout_total = checkout.get_total(discounts=discounts) + if not _validate_checkout(checkout): + return TaxedMoney(net=checkout_total, gross=checkout_total) + response = get_checkout_tax_data(checkout, discounts) + if not response or "error" in response: + return TaxedMoney(net=checkout_total, gross=checkout_total) + + currency = response.get("currencyCode") + tax = Decimal(response.get("totalTax", 0.0)) + total_net = Decimal(response.get("totalAmount", 0.0)) + total_gross = Money(amount=total_net + tax, currency=currency) + total_net = Money(amount=total_net, currency=currency) + total = TaxedMoney(net=total_net, gross=total_gross) + voucher_amount = checkout.discount_amount + if voucher_amount: + total -= voucher_amount + return max(total, zero_taxed_money(total.currency)) + + +def calculate_checkout_subtotal( + checkout: "checkout_models.Checkout", discounts: List["DiscountInfo"] +): + sub_total = checkout.get_subtotal(discounts) + if not _validate_checkout(checkout): + return TaxedMoney(net=sub_total, gross=sub_total) + + response = get_checkout_tax_data(checkout, discounts) + if not response or "error" in response: + return TaxedMoney(net=sub_total, gross=sub_total) + + currency = response.get("currencyCode") + sub_tax = Decimal(0.0) + sub_net = Decimal(0.0) + for line in response.get("lines", []): + if line["itemCode"] == "Shipping": + continue + sub_tax += Decimal(line["tax"]) + sub_net += Decimal(line.get("lineAmount", 0.0)) + + sub_total_gross = Money(sub_net + sub_tax, currency) + sub_total_net = Money(sub_net, currency) + return TaxedMoney(net=sub_total_net, gross=sub_total_gross) + + +def calculate_checkout_shipping( + checkout: "checkout_models.Checkout", discounts: List["DiscountInfo"] +): + shipping_price = checkout.get_shipping_price() + if not _validate_checkout(checkout): + return TaxedMoney(net=shipping_price, gross=shipping_price) + + response = get_checkout_tax_data(checkout, discounts) + if not response or "error" in response: + return TaxedMoney(net=shipping_price, gross=shipping_price) + + shipping_tax = Decimal(0.0) + shipping_net = shipping_price.amount + currency = response.get("currencyCode") + for line in response.get("lines", []): + if line["itemCode"] == "Shipping": + shipping_net = Decimal(line["lineAmount"]) + shipping_tax = Decimal(line["tax"]) + break + + shipping_gross = Money(amount=shipping_net + shipping_tax, currency=currency) + shipping_net = Money(amount=shipping_net, currency=currency) + return TaxedMoney(net=shipping_net, gross=shipping_gross) + + +def preprocess_order_creation(checkout: "Checkout", discounts: List["DiscountInfo"]): + """Confirm that all data is correct and we can proceed with creation of order. + Raise error when can't receive taxes""" + + data = generate_request_data_from_checkout( + checkout, + transaction_token=str(checkout.token), + transaction_type=TransactionType.ORDER, + discounts=discounts, + ) + transaction_url = urljoin(get_api_url(), "transactions/createoradjust") + response = api_post_request(transaction_url, data) + if not response or "error" in response: + msg = response.get("error", {}).get("message", "") + error_code = response.get("error", {}).get("code", "") + logger.warning( + "Unable to calculate taxes for checkout %s, error_code: %s, error_msg: %s", + checkout.token, + error_code, + msg, + ) + customer_msg = CustomerErrors.get_error_msg(response.get("error", {})) + raise TaxError(customer_msg) + + +def postprocess_order_creation(order: "Order"): + # FIXME after we introduce plugin architecture, this logic could be a celery task + + data = get_order_tax_data( + order, commit=settings.AVATAX_AUTOCOMMIT, force_refresh=True + ) + + transaction_url = urljoin(get_api_url(), "transactions/createoradjust") + api_post_request(transaction_url, data) + + +def calculate_checkout_line_total( + checkout_line: "checkout_models.CheckoutLine", discounts: List["DiscountInfo"] +): + checkout = checkout_line.checkout + total = checkout_line.get_total(discounts) + if not _validate_checkout(checkout): + return TaxedMoney(net=total, gross=total) + taxes_data = get_checkout_tax_data(checkout, discounts) + currency = taxes_data.get("currencyCode") + for line in taxes_data.get("lines", []): + if line.get("itemCode") == checkout_line.variant.sku: + tax = Decimal(line.get("tax", 0.0)) + line_net = Decimal(line["lineAmount"]) + line_gross = Money(amount=line_net + tax, currency=currency) + line_net = Money(amount=line_net, currency=currency) + return TaxedMoney(net=line_net, gross=line_gross) + + total = checkout_line.get_total(discounts) + return TaxedMoney(net=total, gross=total) + + +def calculate_order_line_unit(order_line: "OrderLine"): + order = order_line.order + if _validate_order(order): + taxes_data = get_order_tax_data(order) + currency = taxes_data.get("currencyCode") + for line in taxes_data.get("lines", []): + if line.get("itemCode") == order_line.variant.sku: + tax = Decimal(line.get("tax", 0.0)) / order_line.quantity + net = Decimal(line.get("lineAmount", 0.0)) / order_line.quantity + + gross = Money(amount=net + tax, currency=currency) + net = Money(amount=net, currency=currency) + return TaxedMoney(net=net, gross=gross) + return order_line.unit_price + + +def calculate_order_shipping(order: "Order"): + if not _validate_order(order): + return zero_taxed_money(order.total.currency) + taxes_data = get_order_tax_data(order, False) + currency = taxes_data.get("currencyCode") + for line in taxes_data.get("lines", []): + if line["itemCode"] == "Shipping": + tax = Decimal(line.get("tax", 0.0)) + net = Decimal(line.get("lineAmount", 0.0)) + gross = Money(amount=net + tax, currency=currency) + net = Money(amount=net, currency=currency) + return TaxedMoney(net=net, gross=gross) + return TaxedMoney( + net=order.shipping_method.price, gross=order.shipping_method.price + ) + + +def get_tax_rate_type_choices() -> List[TaxType]: + return [ + TaxType(code=tax_code, description=desc) + for tax_code, desc in get_cached_tax_codes_or_fetch().items() + ] + + +def assign_tax_to_object_meta(obj: Union["Product", "ProductType"], tax_code: str): + codes = get_cached_tax_codes_or_fetch() + if tax_code not in codes: + return + + tax_description = codes[tax_code] + if not hasattr(obj, "meta"): + return + if "taxes" not in obj.meta: + obj.meta["taxes"] = {} + obj.meta["taxes"]["avatax"] = {"code": tax_code, "description": tax_description} + + +def get_tax_from_object_meta(obj: Union["Product", "ProductType"]) -> TaxType: + if not hasattr(obj, "meta"): + return TaxType(code="", description="") + + tax = obj.meta.get("taxes", {}).get(META_FIELD, {}) + return TaxType(code=tax.get("code", ""), description=tax.get("description", "")) diff --git a/saleor/core/taxes/errors.py b/saleor/core/taxes/errors.py new file mode 100644 index 00000000000..4a216d9bb5c --- /dev/null +++ b/saleor/core/taxes/errors.py @@ -0,0 +1,2 @@ +class TaxError(Exception): + """Default tax error""" diff --git a/saleor/core/taxes/interface.py b/saleor/core/taxes/interface.py new file mode 100644 index 00000000000..f66da247c25 --- /dev/null +++ b/saleor/core/taxes/interface.py @@ -0,0 +1,207 @@ +from typing import TYPE_CHECKING, List, Union + +from django.conf import settings +from django_countries.fields import Country +from prices import Money, MoneyRange, TaxedMoney, TaxedMoneyRange + +from . import TaxType, quantize_price +from .avatax import interface as avatax_interface +from .vatlayer import interface as vatlayer_interface + +if TYPE_CHECKING: + from ...checkout.models import Checkout, CheckoutLine + from ...product.models import Product + from ...account.models import Address + from ...order.models import OrderLine, Order + + +def calculate_checkout_total( + checkout: "Checkout", discounts: List["DiscountInfo"] +) -> TaxedMoney: + """Calculate total gross for checkout""" + + total = None + if settings.VATLAYER_ACCESS_KEY: + total = vatlayer_interface.calculate_checkout_total(checkout, discounts) + elif settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + total = avatax_interface.calculate_checkout_total(checkout, discounts) + + if total is not None: + return quantize_price(total, total.currency) + + total = checkout.get_total(discounts) + return quantize_price(TaxedMoney(net=total, gross=total), total.currency) + + +def calculate_checkout_subtotal( + checkout: "Checkout", discounts: List["DiscountInfo"] +) -> TaxedMoney: + """Calculate subtotal gross for checkout""" + + subtotal = None + if settings.VATLAYER_ACCESS_KEY: + subtotal = vatlayer_interface.calculate_checkout_subtotal(checkout, discounts) + elif settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + subtotal = avatax_interface.calculate_checkout_subtotal(checkout, discounts) + + if subtotal is not None: + return quantize_price(subtotal, subtotal.currency) + + subtotal = checkout.get_subtotal(discounts) + return quantize_price(TaxedMoney(net=subtotal, gross=subtotal), subtotal.currency) + + +def calculate_checkout_shipping( + checkout: "Checkout", discounts: List["DiscountInfo"] +) -> TaxedMoney: + """Calculate shipping gross for checkout""" + total = checkout.get_shipping_price() + total = TaxedMoney(net=total, gross=total) + if not checkout.shipping_method: + return quantize_price(total, total.currency) + if settings.VATLAYER_ACCESS_KEY: + total = vatlayer_interface.calculate_checkout_shipping(checkout, discounts) + elif settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + total = avatax_interface.calculate_checkout_shipping(checkout, discounts) + return quantize_price(total, total.currency) + + +def calculate_order_shipping(order: "Order") -> TaxedMoney: + """Calculate shipping price that assigned to order""" + shipping_price = None + if settings.VATLAYER_ACCESS_KEY: + shipping_price = vatlayer_interface.calculate_order_shipping(order) + elif settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + shipping_price = avatax_interface.calculate_order_shipping(order) + + if shipping_price is not None: + return quantize_price(shipping_price, shipping_price.currency) + shipping_price = order.shipping_method.price + return quantize_price( + TaxedMoney(net=shipping_price, gross=shipping_price), shipping_price.currency + ) + + +def apply_taxes_to_shipping(price: Money, shipping_address: "Address") -> TaxedMoney: + """Apply taxes for shipping methods that user can use during checkout""" + if shipping_address: + if settings.VATLAYER_ACCESS_KEY: + return quantize_price( + vatlayer_interface.apply_taxes_to_shipping(price, shipping_address), + price.currency, + ) + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + # For now we can't calculate product/shipping prices that are not directly + # assigned to order. Avatax has api only to calculate prices based on + # checkout/order data + pass + return quantize_price(TaxedMoney(net=price, gross=price), price.currency) + + +def get_tax_rate_type_choices() -> List[TaxType]: + if settings.VATLAYER_ACCESS_KEY: + return vatlayer_interface.get_tax_rate_type_choices() + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + return avatax_interface.get_tax_rate_type_choices() + return [] + + +def calculate_checkout_line_total( + checkout_line: "CheckoutLine", discounts: List["DiscountInfo"] +): + total = None + if settings.VATLAYER_ACCESS_KEY: + total = vatlayer_interface.calculate_checkout_line_total( + checkout_line, discounts + ) + elif settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + total = avatax_interface.calculate_checkout_line_total(checkout_line, discounts) + if total is not None: + return quantize_price(total, total.currency) + total = checkout_line.get_total(discounts) + return quantize_price(TaxedMoney(net=total, gross=total), total.currency) + + +def calculate_order_line_unit(order_line: "OrderLine"): + """It updates unit_price for a given order line based on current price of variant""" + if settings.VATLAYER_ACCESS_KEY: + unit_price = vatlayer_interface.calculate_order_line_unit(order_line) + elif settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + unit_price = avatax_interface.calculate_order_line_unit(order_line) + else: + unit_price = order_line.unit_price + + return quantize_price(unit_price, unit_price.currency) + + +def apply_taxes_to_product( + product: "Product", price: Money, country: Country, **kwargs +): + if settings.VATLAYER_ACCESS_KEY: + return quantize_price( + vatlayer_interface.apply_taxes_to_product( + product, price, country, **kwargs + ), + price.currency, + ) + elif settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + pass + return quantize_price(TaxedMoney(net=price, gross=price), price.currency) + + +def show_taxes_on_storefront() -> bool: + """Specify if taxes are enabled""" + if settings.VATLAYER_ACCESS_KEY: + return True + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + return False + return False + + +def taxes_are_enabled() -> bool: + if settings.VATLAYER_ACCESS_KEY: + return True + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + return True + return False + + +def apply_taxes_to_shipping_price_range(prices: MoneyRange, country: Country): + if country: + if settings.VATLAYER_ACCESS_KEY: + return quantize_price( + vatlayer_interface.apply_taxes_to_shipping_price_range(prices, country), + prices.currency, + ) + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + pass + start = TaxedMoney(net=prices.start, gross=prices.start) + stop = TaxedMoney(net=prices.stop, gross=prices.stop) + return quantize_price(TaxedMoneyRange(start=start, stop=stop), start.currency) + + +def preprocess_order_creation(checkout: "Checkout", discounts: List["DiscountInfo"]): + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + return avatax_interface.preprocess_order_creation(checkout, discounts) + + +# FIXME this should be converted to the plugin action after we introduce plugin +# architecture +def postprocess_order_creation(order: "Order"): + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + return avatax_interface.postprocess_order_creation(order) + + +def assign_tax_to_object_meta(obj: Union["Product", "ProductType"], tax_code: str): + if settings.VATLAYER_ACCESS_KEY: + vatlayer_interface.assign_tax_to_object_meta(obj, tax_code) + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + avatax_interface.assign_tax_to_object_meta(obj, tax_code) + + +def get_tax_from_object_meta(obj: Union["Product", "ProductType"],) -> TaxType: + if settings.VATLAYER_ACCESS_KEY: + return vatlayer_interface.get_tax_from_object_meta(obj) + if settings.AVATAX_USERNAME_OR_ACCOUNT and settings.AVATAX_PASSWORD_OR_LICENSE: + return avatax_interface.get_tax_from_object_meta(obj) + return TaxType(code="", description="") diff --git a/saleor/core/taxes/vatlayer/__init__.py b/saleor/core/taxes/vatlayer/__init__.py new file mode 100644 index 00000000000..fc5e8b2f97c --- /dev/null +++ b/saleor/core/taxes/vatlayer/__init__.py @@ -0,0 +1,155 @@ +from django.conf import settings +from django.utils.translation import pgettext_lazy +from django_countries.fields import Country +from django_prices_vatlayer.utils import get_tax_for_rate, get_tax_rates_for_country +from prices import Money, MoneyRange, TaxedMoney, TaxedMoneyRange + +from .. import charge_taxes_on_shipping, include_taxes_in_prices + + +class TaxRateType: + ACCOMMODATION = "accommodation" + ADMISSION_TO_CULTURAL_EVENTS = "admission to cultural events" + ADMISSION_TO_ENTERTAINMENT_EVENTS = "admission to entertainment events" + ADMISSION_TO_SPORTING_EVENTS = "admission to sporting events" + ADVERTISING = "advertising" + AGRICULTURAL_SUPPLIES = "agricultural supplies" + BABY_FOODSTUFFS = "baby foodstuffs" + BIKES = "bikes" + BOOKS = "books" + CHILDRENDS_CLOTHING = "childrens clothing" + DOMESTIC_FUEL = "domestic fuel" + DOMESTIC_SERVICES = "domestic services" + E_BOOKS = "e-books" + FOODSTUFFS = "foodstuffs" + HOTELS = "hotels" + MEDICAL = "medical" + NEWSPAPERS = "newspapers" + PASSENGER_TRANSPORT = "passenger transport" + PHARMACEUTICALS = "pharmaceuticals" + PROPERTY_RENOVATIONS = "property renovations" + RESTAURANTS = "restaurants" + SOCIAL_HOUSING = "social housing" + STANDARD = "standard" + WATER = "water" + WINE = "wine" + + CHOICES = ( + (ACCOMMODATION, pgettext_lazy("VAT rate type", "accommodation")), + ( + ADMISSION_TO_CULTURAL_EVENTS, + pgettext_lazy("VAT rate type", "admission to cultural events"), + ), + ( + ADMISSION_TO_ENTERTAINMENT_EVENTS, + pgettext_lazy("VAT rate type", "admission to entertainment events"), + ), + ( + ADMISSION_TO_SPORTING_EVENTS, + pgettext_lazy("VAT rate type", "admission to sporting events"), + ), + (ADVERTISING, pgettext_lazy("VAT rate type", "advertising")), + ( + AGRICULTURAL_SUPPLIES, + pgettext_lazy("VAT rate type", "agricultural supplies"), + ), + (BABY_FOODSTUFFS, pgettext_lazy("VAT rate type", "baby foodstuffs")), + (BIKES, pgettext_lazy("VAT rate type", "bikes")), + (BOOKS, pgettext_lazy("VAT rate type", "books")), + (CHILDRENDS_CLOTHING, pgettext_lazy("VAT rate type", "childrens clothing")), + (DOMESTIC_FUEL, pgettext_lazy("VAT rate type", "domestic fuel")), + (DOMESTIC_SERVICES, pgettext_lazy("VAT rate type", "domestic services")), + (E_BOOKS, pgettext_lazy("VAT rate type", "e-books")), + (FOODSTUFFS, pgettext_lazy("VAT rate type", "foodstuffs")), + (HOTELS, pgettext_lazy("VAT rate type", "hotels")), + (MEDICAL, pgettext_lazy("VAT rate type", "medical")), + (NEWSPAPERS, pgettext_lazy("VAT rate type", "newspapers")), + (PASSENGER_TRANSPORT, pgettext_lazy("VAT rate type", "passenger transport")), + (PHARMACEUTICALS, pgettext_lazy("VAT rate type", "pharmaceuticals")), + (PROPERTY_RENOVATIONS, pgettext_lazy("VAT rate type", "property renovations")), + (RESTAURANTS, pgettext_lazy("VAT rate type", "restaurants")), + (SOCIAL_HOUSING, pgettext_lazy("VAT rate type", "social housing")), + (STANDARD, pgettext_lazy("VAT rate type", "standard")), + (WATER, pgettext_lazy("VAT rate type", "water")), + (WINE, pgettext_lazy("VAT rate type", "wine")), + ) + + +DEFAULT_TAX_RATE_NAME = TaxRateType.STANDARD + + +def apply_tax_to_price(taxes, rate_name, base): + if not taxes or not rate_name: + # Naively convert Money to TaxedMoney for consistency with price + # handling logic across the codebase, passthrough other money types + if isinstance(base, Money): + return TaxedMoney(net=base, gross=base) + if isinstance(base, MoneyRange): + return TaxedMoneyRange( + apply_tax_to_price(taxes, rate_name, base.start), + apply_tax_to_price(taxes, rate_name, base.stop), + ) + if isinstance(base, (TaxedMoney, TaxedMoneyRange)): + return base + raise TypeError("Unknown base for flat_tax: %r" % (base,)) + + if rate_name in taxes: + tax_to_apply = taxes[rate_name]["tax"] + else: + tax_to_apply = taxes[DEFAULT_TAX_RATE_NAME]["tax"] + + keep_gross = include_taxes_in_prices() + return tax_to_apply(base, keep_gross=keep_gross) + + +def get_taxes_for_country(country): + tax_rates = get_tax_rates_for_country(country.code) + if tax_rates is None: + return None + + taxes = { + DEFAULT_TAX_RATE_NAME: { + "value": tax_rates["standard_rate"], + "tax": get_tax_for_rate(tax_rates), + } + } + if tax_rates["reduced_rates"]: + taxes.update( + { + rate_name: { + "value": tax_rates["reduced_rates"][rate_name], + "tax": get_tax_for_rate(tax_rates, rate_name), + } + for rate_name in tax_rates["reduced_rates"] + } + ) + return taxes + + +def get_taxes_for_address(address): + """Return proper taxes for address or default country.""" + if address is not None: + country = address.country + else: + country = Country(settings.DEFAULT_COUNTRY) + + return get_taxes_for_country(country) + + +def get_tax_rate_by_name(rate_name, taxes=None): + """Return value of tax rate for current taxes.""" + if not taxes or not rate_name: + tax_rate = 0 + elif rate_name in taxes: + tax_rate = taxes[rate_name]["value"] + else: + tax_rate = taxes[DEFAULT_TAX_RATE_NAME]["value"] + + return tax_rate + + +def get_taxed_shipping_price(shipping_price, taxes): + """Calculate shipping price based on settings and taxes.""" + if not charge_taxes_on_shipping(): + taxes = None + return apply_tax_to_price(taxes, DEFAULT_TAX_RATE_NAME, shipping_price) diff --git a/saleor/core/taxes/vatlayer/interface.py b/saleor/core/taxes/vatlayer/interface.py new file mode 100644 index 00000000000..c1a1ee2c478 --- /dev/null +++ b/saleor/core/taxes/vatlayer/interface.py @@ -0,0 +1,147 @@ +from typing import TYPE_CHECKING, List, Union + +from django_countries.fields import Country +from django_prices_vatlayer.utils import get_tax_rate_types +from prices import Money, MoneyRange, TaxedMoney, TaxedMoneyRange + +from .. import TaxType, zero_taxed_money +from . import ( + DEFAULT_TAX_RATE_NAME, + TaxRateType, + apply_tax_to_price, + get_taxed_shipping_price, + get_taxes_for_address, + get_taxes_for_country, +) + +if TYPE_CHECKING: + from ....checkout.models import Checkout, CheckoutLine + from ....product.models import Product + from ....account.models import Address + from ....order.models import Order, OrderLine + + +META_FIELD = "vatlayer" + + +def calculate_checkout_total( + checkout: "Checkout", discounts: List["DiscountInfo"] +) -> TaxedMoney: + """Calculate total gross for checkout by using vatlayer""" + return ( + calculate_checkout_subtotal(checkout, discounts) + + calculate_checkout_shipping(checkout, discounts) + - checkout.discount_amount + ) + + +def calculate_checkout_subtotal( + checkout: "Checkout", discounts: List["DiscountInfo"] +) -> TaxedMoney: + """Calculate subtotal gross for checkout""" + address = checkout.shipping_address or checkout.billing_address + lines = checkout.lines.prefetch_related("variant__product__product_type") + total = checkout.get_total() + lines_total = zero_taxed_money(currency=total.currency) + for line in lines: + price = line.variant.get_price(discounts) + lines_total += line.quantity * apply_taxes_to_product( + line.variant.product, price, address.country if address else None + ) + return lines_total + + +def calculate_checkout_shipping( + checkout: "Checkout", _: List["DiscountInfo"] +) -> TaxedMoney: + """Calculate shipping gross for checkout""" + address = checkout.shipping_address or checkout.billing_address + taxes = get_taxes_for_address(address) + if not checkout.shipping_method: + total = checkout.get_total() + return zero_taxed_money(total.currency) + return get_taxed_shipping_price(checkout.shipping_method.price, taxes) + + +def calculate_order_shipping(order: "Order") -> TaxedMoney: + address = order.shipping_address or order.billing_address + taxes = get_taxes_for_address(address) + if not order.shipping_method: + return zero_taxed_money(order.total.currency) + return get_taxed_shipping_price(order.shipping_method.price, taxes) + + +def calculate_order_line_unit(order_line: "OrderLine") -> TaxedMoney: + address = order_line.order.shipping_address or order_line.order.billing_address + country = address.country if address else None + variant = order_line.variant + return apply_taxes_to_product(variant.product, order_line.unit_price_net, country) + + +def calculate_checkout_line_total( + checkout_line: "CheckoutLine", discounts: List["DiscountInfo"] +): + address = ( + checkout_line.checkout.shipping_address + or checkout_line.checkout.billing_address + ) + price = checkout_line.variant.get_price(discounts) * checkout_line.quantity + country = address.country if address else None + return apply_taxes_to_product(checkout_line.variant.product, price, country) + + +def apply_taxes_to_shipping(price: Money, shipping_address: "Address"): + taxes = get_taxes_for_country(shipping_address.country) + return get_taxed_shipping_price(price, taxes) + + +def get_tax_rate_type_choices() -> List[TaxType]: + rate_types = get_tax_rate_types() + [DEFAULT_TAX_RATE_NAME] + choices = [ + TaxType(code=rate_name, description=rate_name) for rate_name in rate_types + ] + # sort choices alphabetically by translations + return sorted(choices, key=lambda x: x.code) + + +def apply_taxes_to_product( + product: "Product", price: Money, country: Country, **kwargs +) -> TaxedMoney: + taxes = kwargs.get("taxes") + if country and not taxes: + # FIXME After we introduce plugin architecture, taxes will be cached on the + # plugin level and there will be no need to pass it from view functions. + # This is only temporary approach to limit redis and db hits + taxes = get_taxes_for_country(country) + if not product.charge_taxes: + taxes = None + product_tax_rate = get_tax_from_object_meta(product).code + tax_rate = product_tax_rate or get_tax_from_object_meta(product.product_type).code + return apply_tax_to_price(taxes, tax_rate, price) + + +def apply_taxes_to_shipping_price_range( + prices: MoneyRange, country: "Country" +) -> TaxedMoneyRange: + taxes = None + if country: + taxes = get_taxes_for_country(country) + return get_taxed_shipping_price(prices, taxes) + + +def assign_tax_to_object_meta(obj: Union["Product", "ProductType"], tax_code: str): + if tax_code not in dict(TaxRateType.CHOICES): + return + if not hasattr(obj, "meta"): + return + if "taxes" not in obj.meta: + obj.meta["taxes"] = {} + obj.meta["taxes"][META_FIELD] = {"code": tax_code, "description": tax_code} + + +def get_tax_from_object_meta(obj: Union["Product", "ProductType"]) -> TaxType: + if not hasattr(obj, "meta"): + return TaxType(code="", description="") + tax = obj.meta.get("taxes", {}).get(META_FIELD, {}) + + return TaxType(code=tax.get("code", ""), description=tax.get("description", "")) diff --git a/saleor/core/templatetags/taxed_prices.py b/saleor/core/templatetags/taxed_prices.py index d816cead258..4742ffa5d69 100644 --- a/saleor/core/templatetags/taxed_prices.py +++ b/saleor/core/templatetags/taxed_prices.py @@ -1,7 +1,12 @@ from django import template from prices import MoneyRange, TaxedMoney, TaxedMoneyRange -from ...core.utils.taxes import DEFAULT_TAX_RATE_NAME, get_display_price +from ...core.taxes import get_display_price +from ...core.taxes.vatlayer import DEFAULT_TAX_RATE_NAME + +# FIXME This const variable belongs to vatlayer, we shouldn't take it directly from +# vatlayer module. This should be moved to plugin after we will introduce plugin +# architecture register = template.Library() @@ -17,7 +22,6 @@ def tax_rate(taxes, rate_name): """Return tax rate value for given tax rate type in current country.""" if not taxes: return 0 - tax = taxes.get(rate_name) or taxes.get(DEFAULT_TAX_RATE_NAME) return tax["value"] diff --git a/saleor/core/utils/__init__.py b/saleor/core/utils/__init__.py index d81508ae80e..75bab72734f 100644 --- a/saleor/core/utils/__init__.py +++ b/saleor/core/utils/__init__.py @@ -179,3 +179,7 @@ def get_country_name_by_code(country_code): country_code, ) return country_name + + +def get_company_address(): + return Site.objects.get_current().settings.company_address diff --git a/saleor/core/utils/random_data.py b/saleor/core/utils/random_data.py index 6fbffef113f..8341daa4a91 100644 --- a/saleor/core/utils/random_data.py +++ b/saleor/core/utils/random_data.py @@ -1,10 +1,10 @@ +import itertools import json import os import random import unicodedata import uuid from collections import defaultdict -from datetime import date from unittest.mock import patch from urllib.parse import urljoin @@ -12,7 +12,7 @@ from django.contrib.sites.models import Site from django.core.files import File from django.shortcuts import reverse -from django_countries.fields import Country +from django.utils import timezone from faker import Factory from faker.providers import BaseProvider from measurement.measures import Weight @@ -23,14 +23,14 @@ from ...checkout import AddressType from ...core.demo_obfuscators import obfuscate_address, obfuscate_email, obfuscate_order from ...core.utils.json_serializer import object_hook -from ...core.utils.taxes import get_tax_rate_by_name, get_taxes_for_country from ...core.weight import zero_weight from ...dashboard.menu.utils import update_menu from ...discount import DiscountValueType, VoucherType from ...discount.models import Sale, Voucher +from ...discount.utils import fetch_discounts from ...giftcard.models import GiftCard from ...menu.models import Menu -from ...order.models import Fulfillment, Order +from ...order.models import Fulfillment, Order, OrderLine from ...order.utils import update_order_status from ...page.models import Page from ...payment.utils import ( @@ -56,7 +56,7 @@ create_product_thumbnails, ) from ...shipping.models import ShippingMethod, ShippingMethodType, ShippingZone -from ...shipping.utils import get_taxed_shipping_price +from ..taxes import interface as tax_interface fake = Factory.create() @@ -296,7 +296,7 @@ def create_address(): street_address_1=fake.street_address(), city=fake.city(), postal_code=fake.postcode(), - country=fake.country_code(), + country=settings.DEFAULT_COUNTRY, ) return address @@ -360,27 +360,44 @@ def create_fake_payment(mock_email_confirmation, order): return payment -def create_order_line(order, discounts, taxes): - product = Product.objects.filter(variants__isnull=False).order_by("?")[0] - variant = product.variants.all()[0] - quantity = random.randrange(1, 5) - variant.quantity += quantity - variant.quantity_allocated += quantity - variant.save() - return order.lines.create( - product_name=variant.display_product(), - product_sku=variant.sku, - is_shipping_required=variant.is_shipping_required(), - quantity=quantity, - variant=variant, - unit_price=variant.get_price(discounts=discounts, taxes=taxes), - tax_rate=get_tax_rate_by_name(variant.product.tax_rate, taxes), +def create_order_lines(order, discounts, how_many=10): + variants = ( + ProductVariant.objects.filter() + .order_by("?") + .prefetch_related("product__product_type")[:how_many] ) - - -def create_order_lines(order, discounts, taxes, how_many=10): + variants_iter = itertools.cycle(variants) + lines = [] for dummy in range(how_many): - yield create_order_line(order, discounts, taxes) + variant = next(variants_iter) + quantity = random.randrange(1, 5) + variant.quantity += quantity + variant.quantity_allocated += quantity + unit_price = variant.get_price(discounts) + lines.append( + OrderLine( + order=order, + product_name=variant.display_product(), + product_sku=variant.sku, + is_shipping_required=variant.is_shipping_required(), + quantity=quantity, + variant=variant, + unit_price_net=unit_price, + unit_price_gross=unit_price, + tax_rate=0, + ) + ) + ProductVariant.objects.bulk_update(variants, ["quantity", "quantity_allocated"]) + lines = OrderLine.objects.bulk_create(lines) + for line in lines: + unit_price = tax_interface.calculate_order_line_unit(line) + line.unit_price_net = unit_price.net + line.unit_price_gross = unit_price.gross + line.tax_rate = unit_price.tax / unit_price.net + OrderLine.objects.bulk_update( + lines, ["unit_price_net", "unit_price_gross", "tax_rate"] + ) + return lines def create_fulfillments(order): @@ -395,15 +412,16 @@ def create_fulfillments(order): update_order_status(order) -def create_fake_order(discounts, taxes): +def create_fake_order(discounts, max_order_lines=5): user = random.choice( [None, User.objects.filter(is_superuser=False).order_by("?").first()] ) if user: + address = user.default_shipping_address order_data = { "user": user, "billing_address": user.default_billing_address, - "shipping_address": user.default_shipping_address, + "shipping_address": address, } else: address = create_address() @@ -415,7 +433,7 @@ def create_fake_order(discounts, taxes): shipping_method = ShippingMethod.objects.order_by("?").first() shipping_price = shipping_method.price - shipping_price = get_taxed_shipping_price(shipping_price, taxes) + shipping_price = tax_interface.apply_taxes_to_shipping(shipping_price, address) order_data.update( {"shipping_method_name": shipping_method.name, "shipping_price": shipping_price} ) @@ -423,9 +441,8 @@ def create_fake_order(discounts, taxes): order = Order.objects.create(**order_data) obfuscate_order(order) - lines = create_order_lines(order, discounts, taxes, random.randrange(1, 5)) - - order.total = sum([line.get_total() for line in lines], order.shipping_price) + lines = create_order_lines(order, discounts, random.randrange(1, max_order_lines)) + order.total = sum([line.get_total() for line in lines], shipping_price) weight = Weight(kg=0) for line in order: weight += line.variant.get_weight() @@ -455,12 +472,9 @@ def create_users(how_many=10): def create_orders(how_many=10): - taxes = get_taxes_for_country(Country(settings.DEFAULT_COUNTRY)) - discounts = Sale.objects.active(date.today()).prefetch_related( - "products", "categories", "collections" - ) - for dummy in range(how_many): - order = create_fake_order(discounts, taxes) + discounts = fetch_discounts(timezone.now()) + for _ in range(how_many): + order = create_fake_order(discounts) yield "Order: %s" % (order,) @@ -805,7 +819,7 @@ def create_vouchers(): voucher, created = Voucher.objects.get_or_create( code="DISCOUNT", defaults={ - "type": VoucherType.VALUE, + "type": VoucherType.ENTIRE_ORDER, "name": "Big order discount", "discount_value_type": DiscountValueType.FIXED, "discount_value": 25, @@ -823,7 +837,8 @@ def create_gift_card(): [User.objects.filter(is_superuser=False).order_by("?").first()] ) gift_card, created = GiftCard.objects.get_or_create( - code="Gift_card_10", user=user, initial_balance=10, current_balance=10 + code="Gift_card_10", + defaults={"user": user, "initial_balance": 10, "current_balance": 10}, ) if created: yield "Gift card #%d" % gift_card.id diff --git a/saleor/core/utils/taxes.py b/saleor/core/utils/taxes.py deleted file mode 100644 index 3267cbc07ce..00000000000 --- a/saleor/core/utils/taxes.py +++ /dev/null @@ -1,125 +0,0 @@ -from typing import Union - -from django.conf import settings -from django.contrib.sites.models import Site -from django_countries.fields import Country -from django_prices_vatlayer.utils import get_tax_for_rate, get_tax_rates_for_country -from prices import Money, MoneyRange, TaxedMoney, TaxedMoneyRange - -from ...core import TaxRateType - -DEFAULT_TAX_RATE_NAME = TaxRateType.STANDARD - -ZERO_MONEY = Money(0, settings.DEFAULT_CURRENCY) -ZERO_TAXED_MONEY = TaxedMoney(net=ZERO_MONEY, gross=ZERO_MONEY) - - -def zero_money(): - """Function used as a model's default.""" - return ZERO_MONEY - - -def apply_tax_to_price(taxes, rate_name, base): - if not taxes or not rate_name: - # Naively convert Money to TaxedMoney for consistency with price - # handling logic across the codebase, passthrough other money types - if isinstance(base, Money): - return TaxedMoney(net=base, gross=base) - if isinstance(base, MoneyRange): - return TaxedMoneyRange( - apply_tax_to_price(taxes, rate_name, base.start), - apply_tax_to_price(taxes, rate_name, base.stop), - ) - if isinstance(base, (TaxedMoney, TaxedMoneyRange)): - return base - raise TypeError("Unknown base for flat_tax: %r" % (base,)) - - if rate_name in taxes: - tax_to_apply = taxes[rate_name]["tax"] - else: - tax_to_apply = taxes[DEFAULT_TAX_RATE_NAME]["tax"] - - keep_gross = include_taxes_in_prices() - return tax_to_apply(base, keep_gross=keep_gross) - - -def get_taxes_for_country(country): - tax_rates = get_tax_rates_for_country(country.code) - if tax_rates is None: - return None - - taxes = { - DEFAULT_TAX_RATE_NAME: { - "value": tax_rates["standard_rate"], - "tax": get_tax_for_rate(tax_rates), - } - } - if tax_rates["reduced_rates"]: - taxes.update( - { - rate_name: { - "value": tax_rates["reduced_rates"][rate_name], - "tax": get_tax_for_rate(tax_rates, rate_name), - } - for rate_name in tax_rates["reduced_rates"] - } - ) - return taxes - - -def get_taxes_for_address(address): - """Return proper taxes for address or default country.""" - if address is not None: - country = address.country - else: - country = Country(settings.DEFAULT_COUNTRY) - - return get_taxes_for_country(country) - - -def get_tax_rate_by_name(rate_name, taxes=None): - """Return value of tax rate for current taxes.""" - if not taxes or not rate_name: - tax_rate = 0 - elif rate_name in taxes: - tax_rate = taxes[rate_name]["value"] - else: - tax_rate = taxes[DEFAULT_TAX_RATE_NAME]["value"] - - return tax_rate - - -def include_taxes_in_prices(): - return Site.objects.get_current().settings.include_taxes_in_prices - - -def display_gross_prices(): - return Site.objects.get_current().settings.display_gross_prices - - -def charge_taxes_on_shipping(): - return Site.objects.get_current().settings.charge_taxes_on_shipping - - -def get_taxed_shipping_price(shipping_price, taxes): - """Calculate shipping price based on settings and taxes.""" - if not charge_taxes_on_shipping(): - taxes = None - return apply_tax_to_price(taxes, DEFAULT_TAX_RATE_NAME, shipping_price) - - -def get_display_price( - base: Union[TaxedMoney, TaxedMoneyRange], display_gross=None -) -> Money: - """Return price amount that should be displayed based on settings""" - if not display_gross: - display_gross = display_gross_prices() - if isinstance(base, TaxedMoneyRange): - if display_gross: - base = MoneyRange(start=base.start.gross, stop=base.stop.gross) - else: - base = MoneyRange(start=base.start.net, stop=base.stop.net) - - if isinstance(base, TaxedMoney): - base = base.gross if display_gross else base.net - return base diff --git a/saleor/core/views.py b/saleor/core/views.py index 4d56669adfb..d545df4a9a6 100644 --- a/saleor/core/views.py +++ b/saleor/core/views.py @@ -22,8 +22,9 @@ def home(request): products_with_availability( products, discounts=request.discounts, - taxes=request.taxes, + country=request.country, local_currency=request.currency, + taxes=request.taxes, ) ) webpage_schema = get_webpage_schema(request) diff --git a/saleor/dashboard/discount/forms.py b/saleor/dashboard/discount/forms.py index 9a879b3ea9d..36c802a2911 100644 --- a/saleor/dashboard/discount/forms.py +++ b/saleor/dashboard/discount/forms.py @@ -6,15 +6,15 @@ from django_prices.forms import MoneyField from mptt.forms import TreeNodeMultipleChoiceField +from ...core.taxes import zero_money from ...core.utils.promo_code import generate_promo_code -from ...core.utils.taxes import ZERO_MONEY from ...discount import DiscountValueType from ...discount.models import Sale, Voucher from ...product.models import Category, Product from ..forms import AjaxSelect2MultipleChoiceField MinAmountSpent = MoneyField( - min_value=ZERO_MONEY, + min_value=zero_money(), required=False, currency=settings.DEFAULT_CURRENCY, label=pgettext_lazy( @@ -93,6 +93,9 @@ class Meta: "name": pgettext_lazy("Item name", "Name"), "code": pgettext_lazy("Coupon code", "Code"), "usage_limit": pgettext_lazy("Usage limit", "Usage limit"), + "min_checkout_items_quantity": pgettext_lazy( + "Voucher: discount with", "Minimal quantity of products" + ), "start_date": pgettext_lazy("Voucher date restrictions", "Start date"), "end_date": pgettext_lazy("Voucher date restrictions", "End date"), "discount_value_type": pgettext_lazy( @@ -125,15 +128,15 @@ class ShippingVoucherForm(forms.ModelForm): class Meta: model = Voucher - fields = ["countries", "min_amount_spent"] + fields = ["countries", "min_amount_spent", "min_checkout_items_quantity"] -class ValueVoucherForm(forms.ModelForm): +class EntireOrderVoucherForm(forms.ModelForm): min_amount_spent = MinAmountSpent class Meta: model = Voucher - fields = ["min_amount_spent"] + fields = ["min_amount_spent", "min_checkout_items_quantity"] def save(self, commit=True): self.instance.category = None @@ -159,6 +162,47 @@ class CommonVoucherForm(forms.ModelForm): ) +class SpecificProductVoucherForm(CommonVoucherForm): + products = AjaxSelect2MultipleChoiceField( + queryset=Product.objects.all(), + fetch_data_url=reverse_lazy("dashboard:ajax-products"), + required=True, + label=pgettext_lazy( + "Products that can be discounted with the voucher", "Products" + ), + ) + categories = TreeNodeMultipleChoiceField( + queryset=Category.objects.all(), + required=True, + label=pgettext_lazy( + "Categories that can be discounted with the voucher", "Categories" + ), + ) + + class Meta: + model = Voucher + fields = [ + "products", + "collections", + "categories", + "apply_once_per_order", + "min_amount_spent", + "min_checkout_items_quantity", + ] + labels = { + "collections": pgettext_lazy( + "Collections that can be discounted with the voucher", "Collections" + ) + } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.instance.pk: + self.fields["products"].set_initial(self.instance.products.all()) + self.fields["categories"].required = False + self.fields["products"].required = False + + class ProductVoucherForm(CommonVoucherForm): products = AjaxSelect2MultipleChoiceField( queryset=Product.objects.all(), @@ -169,7 +213,12 @@ class ProductVoucherForm(CommonVoucherForm): class Meta: model = Voucher - fields = ["products", "apply_once_per_order", "min_amount_spent"] + fields = [ + "products", + "apply_once_per_order", + "min_amount_spent", + "min_checkout_items_quantity", + ] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -180,7 +229,12 @@ def __init__(self, *args, **kwargs): class CollectionVoucherForm(CommonVoucherForm): class Meta: model = Voucher - fields = ["collections", "apply_once_per_order", "min_amount_spent"] + fields = [ + "collections", + "apply_once_per_order", + "min_amount_spent", + "min_checkout_items_quantity", + ] labels = {"collections": pgettext_lazy("Collections", "Collections")} def __init__(self, *args, **kwargs): @@ -197,4 +251,9 @@ class CategoryVoucherForm(CommonVoucherForm): class Meta: model = Voucher - fields = ["categories", "apply_once_per_order", "min_amount_spent"] + fields = [ + "categories", + "apply_once_per_order", + "min_amount_spent", + "min_checkout_items_quantity", + ] diff --git a/saleor/dashboard/discount/views.py b/saleor/dashboard/discount/views.py index 56d96aa5c8f..a763693a472 100644 --- a/saleor/dashboard/discount/views.py +++ b/saleor/dashboard/discount/views.py @@ -1,5 +1,3 @@ -from datetime import date - from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import permission_required @@ -7,6 +5,7 @@ from django.http import JsonResponse from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse +from django.utils import timezone from django.utils.translation import pgettext_lazy from ...core.utils import get_paginator_items @@ -23,8 +22,11 @@ def get_voucher_type_forms(voucher, data): VoucherType.SHIPPING: forms.ShippingVoucherForm( data or None, instance=voucher, prefix=VoucherType.SHIPPING ), - VoucherType.VALUE: forms.ValueVoucherForm( - data or None, instance=voucher, prefix=VoucherType.VALUE + VoucherType.ENTIRE_ORDER: forms.EntireOrderVoucherForm( + data or None, instance=voucher, prefix=VoucherType.ENTIRE_ORDER + ), + VoucherType.SPECIFIC_PRODUCT: forms.SpecificProductVoucherForm( + data or None, instance=voucher, prefix=VoucherType.SPECIFIC_PRODUCT ), VoucherType.PRODUCT: forms.ProductVoucherForm( data or None, instance=voucher, prefix=VoucherType.PRODUCT @@ -191,7 +193,7 @@ def voucher_delete(request, pk): @staff_member_required @permission_required("discount.manage_discounts") def ajax_voucher_list(request): - queryset = Voucher.objects.active(date=date.today()) + queryset = Voucher.objects.active(date=timezone.now()) search_query = request.GET.get("q", "") if search_query: diff --git a/saleor/dashboard/locale/ar/LC_MESSAGES/django.mo b/saleor/dashboard/locale/ar/LC_MESSAGES/django.mo index 14ff4a5540b..68ec28adf2e 100644 Binary files a/saleor/dashboard/locale/ar/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/ar/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/az/LC_MESSAGES/django.mo b/saleor/dashboard/locale/az/LC_MESSAGES/django.mo index 6ae47a99d0b..e2d0663393d 100644 Binary files a/saleor/dashboard/locale/az/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/az/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/bg/LC_MESSAGES/django.mo b/saleor/dashboard/locale/bg/LC_MESSAGES/django.mo index b006396fd44..6ceb8ce2f3c 100644 Binary files a/saleor/dashboard/locale/bg/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/bg/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/bn/LC_MESSAGES/django.mo b/saleor/dashboard/locale/bn/LC_MESSAGES/django.mo index 0c00ef23681..913a87dbd93 100644 Binary files a/saleor/dashboard/locale/bn/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/bn/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/ca/LC_MESSAGES/django.mo b/saleor/dashboard/locale/ca/LC_MESSAGES/django.mo index eccaa7972a8..0f84916eaa5 100644 Binary files a/saleor/dashboard/locale/ca/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/ca/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/cs/LC_MESSAGES/django.mo b/saleor/dashboard/locale/cs/LC_MESSAGES/django.mo index e96222ba9b2..e58f842f0af 100644 Binary files a/saleor/dashboard/locale/cs/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/cs/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/cs/LC_MESSAGES/django.po b/saleor/dashboard/locale/cs/LC_MESSAGES/django.po index 3bf48c0937b..85909d667b2 100644 --- a/saleor/dashboard/locale/cs/LC_MESSAGES/django.po +++ b/saleor/dashboard/locale/cs/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-09 15:43+0000\n" "Last-Translator: Adéla Štěpánová , 2019\n" "Language-Team: Czech (https://www.transifex.com/mirumee/teams/34782/cs/)\n" @@ -55,14 +55,14 @@ msgstr[3] "Byly nalezeny %(counter)dodpovídající kategorie" #: saleor/dashboard/category/forms.py:27 #: saleor/dashboard/collection/forms.py:26 #: saleor/dashboard/discount/forms.py:93 saleor/dashboard/product/forms.py:112 -#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:511 +#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:513 #: saleor/dashboard/sites/forms.py:54 msgctxt "Item name" msgid "Name" msgstr "Jméno" #: saleor/dashboard/category/forms.py:28 saleor/dashboard/product/forms.py:259 -#: saleor/dashboard/product/forms.py:461 saleor/dashboard/sites/forms.py:29 +#: saleor/dashboard/product/forms.py:463 saleor/dashboard/sites/forms.py:29 msgctxt "Description" msgid "Description" msgstr "Popis" @@ -155,7 +155,7 @@ msgstr "Produkty" #: saleor/dashboard/collection/forms.py:28 msgctxt "Background image of a collection" msgid "Background image" -msgstr "" +msgstr "obrázek na pozadí" #: saleor/dashboard/collection/forms.py:31 msgctxt "Description of a collection image" @@ -172,7 +172,7 @@ msgctxt "" "The publication date field, can be a posterior date for a planned " "publication." msgid "Publication date" -msgstr "" +msgstr "datum zveřejnění" #: saleor/dashboard/collection/forms.py:40 msgctxt "Description field of a collection" @@ -182,7 +182,7 @@ msgstr "Popis" #: saleor/dashboard/collection/views.py:28 msgctxt "Dashboard message" msgid "Updated homepage collection" -msgstr "" +msgstr "Aktualizována domovská stránka kolekce" #: saleor/dashboard/collection/views.py:54 msgctxt "Collection message" @@ -257,13 +257,13 @@ msgstr[1] "Byli nalezeni%(counter)d odpovídající zákazníci" msgstr[2] "Byli nalezeni %(counter)dodpovídající zákazníci" msgstr[3] "Byli nalezeni%(counter)dodpovídající zákazníci" -#: saleor/dashboard/customer/forms.py:10 +#: saleor/dashboard/customer/forms.py:11 #, python-format msgctxt "Customer form: Name field placeholder" msgid "%(name)s (Inherit from default billing address)" -msgstr "" +msgstr "%(name)s (z předchozí fakturační adresy)" -#: saleor/dashboard/customer/forms.py:29 +#: saleor/dashboard/customer/forms.py:30 msgctxt "Edit customer details in order form error" msgid "" "You can't delete your own account via dashboard, please try from the " @@ -272,69 +272,69 @@ msgstr "" "Nemůžete smazat svůj vlastní účet pomocí kontrolního panelu. Zkuste to " "prosím z obchodu." -#: saleor/dashboard/customer/forms.py:37 +#: saleor/dashboard/customer/forms.py:38 msgctxt "Edit customer details in order form error" msgid "Only superuser can delete his own account." msgstr "Pouze Administrátor může smazat svůj vlastní účet." -#: saleor/dashboard/customer/forms.py:45 +#: saleor/dashboard/customer/forms.py:46 msgctxt "Edit customer details in order form error" msgid "You have insufficient permissions, to edit staff users." msgstr "Nemáte dostatečná oprávnění k úpravě uživatelů." -#: saleor/dashboard/customer/forms.py:77 saleor/dashboard/staff/forms.py:30 +#: saleor/dashboard/customer/forms.py:104 saleor/dashboard/staff/forms.py:30 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Jméno" -#: saleor/dashboard/customer/forms.py:80 saleor/dashboard/staff/forms.py:33 +#: saleor/dashboard/customer/forms.py:107 saleor/dashboard/staff/forms.py:33 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Příjmení" -#: saleor/dashboard/customer/forms.py:82 +#: saleor/dashboard/customer/forms.py:109 msgctxt "Customer form: email address field" msgid "Email" msgstr "Email" -#: saleor/dashboard/customer/forms.py:83 +#: saleor/dashboard/customer/forms.py:110 msgctxt "Customer form: customer note field" msgid "Notes" msgstr "Poznámky" -#: saleor/dashboard/customer/forms.py:85 +#: saleor/dashboard/customer/forms.py:112 msgctxt "Customer form: is active toggle" msgid "User is active" msgstr "Uživatel je aktivní" -#: saleor/dashboard/customer/forms.py:96 +#: saleor/dashboard/customer/forms.py:123 msgctxt "Customer note" msgid "Note" msgstr "Poznámka" -#: saleor/dashboard/customer/forms.py:98 +#: saleor/dashboard/customer/forms.py:125 msgctxt "Allow customers to see note toggle" msgid "Customer can see this note" msgstr "Zákazník může tuto poznámku vidět" -#: saleor/dashboard/customer/views.py:63 +#: saleor/dashboard/customer/views.py:64 #, python-format msgctxt "Dashboard message" msgid "Added customer %s" msgstr "Přidaný zákazník %s" -#: saleor/dashboard/customer/views.py:78 +#: saleor/dashboard/customer/views.py:79 #, python-format msgctxt "Dashboard message" msgid "Updated customer %s" msgstr "Aktualizovaný zákazník %s" -#: saleor/dashboard/customer/views.py:110 +#: saleor/dashboard/customer/views.py:111 msgctxt "Dashboard message related to an customer" msgid "Added note" msgstr "Přidaná poznámka" -#: saleor/dashboard/customer/views.py:131 +#: saleor/dashboard/customer/views.py:133 #, python-format msgctxt "Dashboard message" msgid "%(customer_name)s successfully removed" @@ -373,7 +373,7 @@ msgstr "hodnota_slevy" #: saleor/dashboard/discount/filters.py:28 msgctxt "Voucher list sorting option" msgid "countries" -msgstr "" +msgstr "země" #: saleor/dashboard/discount/filters.py:29 msgctxt "Voucher list sorting option" @@ -393,17 +393,17 @@ msgstr "použito" #: saleor/dashboard/discount/filters.py:33 msgctxt "Voucher list sorting option" msgid "min_amount_spent" -msgstr "" +msgstr "min_castka" #: saleor/dashboard/discount/filters.py:38 msgctxt "Sale type filter choice" msgid "USD" -msgstr "" +msgstr "CZK" #: saleor/dashboard/discount/filters.py:39 msgctxt "Sale type filter choice" msgid "%" -msgstr "" +msgstr "%" #: saleor/dashboard/discount/filters.py:57 msgctxt "Sale list filter label" @@ -468,7 +468,7 @@ msgstr "Doba platnosti" #: saleor/dashboard/discount/filters.py:119 msgctxt "Voucher list sorting filter" msgid "Minimum amount spent" -msgstr "" +msgstr "Minimální hodnota" #: saleor/dashboard/discount/filters.py:123 msgctxt "Voucher list sorting filter label" @@ -488,7 +488,7 @@ msgstr[3] "Bylo nalezeno %(counter)dodpovídajících voucherů" #: saleor/dashboard/discount/forms.py:22 msgctxt "Lowest value for order to be able to use the voucher" msgid "Apply only if the purchase value is greater than or equal to" -msgstr "" +msgstr "Použít pouze v případě, že hodnota nákupu je větší nebo rovna" #: saleor/dashboard/discount/forms.py:32 msgctxt "Discounted products" @@ -528,7 +528,7 @@ msgstr "Zvýhodněné kategorie" #: saleor/dashboard/discount/forms.py:48 msgctxt "Discounted collections" msgid "Discounted collections" -msgstr "" +msgstr "Zvýhodněné kolekce" #: saleor/dashboard/discount/forms.py:64 msgctxt "Sale (discount) error" @@ -574,17 +574,17 @@ msgstr "Typ slevy" #: saleor/dashboard/discount/forms.py:102 msgctxt "Discount value of the voucher" msgid "Discount value" -msgstr "" +msgstr "Hodnota slevy" #: saleor/dashboard/discount/forms.py:122 msgctxt "Text above the dropdown of countries" msgid "Limit countries that voucher should apply to" -msgstr "" +msgstr "Země, ve kterých je možno poukaz použít" #: saleor/dashboard/discount/forms.py:152 msgctxt "Field label, apply discount value only once per order" msgid "Only apply once per order" -msgstr "" +msgstr "Lze použít jen jednou za objednávku." #: saleor/dashboard/discount/forms.py:156 msgctxt "Help text of checkbox for applying discount only once per order" @@ -592,6 +592,8 @@ msgid "" "If unchecked, discount value will be taken off each suitable item in an " "order." msgstr "" +"Pokud není zaškrtnuto, hodnota slevy bude odečtena z každé vyhovující " +"položky v objednávce" #: saleor/dashboard/discount/forms.py:167 msgctxt "Product" @@ -713,7 +715,7 @@ msgstr "Jméno" #: saleor/dashboard/menu/forms.py:56 msgctxt "Menu item url" msgid "URL" -msgstr "" +msgstr "URL" #: saleor/dashboard/menu/forms.py:73 msgctxt "Menu item form error" @@ -738,12 +740,13 @@ msgctxt "Menu item page hidden status" msgid "" "%(menu_item_name)s is hidden (will become visible on %(available_on_date)s)" msgstr "" +"%(menu_item_name)s je skrytá (bude zviditelněna %(available_on_date)s)" #: saleor/dashboard/menu/utils.py:123 #, python-format msgctxt "Menu item published status" msgid "%(menu_item_name)s (Not published)" -msgstr "" +msgstr "%(menu_item_name)s (nepublikováno)" #: saleor/dashboard/menu/views.py:34 msgctxt "Dashboard message" @@ -804,7 +807,7 @@ msgstr "Stránka" #: saleor/dashboard/order/filters.py:28 msgctxt "Order list sorting option" msgid "#" -msgstr "" +msgstr "#" #: saleor/dashboard/order/filters.py:29 msgctxt "Order list sorting option" @@ -824,7 +827,7 @@ msgstr "vytvořeno" #: saleor/dashboard/order/filters.py:37 msgctxt "Order list filter label" msgid "ID" -msgstr "" +msgstr "ID" #: saleor/dashboard/order/filters.py:39 msgctxt "Order list filter label" @@ -933,7 +936,7 @@ msgstr "Množství" #: saleor/dashboard/order/forms.py:303 msgctxt "Payment form error" msgid "This payment action can not be performed." -msgstr "" +msgstr "Tato platba nemůže být provedena" #: saleor/dashboard/order/forms.py:313 #, python-format @@ -959,7 +962,7 @@ msgstr "Ruční platby nemohou být vráceny" #: saleor/dashboard/order/forms.py:374 msgctxt "Payment form error" msgid "Only pre-authorized payments can be voided" -msgstr "" +msgstr "Zrušit lze pouze předem schválené platby" #: saleor/dashboard/order/forms.py:427 msgctxt "Integer number" @@ -1103,7 +1106,7 @@ msgstr "Vráceno %(amount)s" #: saleor/dashboard/order/views.py:246 msgctxt "Dashboard message" msgid "Voided payment" -msgstr "" +msgstr "Neplatná platba" #: saleor/dashboard/order/views.py:269 #, python-format @@ -1210,22 +1213,22 @@ msgstr[1] "Zpracované %(quantity_fulfilled)d položky" msgstr[2] "Zpracovaných %(quantity_fulfilled)d položek" msgstr[3] "Zpracovaných %(quantity_fulfilled)d položek" -#: saleor/dashboard/order/views.py:659 +#: saleor/dashboard/order/views.py:658 msgctxt "Dashboard message related to an order" msgid "No items fulfilled" msgstr "Žádné položky nejsou zpracovány" -#: saleor/dashboard/order/views.py:685 +#: saleor/dashboard/order/views.py:684 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s canceled" msgstr "Zpracování # %(fulfillment)s zrušeno" -#: saleor/dashboard/order/views.py:724 +#: saleor/dashboard/order/views.py:723 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s tracking number updated" -msgstr "" +msgstr "Zpracování #%(fulfillment)sčíslo zásilky bylo aktualizováno" #: saleor/dashboard/page/filters.py:8 msgctxt "Page list sorting option" @@ -1235,7 +1238,7 @@ msgstr "titulek" #: saleor/dashboard/page/filters.py:9 msgctxt "Page list sorting option" msgid "url" -msgstr "" +msgstr "url" #: saleor/dashboard/page/filters.py:15 msgctxt "Page list title filter label" @@ -1245,7 +1248,7 @@ msgstr "Titulek" #: saleor/dashboard/page/filters.py:19 msgctxt "Page list url filter label" msgid "URL" -msgstr "" +msgstr "URL" #: saleor/dashboard/page/filters.py:23 msgctxt "Page list sorting filter label" @@ -1265,7 +1268,7 @@ msgstr[3] "Nalezeno %(counter)d odpovídajících stránek" #: saleor/dashboard/page/forms.py:12 msgctxt "Page form: page content field" msgid "Content" -msgstr "" +msgstr "Obsah" #: saleor/dashboard/page/forms.py:20 msgctxt "Page form: title field" @@ -1280,7 +1283,7 @@ msgstr "" #: saleor/dashboard/page/forms.py:23 msgctxt "Page form: available on which date field" msgid "Available on" -msgstr "" +msgstr "dostupné" #: saleor/dashboard/page/forms.py:26 msgctxt "Page form: publication status indicator" @@ -1388,10 +1391,10 @@ msgstr "Řadit podle" msgctxt "Number of matching records in the dashboard attributes list" msgid "Found %(counter)d matching attribute" msgid_plural "Found %(counter)d matching attributes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Nalezen %(counter)d odpovídající atribut" +msgstr[1] "Nalezeny %(counter)d odpovídající atributy" +msgstr[2] "Nalezeno %(counter)d odpovídajících atributů" +msgstr[3] "Nalezeno %(counter)d odpovídajících atributů" #: saleor/dashboard/product/filters.py:107 msgctxt "Product type list filter label" @@ -1441,7 +1444,7 @@ msgstr "Sazba daně" #: saleor/dashboard/product/forms.py:86 saleor/dashboard/product/forms.py:263 msgctxt "ProductType weight" msgid "Weight" -msgstr "" +msgstr "hmotnost" #: saleor/dashboard/product/forms.py:89 msgctxt "ProductVariant weight help text" @@ -1449,16 +1452,18 @@ msgid "" "Default weight that will be used for calculating shipping price for products" " of that type." msgstr "" +"Standardní váha, která bude použita pro výpočet přepravní ceny pro produkty " +"tohoto typu" #: saleor/dashboard/product/forms.py:97 msgctxt "Product type attributes" msgid "Attributes common to all variants." -msgstr "" +msgstr "Atributy společné pro všechny varianty." #: saleor/dashboard/product/forms.py:104 msgctxt "Product type attributes" msgid "Attributes specific to each variant." -msgstr "" +msgstr "Atributy specifické pro každou variantu." #: saleor/dashboard/product/forms.py:113 msgctxt "Enable variants" @@ -1506,6 +1511,8 @@ msgid "" "Weight will be used to calculate shipping price, if empty, equal to default " "value used on the ProductType." msgstr "" +"Hmotnost bude použita pro výpočet poštovného. Pokud hmotnost nebude " +"vyplněna, bude použita výchozí hodnota produktu." #: saleor/dashboard/product/forms.py:278 #: saleor/dashboard/shipping/forms.py:138 @@ -1541,7 +1548,7 @@ msgstr "Čistá cena" #: saleor/dashboard/product/forms.py:347 msgctxt "ProductVariant weight" msgid "Weight" -msgstr "" +msgstr "hmotnost" #: saleor/dashboard/product/forms.py:350 msgctxt "ProductVariant weight help text" @@ -1549,6 +1556,8 @@ msgid "" "Weight will be used to calculate shipping price. If empty, weight from " "Product or ProductType will be used." msgstr "" +"Hmotnost bude použita pro výpočet poštovného. Pokud hmotnost nebude " +"vyplněna, bude použita hmotnost produktu." #: saleor/dashboard/product/forms.py:366 msgctxt "SKU" @@ -1600,17 +1609,17 @@ msgctxt "Currency amount" msgid "Cost net price" msgstr "Čistá cena výrobních nákladů" -#: saleor/dashboard/product/forms.py:460 saleor/dashboard/product/forms.py:564 +#: saleor/dashboard/product/forms.py:462 saleor/dashboard/product/forms.py:566 msgctxt "Product image" msgid "Image" msgstr "Obrázek" -#: saleor/dashboard/product/forms.py:501 +#: saleor/dashboard/product/forms.py:503 msgctxt "Product display name" msgid "Display name" msgstr "Zobrazovaný název" -#: saleor/dashboard/product/forms.py:502 +#: saleor/dashboard/product/forms.py:504 msgctxt "Product internal name" msgid "Internal name" msgstr "Interní název" @@ -1732,7 +1741,7 @@ msgstr "" #: saleor/dashboard/seo/fields.py:31 msgctxt "A SEO friendly title" msgid "SEO Friendly Title" -msgstr "" +msgstr "SEO Přátelský Titul" #: saleor/dashboard/seo/fields.py:53 msgctxt "A SEO friendly description" @@ -1747,7 +1756,7 @@ msgstr "název" #: saleor/dashboard/shipping/filters.py:13 msgctxt "Shipping zones list filter label" msgid "Shipping zone name" -msgstr "" +msgstr "Název přepravní zóny" #: saleor/dashboard/shipping/filters.py:17 msgctxt "Shipping zones list filter label" @@ -1769,15 +1778,15 @@ msgstr "Řadit podle" msgctxt "Number of matching records in the dashboard shipping zones list" msgid "Found %(counter)d matching shipping zone" msgid_plural "Found %(counter)d matching shipping zones" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Nalezena %(counter)d odpovídající oblast doručení" +msgstr[1] "Nalezeny %(counter)d odpovídající oblastí doručení" +msgstr[2] "Nalezeno %(counter)d odpovídajících oblastí doručení" +msgstr[3] "Nalezeno %(counter)d odpovídajících oblastí doručení" #: saleor/dashboard/shipping/forms.py:35 msgctxt "Label of the default weight unit picker" msgid "Default weight unit" -msgstr "" +msgstr "Výchozí jednotka hmotnosti" #: saleor/dashboard/shipping/forms.py:41 msgctxt "Default weight unit help text" @@ -1789,7 +1798,7 @@ msgstr "" #: saleor/dashboard/shipping/forms.py:52 msgctxt "Shippment Zone field name" msgid "Shipping zone name" -msgstr "" +msgstr "Název přepravní zóny" #: saleor/dashboard/shipping/forms.py:53 msgctxt "Shipping Zone field name" @@ -1804,12 +1813,13 @@ msgstr "Země" #: saleor/dashboard/shipping/forms.py:59 msgctxt "Countries field help text" msgid "Each country might be included in only one shipping zone." -msgstr "" +msgstr "Každá země může být zařazena pouze do jedné přepravní zóny" #: saleor/dashboard/shipping/forms.py:63 msgctxt "Help text for ShippingZone name" msgid "Name is for internal use only, it won't be displayed to your customers" msgstr "" +"Název je určen pouze pro interní použití, nebude zobrazen Vašim zákazníkům" #: saleor/dashboard/shipping/forms.py:68 msgctxt "Help text for ShippingZone name" @@ -1821,7 +1831,7 @@ msgstr "" #: saleor/dashboard/shipping/forms.py:98 msgctxt "ShippingZone with \"default\" option selected already exists" msgid "Default ShippingZone already exists." -msgstr "" +msgstr "Vybraná přepravní zóna již existuje" #: saleor/dashboard/shipping/forms.py:113 #, python-format @@ -1829,11 +1839,12 @@ msgctxt "Shipping zone containing duplicated countries form error" msgid "" "Countries already exists in another shipping zone: %(list_of_countries)s" msgstr "" +"Země se již vyskytují v jiných oblastech doručení: %(list_of_countries)s" #: saleor/dashboard/shipping/forms.py:125 msgctxt "ShippingZone field error" msgid "This field is required." -msgstr "" +msgstr "Toto pole je povinné" #: saleor/dashboard/shipping/forms.py:137 msgctxt "Shipping Method name" @@ -1843,82 +1854,83 @@ msgstr "Jméno" #: saleor/dashboard/shipping/forms.py:143 msgctxt "Shipping method name help text" msgid "Customers will see this at the checkout." -msgstr "" +msgstr "Zákazníci toto uvidí na pokladně. " #: saleor/dashboard/shipping/forms.py:152 msgctxt "Minimum order price to use this shipping method" msgid "Minimum order price" -msgstr "" +msgstr "Minimální cena objednávky" #: saleor/dashboard/shipping/forms.py:155 msgctxt "Maximum order price to use this order" msgid "Maximum order price" -msgstr "" +msgstr "Maximální cena objednávky" #: saleor/dashboard/shipping/forms.py:164 msgctxt "Placeholder for maximum order price set to unlimited" msgid "No limit" -msgstr "" +msgstr "Žádný limit" #: saleor/dashboard/shipping/forms.py:180 #: saleor/dashboard/shipping/forms.py:223 msgctxt "Price shipping method form error" msgid "Maximum order price should be larger than the minimum order price." msgstr "" +"Maximální cena objednávky by měla být vyšší než minimální cena objednávky" #: saleor/dashboard/shipping/forms.py:191 msgctxt "Minimum order weight to use this shipping method" msgid "Minimum order weight" -msgstr "" +msgstr "minimální hmotnost objednávky" #: saleor/dashboard/shipping/forms.py:197 msgctxt "Maximum order weight to use this shipping method" msgid "Maximum order weight" -msgstr "" +msgstr "maximální hmotnost objednávky" #: saleor/dashboard/shipping/forms.py:207 msgctxt "Placeholder for maximum order weight set to unlimited" msgid "No limit" -msgstr "" +msgstr "Žádný limit" #: saleor/dashboard/shipping/views.py:24 msgctxt "Dashboard message" msgid "Updated default weight unit" -msgstr "" +msgstr "Výchozí jednotka hmotnosti aktualizována" #: saleor/dashboard/shipping/views.py:49 msgctxt "Dashboard message" msgid "Added shipping zone" -msgstr "" +msgstr "Přepravní zóna přidána" #: saleor/dashboard/shipping/views.py:63 msgctxt "Dashboard message" msgid "Updated shipping zone" -msgstr "" +msgstr "Přepravní zóna aktualizována" #: saleor/dashboard/shipping/views.py:91 #, python-format msgctxt "Dashboard message" msgid "%(shipping_zone_name)s successfully removed" -msgstr "" +msgstr "%(shipping_zone_name)s byla úspěšně odebrána" #: saleor/dashboard/shipping/views.py:111 #, python-format msgctxt "Dashboard message" msgid "Added shipping method for %(zone_name)s shipping zone" -msgstr "" +msgstr "Byl přidán způsob dopravy pro oblast doručení %(zone_name)s" #: saleor/dashboard/shipping/views.py:134 #, python-format msgctxt "Dashboard message" msgid "Updated %(method_name)s shipping method" -msgstr "" +msgstr "Aktualizován způsob dopravy %(method_name)s" #: saleor/dashboard/shipping/views.py:153 #, python-format msgctxt "Dashboard message" msgid "Removed %(shipping_method_name)s shipping method" -msgstr "" +msgstr "Způsob dopravy %(shipping_method_name)s byl odebrán" #: saleor/dashboard/sites/forms.py:13 msgctxt "Domain name (FQDN)" @@ -1943,7 +1955,7 @@ msgstr "Aktivovat sledování zásob pro nově vytvořené produkty" #: saleor/dashboard/sites/forms.py:35 msgctxt "Default weight unit" msgid "Default weight unit" -msgstr "" +msgstr "Výchozí jednotka hmotnosti" #: saleor/dashboard/sites/forms.py:41 msgctxt "handle stock by default settings field help text" @@ -2025,7 +2037,7 @@ msgstr "Uživatel je aktivní" #: saleor/dashboard/staff/forms.py:37 msgctxt "User staff toggle" msgid "User is staff" -msgstr "" +msgstr "Uživatelem je zaměstanec" #: saleor/dashboard/staff/views.py:45 #, python-format @@ -2111,33 +2123,33 @@ msgstr "ano, ne, vše" #, python-format msgctxt "Label of first value in range filter" msgid "From %(value)s" -msgstr "" +msgstr "Od %(value)s" #: saleor/dashboard/templatetags/chips.py:95 #, python-format msgctxt "Label of second value in range filter" msgid "To %(value)s" -msgstr "" +msgstr "Do %(value)s" #: saleor/dashboard/templatetags/orders.py:14 msgctxt "Email type" msgid "Payment confirmation" -msgstr "" +msgstr "Potvrzení platby" #: saleor/dashboard/templatetags/orders.py:17 msgctxt "Email type" msgid "Shipping confirmation" -msgstr "" +msgstr "Potvrzení přepravy" #: saleor/dashboard/templatetags/orders.py:20 msgctxt "Email type" msgid "Fulfillment confirmation" -msgstr "" +msgstr "Potvrzení zpracování" #: saleor/dashboard/templatetags/orders.py:22 msgctxt "Email type" msgid "Order confirmation" -msgstr "" +msgstr "Potvrzení objednávky" #: saleor/dashboard/templatetags/orders.py:49 msgctxt "Dashboard message related to an order" @@ -2148,19 +2160,19 @@ msgstr "" #, python-format msgctxt "Dashboard message related to an order" msgid "Payment was voided by %(user_name)s" -msgstr "" +msgstr "Platba byla zrušena uživatelem %(user_name)s" #: saleor/dashboard/templatetags/orders.py:60 #, python-format msgctxt "Dashboard message related to an order" msgid "Successfully refunded: %(amount)s" -msgstr "" +msgstr "Úspěšně vráceno: %(amount)s" #: saleor/dashboard/templatetags/orders.py:67 #, python-format msgctxt "Dashboard message related to an order" msgid "Successfully captured: %(amount)s" -msgstr "" +msgstr "Úspěšně přijato: %(amount)s" #: saleor/dashboard/templatetags/orders.py:72 msgctxt "Dashboard message related to an order" @@ -2170,34 +2182,34 @@ msgstr "Ručně označeno jako placené" #: saleor/dashboard/templatetags/orders.py:76 msgctxt "Dashboard message related to an order" msgid "Order was canceled" -msgstr "" +msgstr "objednávka byla zrušena" #: saleor/dashboard/templatetags/orders.py:81 #, python-format msgctxt "Dashboard message related to an order" msgid "We restocked %(quantity)d item" msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Naskladnili jsme %(quantity)d položku" +msgstr[1] "Naskladnili jsme %(quantity)d položky" +msgstr[2] "Naskladnili jsme %(quantity)d položek" +msgstr[3] "Naskladnili jsme %(quantity)d položek" #: saleor/dashboard/templatetags/orders.py:88 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s added note: %(note)s" -msgstr "" +msgstr "%(user_name)s přidal poznámku: %(note)s" #: saleor/dashboard/templatetags/orders.py:94 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "" +msgstr "Zpracování #%(fulfillment)s zrušeno uživatelem %(user_name)s" #: saleor/dashboard/templatetags/orders.py:98 msgctxt "Dashboard message related to an order" msgid "Fulfilled some items" -msgstr "" +msgstr "Zpracování některých položek" #: saleor/dashboard/templatetags/orders.py:102 msgctxt "Dashboard message related to an order" @@ -2207,13 +2219,13 @@ msgstr "Objednávka byla odeslána" #: saleor/dashboard/templatetags/orders.py:106 msgctxt "Dashboard message related to an order" msgid "Order was fully paid" -msgstr "" +msgstr "objednávka byla plně uhrazena" #: saleor/dashboard/templatetags/orders.py:111 #, python-format msgctxt "Dashboard message related to an order" msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "" +msgstr "Email %(email_type)s byl odeslán zákazníkovi (%(email)s)" #: saleor/dashboard/templatetags/orders.py:119 #, python-format @@ -2222,24 +2234,26 @@ msgid "" "Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " "%(user_name)s" msgstr "" +"Zpracování #%(fulfillment)s číslo zásilky bylo aktualizování na " +"%(tracking_number)s uživatelem %(user_name)s" #: saleor/dashboard/templatetags/orders.py:129 #, python-format msgctxt "Dashboard message related to an order" msgid "The draft was created by %(user_name)s" -msgstr "" +msgstr "Návrh byl vytvořen %(user_name)s" #: saleor/dashboard/templatetags/orders.py:133 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s added some products" -msgstr "" +msgstr "%(user_name)s přidal produkty" #: saleor/dashboard/templatetags/orders.py:138 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s removed some products" -msgstr "" +msgstr "%(user_name)s odebral produkty" #: saleor/dashboard/templatetags/orders.py:143 #, python-format @@ -2251,10 +2265,10 @@ msgstr "" #, python-format msgctxt "Dashboard message related to an order" msgid "The order address was updated by %(user_name)s" -msgstr "" +msgstr "Adresa objednávky byla aktualizována uživatelem %(user_name)s" #: saleor/dashboard/templatetags/orders.py:153 #, python-format msgctxt "Dashboard message related to an order" msgid "The payment was failed by %(user_name)s" -msgstr "" +msgstr "Platba byla zrušena uživatelem %(user_name)s" diff --git a/saleor/dashboard/locale/da/LC_MESSAGES/django.mo b/saleor/dashboard/locale/da/LC_MESSAGES/django.mo index 6d11d208b5e..8cdfbbff77b 100644 Binary files a/saleor/dashboard/locale/da/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/da/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/de/LC_MESSAGES/django.mo b/saleor/dashboard/locale/de/LC_MESSAGES/django.mo index a31c18bfba7..4067e31f2bd 100644 Binary files a/saleor/dashboard/locale/de/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/de/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/de/LC_MESSAGES/django.po b/saleor/dashboard/locale/de/LC_MESSAGES/django.po index 29f4637f286..229063392bf 100644 --- a/saleor/dashboard/locale/de/LC_MESSAGES/django.po +++ b/saleor/dashboard/locale/de/LC_MESSAGES/django.po @@ -11,19 +11,19 @@ # Till Hinrichs , 2018 # NyаnKiyoshi , 2018 # Julian Böhnke , 2019 -# Steffen Exler , 2019 # Max Wessendorf , 2019 # H3 iM , 2019 # Michael Bykovski , 2019 +# Steffen Exler , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-09 15:43+0000\n" -"Last-Translator: Michael Bykovski , 2019\n" +"Last-Translator: Steffen Exler , 2019\n" "Language-Team: German (https://www.transifex.com/mirumee/teams/34782/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -62,14 +62,14 @@ msgstr[1] "%(counter)d passende Kategorien gefunden" #: saleor/dashboard/category/forms.py:27 #: saleor/dashboard/collection/forms.py:26 #: saleor/dashboard/discount/forms.py:93 saleor/dashboard/product/forms.py:112 -#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:511 +#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:513 #: saleor/dashboard/sites/forms.py:54 msgctxt "Item name" msgid "Name" msgstr "Name" #: saleor/dashboard/category/forms.py:28 saleor/dashboard/product/forms.py:259 -#: saleor/dashboard/product/forms.py:461 saleor/dashboard/sites/forms.py:29 +#: saleor/dashboard/product/forms.py:463 saleor/dashboard/sites/forms.py:29 msgctxt "Description" msgid "Description" msgstr "Beschreibung" @@ -260,13 +260,13 @@ msgid_plural "Found %(counter)d matching customers" msgstr[0] "%(counter)d passenden Kunden gefunden" msgstr[1] "%(counter)d passende Kunden gefunden" -#: saleor/dashboard/customer/forms.py:10 +#: saleor/dashboard/customer/forms.py:11 #, python-format msgctxt "Customer form: Name field placeholder" msgid "%(name)s (Inherit from default billing address)" msgstr "%(name)s (Standard Rechnungsadresse)" -#: saleor/dashboard/customer/forms.py:29 +#: saleor/dashboard/customer/forms.py:30 msgctxt "Edit customer details in order form error" msgid "" "You can't delete your own account via dashboard, please try from the " @@ -275,69 +275,69 @@ msgstr "" "Du kannst deinen Account nicht im Dashboard löschen, bitte versuche es auf " "der Storefront." -#: saleor/dashboard/customer/forms.py:37 +#: saleor/dashboard/customer/forms.py:38 msgctxt "Edit customer details in order form error" msgid "Only superuser can delete his own account." msgstr "Nur Superuser können ihren eigenen Account löschen." -#: saleor/dashboard/customer/forms.py:45 +#: saleor/dashboard/customer/forms.py:46 msgctxt "Edit customer details in order form error" msgid "You have insufficient permissions, to edit staff users." msgstr "Du hast unzureichende Rechte, um Mitarbeiter zu löschen." -#: saleor/dashboard/customer/forms.py:77 saleor/dashboard/staff/forms.py:30 +#: saleor/dashboard/customer/forms.py:104 saleor/dashboard/staff/forms.py:30 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Vorname" -#: saleor/dashboard/customer/forms.py:80 saleor/dashboard/staff/forms.py:33 +#: saleor/dashboard/customer/forms.py:107 saleor/dashboard/staff/forms.py:33 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Nachname" -#: saleor/dashboard/customer/forms.py:82 +#: saleor/dashboard/customer/forms.py:109 msgctxt "Customer form: email address field" msgid "Email" msgstr "E-Mail" -#: saleor/dashboard/customer/forms.py:83 +#: saleor/dashboard/customer/forms.py:110 msgctxt "Customer form: customer note field" msgid "Notes" msgstr "Notizen" -#: saleor/dashboard/customer/forms.py:85 +#: saleor/dashboard/customer/forms.py:112 msgctxt "Customer form: is active toggle" msgid "User is active" msgstr "Benutzer aktiv" -#: saleor/dashboard/customer/forms.py:96 +#: saleor/dashboard/customer/forms.py:123 msgctxt "Customer note" msgid "Note" msgstr "Notiz" -#: saleor/dashboard/customer/forms.py:98 +#: saleor/dashboard/customer/forms.py:125 msgctxt "Allow customers to see note toggle" msgid "Customer can see this note" msgstr "Kunden können diese Notiz sehen" -#: saleor/dashboard/customer/views.py:63 +#: saleor/dashboard/customer/views.py:64 #, python-format msgctxt "Dashboard message" msgid "Added customer %s" msgstr "Kunde %s hinzugefügt" -#: saleor/dashboard/customer/views.py:78 +#: saleor/dashboard/customer/views.py:79 #, python-format msgctxt "Dashboard message" msgid "Updated customer %s" msgstr "Kunde %s aktualisiert" -#: saleor/dashboard/customer/views.py:110 +#: saleor/dashboard/customer/views.py:111 msgctxt "Dashboard message related to an customer" msgid "Added note" msgstr "Notiz hinzugefügt" -#: saleor/dashboard/customer/views.py:131 +#: saleor/dashboard/customer/views.py:133 #, python-format msgctxt "Dashboard message" msgid "%(customer_name)s successfully removed" @@ -1202,18 +1202,18 @@ msgid_plural "Fulfilled %(quantity_fulfilled)d items" msgstr[0] "%(quantity_fulfilled)dProdukt abgewickelt " msgstr[1] "%(quantity_fulfilled)d Produkte abgewickelt" -#: saleor/dashboard/order/views.py:659 +#: saleor/dashboard/order/views.py:658 msgctxt "Dashboard message related to an order" msgid "No items fulfilled" msgstr "Keine Produkte abgewickelt" -#: saleor/dashboard/order/views.py:685 +#: saleor/dashboard/order/views.py:684 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s canceled" msgstr "Auftragsabwicklung #%(fulfillment)s abgebrochen" -#: saleor/dashboard/order/views.py:724 +#: saleor/dashboard/order/views.py:723 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s tracking number updated" @@ -1593,17 +1593,17 @@ msgctxt "Currency amount" msgid "Cost net price" msgstr "Netto-Preis" -#: saleor/dashboard/product/forms.py:460 saleor/dashboard/product/forms.py:564 +#: saleor/dashboard/product/forms.py:462 saleor/dashboard/product/forms.py:566 msgctxt "Product image" msgid "Image" msgstr "Bild" -#: saleor/dashboard/product/forms.py:501 +#: saleor/dashboard/product/forms.py:503 msgctxt "Product display name" msgid "Display name" msgstr "Anzeigename" -#: saleor/dashboard/product/forms.py:502 +#: saleor/dashboard/product/forms.py:504 msgctxt "Product internal name" msgid "Internal name" msgstr "Interner Name" @@ -2020,7 +2020,7 @@ msgstr "Benutzer aktiv" #: saleor/dashboard/staff/forms.py:37 msgctxt "User staff toggle" msgid "User is staff" -msgstr "" +msgstr "Benutzer ist ein Mitarbeiter" #: saleor/dashboard/staff/views.py:45 #, python-format @@ -2138,7 +2138,7 @@ msgstr "Bestellbestätigung" #: saleor/dashboard/templatetags/orders.py:49 msgctxt "Dashboard message related to an order" msgid "Order placed from draft order" -msgstr "" +msgstr "Bestellung wurde aus Bestellungsentwurf erstellt." #: saleor/dashboard/templatetags/orders.py:54 #, python-format @@ -2166,15 +2166,15 @@ msgstr "Bestellung manuell als bezahlt markiert" #: saleor/dashboard/templatetags/orders.py:76 msgctxt "Dashboard message related to an order" msgid "Order was canceled" -msgstr "" +msgstr "Bestellung wurde storniert" #: saleor/dashboard/templatetags/orders.py:81 #, python-format msgctxt "Dashboard message related to an order" msgid "We restocked %(quantity)d item" msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "We haben %(quantity)d Produkt aufgefüllt" +msgstr[1] "We haben %(quantity)d Produkte aufgefüllt" #: saleor/dashboard/templatetags/orders.py:88 #, python-format @@ -2191,7 +2191,7 @@ msgstr "Auftragsabwickung #%(fulfillment)s abgebrochen von %(user_name)s" #: saleor/dashboard/templatetags/orders.py:98 msgctxt "Dashboard message related to an order" msgid "Fulfilled some items" -msgstr "" +msgstr "Teillieferung erfolgt" #: saleor/dashboard/templatetags/orders.py:102 msgctxt "Dashboard message related to an order" @@ -2223,19 +2223,19 @@ msgstr "" #, python-format msgctxt "Dashboard message related to an order" msgid "The draft was created by %(user_name)s" -msgstr "" +msgstr "Der Bestellentwurf wurde von %(user_name)s erstellt" #: saleor/dashboard/templatetags/orders.py:133 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s added some products" -msgstr "" +msgstr "%(user_name)s hat einige Produkte hinzugefügt" #: saleor/dashboard/templatetags/orders.py:138 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s removed some products" -msgstr "" +msgstr "%(user_name)s entfernte einige Produkte" #: saleor/dashboard/templatetags/orders.py:143 #, python-format @@ -2247,10 +2247,10 @@ msgstr "" #, python-format msgctxt "Dashboard message related to an order" msgid "The order address was updated by %(user_name)s" -msgstr "" +msgstr "Lieferadresse wurde von %(user_name)s aktualisiert" #: saleor/dashboard/templatetags/orders.py:153 #, python-format msgctxt "Dashboard message related to an order" msgid "The payment was failed by %(user_name)s" -msgstr "" +msgstr "Der Bezahlvorgang von %(user_name)s ist fehlgeschlagen" diff --git a/saleor/dashboard/locale/en/LC_MESSAGES/django.mo b/saleor/dashboard/locale/en/LC_MESSAGES/django.mo index 31ce865c1f1..66dcc3a08d1 100644 Binary files a/saleor/dashboard/locale/en/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/en/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/en/LC_MESSAGES/django.po b/saleor/dashboard/locale/en/LC_MESSAGES/django.po index 5a0921a4550..26b542af79e 100644 --- a/saleor/dashboard/locale/en/LC_MESSAGES/django.po +++ b/saleor/dashboard/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-06-04 11:45-0500\n" +"POT-Creation-Date: 2019-07-03 05:42-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -574,48 +574,63 @@ msgid "" "order." msgstr "" -#: saleor/dashboard/discount/forms.py:167 +#: saleor/dashboard/discount/forms.py:168 +msgctxt "Products that can be discounted with the voucher" +msgid "Products" +msgstr "" + +#: saleor/dashboard/discount/forms.py:175 +msgctxt "Categories that can be discounted with the voucher" +msgid "Categories" +msgstr "" + +#: saleor/dashboard/discount/forms.py:190 +msgctxt "Collections that can be discounted with the voucher" +msgid "Collections" +msgstr "" + +#: saleor/dashboard/discount/forms.py:207 msgctxt "Product" msgid "Products" msgstr "" -#: saleor/dashboard/discount/forms.py:184 +#: saleor/dashboard/discount/forms.py:224 msgctxt "Collections" msgid "Collections" msgstr "" -#: saleor/dashboard/discount/forms.py:195 +#: saleor/dashboard/discount/forms.py:235 msgctxt "Categories" msgid "Categories" msgstr "" -#: saleor/dashboard/discount/views.py:64 +#: saleor/dashboard/discount/views.py:66 msgctxt "Sale (discount) message" msgid "Added sale" msgstr "" -#: saleor/dashboard/discount/views.py:78 +#: saleor/dashboard/discount/views.py:80 msgctxt "Sale (discount) message" msgid "Updated sale" msgstr "" -#: saleor/dashboard/discount/views.py:91 +#: saleor/dashboard/discount/views.py:93 #, python-format msgctxt "Sale (discount) message" msgid "Removed sale %s" msgstr "" -#: saleor/dashboard/discount/views.py:136 +#: saleor/dashboard/discount/views.py:138 msgctxt "Voucher message" msgid "Added voucher" msgstr "" -#: saleor/dashboard/discount/views.py:164 +#: saleor/dashboard/discount/views.py:166 msgctxt "Voucher message" msgid "Updated voucher" msgstr "" -#: saleor/dashboard/discount/views.py:182 +#: saleor/dashboard/discount/views.py:184 #, python-format msgctxt "Voucher message" msgid "Removed voucher %s" @@ -1563,25 +1578,25 @@ msgctxt "Product internal name" msgid "Internal name" msgstr "" -#: saleor/dashboard/product/views.py:141 +#: saleor/dashboard/product/views.py:138 #, python-format msgctxt "Dashboard message" msgid "Added product %s" msgstr "" -#: saleor/dashboard/product/views.py:173 +#: saleor/dashboard/product/views.py:170 #, python-format msgctxt "Dashboard message" msgid "Updated product %s" msgstr "" -#: saleor/dashboard/product/views.py:186 +#: saleor/dashboard/product/views.py:183 #, python-format msgctxt "Dashboard message" msgid "Removed product %s" msgstr "" -#: saleor/dashboard/product/views.py:204 +#: saleor/dashboard/product/views.py:201 #, python-format msgctxt "Dashboard message" msgid "%(count)d product has been updated" @@ -1589,81 +1604,81 @@ msgid_plural "%(count)d products have been updated" msgstr[0] "" msgstr[1] "" -#: saleor/dashboard/product/views.py:261 +#: saleor/dashboard/product/views.py:258 #, python-format msgctxt "Dashboard message" msgid "Added product type %s" msgstr "" -#: saleor/dashboard/product/views.py:277 +#: saleor/dashboard/product/views.py:274 #, python-format msgctxt "Dashboard message" msgid "Updated product type %s" msgstr "" -#: saleor/dashboard/product/views.py:292 +#: saleor/dashboard/product/views.py:289 #, python-format msgctxt "Dashboard message" msgid "Removed product type %s" msgstr "" -#: saleor/dashboard/product/views.py:340 saleor/dashboard/product/views.py:357 +#: saleor/dashboard/product/views.py:335 saleor/dashboard/product/views.py:352 #, python-format msgctxt "Dashboard message" msgid "Saved variant %s" msgstr "" -#: saleor/dashboard/product/views.py:373 +#: saleor/dashboard/product/views.py:368 #, python-format msgctxt "Dashboard message" msgid "Removed variant %s" msgstr "" -#: saleor/dashboard/product/views.py:452 +#: saleor/dashboard/product/views.py:447 #, python-format msgctxt "Dashboard message" msgid "Added image %s" msgstr "" -#: saleor/dashboard/product/views.py:471 +#: saleor/dashboard/product/views.py:466 #, python-format msgctxt "Dashboard message" msgid "Updated image %s" msgstr "" -#: saleor/dashboard/product/views.py:487 +#: saleor/dashboard/product/views.py:482 #, python-format msgctxt "Dashboard message" msgid "Removed image %s" msgstr "" -#: saleor/dashboard/product/views.py:579 +#: saleor/dashboard/product/views.py:574 msgctxt "Dashboard message" msgid "Added attribute" msgstr "" -#: saleor/dashboard/product/views.py:593 +#: saleor/dashboard/product/views.py:588 msgctxt "Dashboard message" msgid "Updated attribute" msgstr "" -#: saleor/dashboard/product/views.py:606 +#: saleor/dashboard/product/views.py:601 #, python-format msgctxt "Dashboard message" msgid "Removed attribute %s" msgstr "" -#: saleor/dashboard/product/views.py:626 +#: saleor/dashboard/product/views.py:621 msgctxt "Dashboard message" msgid "Added attribute's value" msgstr "" -#: saleor/dashboard/product/views.py:643 +#: saleor/dashboard/product/views.py:638 msgctxt "Dashboard message" msgid "Updated attribute's value" msgstr "" -#: saleor/dashboard/product/views.py:658 +#: saleor/dashboard/product/views.py:653 #, python-format msgctxt "Dashboard message" msgid "Removed attribute's value %s" diff --git a/saleor/dashboard/locale/es/LC_MESSAGES/django.mo b/saleor/dashboard/locale/es/LC_MESSAGES/django.mo index d1e9cdb7a4c..25fbfbd0e77 100644 Binary files a/saleor/dashboard/locale/es/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/es/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/es/LC_MESSAGES/django.po b/saleor/dashboard/locale/es/LC_MESSAGES/django.po index d0a94828e68..420bb1f61bf 100644 --- a/saleor/dashboard/locale/es/LC_MESSAGES/django.po +++ b/saleor/dashboard/locale/es/LC_MESSAGES/django.po @@ -18,15 +18,17 @@ # Eduardo , 2019 # Renzo Manganiello , 2019 # Juan Marín , 2019 +# Daniel Santiago , 2019 +# Hector Garcia , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-09 15:43+0000\n" -"Last-Translator: Juan Marín , 2019\n" +"Last-Translator: Hector Garcia , 2019\n" "Language-Team: Spanish (https://www.transifex.com/mirumee/teams/34782/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -65,14 +67,14 @@ msgstr[1] "Se encontraron %(counter)d categorías" #: saleor/dashboard/category/forms.py:27 #: saleor/dashboard/collection/forms.py:26 #: saleor/dashboard/discount/forms.py:93 saleor/dashboard/product/forms.py:112 -#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:511 +#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:513 #: saleor/dashboard/sites/forms.py:54 msgctxt "Item name" msgid "Name" msgstr "Nombre" #: saleor/dashboard/category/forms.py:28 saleor/dashboard/product/forms.py:259 -#: saleor/dashboard/product/forms.py:461 saleor/dashboard/sites/forms.py:29 +#: saleor/dashboard/product/forms.py:463 saleor/dashboard/sites/forms.py:29 msgctxt "Description" msgid "Description" msgstr "Descripción" @@ -263,13 +265,13 @@ msgid_plural "Found %(counter)d matching customers" msgstr[0] "Se encontró %(counter)d cliente que coincide" msgstr[1] "Se encontraron %(counter)d clientes que coinciden" -#: saleor/dashboard/customer/forms.py:10 +#: saleor/dashboard/customer/forms.py:11 #, python-format msgctxt "Customer form: Name field placeholder" msgid "%(name)s (Inherit from default billing address)" msgstr "%(name)s(Heredada de la dirección de facturación predeterminada)" -#: saleor/dashboard/customer/forms.py:29 +#: saleor/dashboard/customer/forms.py:30 msgctxt "Edit customer details in order form error" msgid "" "You can't delete your own account via dashboard, please try from the " @@ -278,69 +280,69 @@ msgstr "" "No puedes eliminar tu cuenta desde dashboard, por favor intenta desde " "storefront." -#: saleor/dashboard/customer/forms.py:37 +#: saleor/dashboard/customer/forms.py:38 msgctxt "Edit customer details in order form error" msgid "Only superuser can delete his own account." msgstr "Solo un superusuario puede borrar esta cuenta." -#: saleor/dashboard/customer/forms.py:45 +#: saleor/dashboard/customer/forms.py:46 msgctxt "Edit customer details in order form error" msgid "You have insufficient permissions, to edit staff users." msgstr "No tiene suficientes permisos para editar usuarios de administrador." -#: saleor/dashboard/customer/forms.py:77 saleor/dashboard/staff/forms.py:30 +#: saleor/dashboard/customer/forms.py:104 saleor/dashboard/staff/forms.py:30 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Nombre" -#: saleor/dashboard/customer/forms.py:80 saleor/dashboard/staff/forms.py:33 +#: saleor/dashboard/customer/forms.py:107 saleor/dashboard/staff/forms.py:33 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Apellido" -#: saleor/dashboard/customer/forms.py:82 +#: saleor/dashboard/customer/forms.py:109 msgctxt "Customer form: email address field" msgid "Email" msgstr "Correo electrónico" -#: saleor/dashboard/customer/forms.py:83 +#: saleor/dashboard/customer/forms.py:110 msgctxt "Customer form: customer note field" msgid "Notes" msgstr "Notas" -#: saleor/dashboard/customer/forms.py:85 +#: saleor/dashboard/customer/forms.py:112 msgctxt "Customer form: is active toggle" msgid "User is active" msgstr "El usuario está activo" -#: saleor/dashboard/customer/forms.py:96 +#: saleor/dashboard/customer/forms.py:123 msgctxt "Customer note" msgid "Note" msgstr "Nota" -#: saleor/dashboard/customer/forms.py:98 +#: saleor/dashboard/customer/forms.py:125 msgctxt "Allow customers to see note toggle" msgid "Customer can see this note" msgstr "El cliente puede ver esta nota" -#: saleor/dashboard/customer/views.py:63 +#: saleor/dashboard/customer/views.py:64 #, python-format msgctxt "Dashboard message" msgid "Added customer %s" msgstr "Se agregó %s cliente" -#: saleor/dashboard/customer/views.py:78 +#: saleor/dashboard/customer/views.py:79 #, python-format msgctxt "Dashboard message" msgid "Updated customer %s" msgstr "Cliente %s actualizado" -#: saleor/dashboard/customer/views.py:110 +#: saleor/dashboard/customer/views.py:111 msgctxt "Dashboard message related to an customer" msgid "Added note" msgstr "Nota agregada" -#: saleor/dashboard/customer/views.py:131 +#: saleor/dashboard/customer/views.py:133 #, python-format msgctxt "Dashboard message" msgid "%(customer_name)s successfully removed" @@ -399,7 +401,7 @@ msgstr "usado" #: saleor/dashboard/discount/filters.py:33 msgctxt "Voucher list sorting option" msgid "min_amount_spent" -msgstr "" +msgstr "valor_min_gastado" #: saleor/dashboard/discount/filters.py:38 msgctxt "Sale type filter choice" @@ -931,7 +933,7 @@ msgstr "Cantidad" #: saleor/dashboard/order/forms.py:303 msgctxt "Payment form error" msgid "This payment action can not be performed." -msgstr "" +msgstr "El pago no se pudo realizar." #: saleor/dashboard/order/forms.py:313 #, python-format @@ -990,8 +992,8 @@ msgstr "Este pedido no puede ser cancelado" msgctxt "Cancel fulfillment form action" msgid "Restock %(quantity)d item" msgid_plural "Restock %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Reabastecer %(quantity)d item" +msgstr[1] "Reabastecer %(quantity)ditems" #: saleor/dashboard/order/forms.py:521 msgctxt "Cancel fulfillment form error" @@ -1055,8 +1057,8 @@ msgstr "Número de seguimiento" msgctxt "Fulfill order line form error" msgid "%(quantity)d item remaining to fulfill." msgid_plural "%(quantity)d items remaining to fulfill." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(quantity)ditem faltante por completar" +msgstr[1] "%(quantity)ditems faltantes por completar" #: saleor/dashboard/order/views.py:83 msgctxt "Dashboard message related to an order" @@ -1195,25 +1197,25 @@ msgstr "Pedido marcado manualmente como pagado" msgctxt "Dashboard message related to an order" msgid "Fulfilled %(quantity_fulfilled)d item" msgid_plural "Fulfilled %(quantity_fulfilled)d items" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(quantity_fulfilled)ditem completado" +msgstr[1] "%(quantity_fulfilled)ditems completados" -#: saleor/dashboard/order/views.py:659 +#: saleor/dashboard/order/views.py:658 msgctxt "Dashboard message related to an order" msgid "No items fulfilled" msgstr "Sin objetos completados" -#: saleor/dashboard/order/views.py:685 +#: saleor/dashboard/order/views.py:684 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s canceled" -msgstr "" +msgstr "Envío #%(fulfillment)s cancelado" -#: saleor/dashboard/order/views.py:724 +#: saleor/dashboard/order/views.py:723 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s tracking number updated" -msgstr "" +msgstr "Número de rastreo de envío #%(fulfillment)s actualizado" #: saleor/dashboard/page/filters.py:8 msgctxt "Page list sorting option" @@ -1570,7 +1572,7 @@ msgstr "Rastrear automáticamente el inventario de este producto" #: saleor/dashboard/product/forms.py:394 msgctxt "Override price" msgid "Selling gross price override" -msgstr "" +msgstr "Sobreescribir precio de venta bruto" #: saleor/dashboard/product/forms.py:397 msgctxt "Currency amount" @@ -1580,24 +1582,24 @@ msgstr "Precio de coste bruto" #: saleor/dashboard/product/forms.py:401 msgctxt "Override price" msgid "Selling net price override" -msgstr "" +msgstr "Sobreescribir precio de venta neto" #: saleor/dashboard/product/forms.py:404 msgctxt "Currency amount" msgid "Cost net price" msgstr "Precio de coste neto" -#: saleor/dashboard/product/forms.py:460 saleor/dashboard/product/forms.py:564 +#: saleor/dashboard/product/forms.py:462 saleor/dashboard/product/forms.py:566 msgctxt "Product image" msgid "Image" msgstr "Imagen" -#: saleor/dashboard/product/forms.py:501 +#: saleor/dashboard/product/forms.py:503 msgctxt "Product display name" msgid "Display name" msgstr "Nombre a mostrar" -#: saleor/dashboard/product/forms.py:502 +#: saleor/dashboard/product/forms.py:504 msgctxt "Product internal name" msgid "Internal name" msgstr "Nombre interno" @@ -2010,7 +2012,7 @@ msgstr "El usuario está activo" #: saleor/dashboard/staff/forms.py:37 msgctxt "User staff toggle" msgid "User is staff" -msgstr "" +msgstr "Usuario es empleado" #: saleor/dashboard/staff/views.py:45 #, python-format @@ -2118,35 +2120,35 @@ msgstr "Confirmación de envío" #: saleor/dashboard/templatetags/orders.py:20 msgctxt "Email type" msgid "Fulfillment confirmation" -msgstr "" +msgstr "Confirmación de envío" #: saleor/dashboard/templatetags/orders.py:22 msgctxt "Email type" msgid "Order confirmation" -msgstr "" +msgstr "Confirmación de orden" #: saleor/dashboard/templatetags/orders.py:49 msgctxt "Dashboard message related to an order" msgid "Order placed from draft order" -msgstr "" +msgstr "Orden creada desde una orden borrador" #: saleor/dashboard/templatetags/orders.py:54 #, python-format msgctxt "Dashboard message related to an order" msgid "Payment was voided by %(user_name)s" -msgstr "" +msgstr "Pago ha sido anulado por %(user_name)s" #: saleor/dashboard/templatetags/orders.py:60 #, python-format msgctxt "Dashboard message related to an order" msgid "Successfully refunded: %(amount)s" -msgstr "" +msgstr "Devolución exitosa: %(amount)s" #: saleor/dashboard/templatetags/orders.py:67 #, python-format msgctxt "Dashboard message related to an order" msgid "Successfully captured: %(amount)s" -msgstr "" +msgstr "Pago exitoso: %(amount)s" #: saleor/dashboard/templatetags/orders.py:72 msgctxt "Dashboard message related to an order" @@ -2156,32 +2158,32 @@ msgstr "Pedido marcado manualmente como pagado" #: saleor/dashboard/templatetags/orders.py:76 msgctxt "Dashboard message related to an order" msgid "Order was canceled" -msgstr "" +msgstr "La orden ha sido cancelada" #: saleor/dashboard/templatetags/orders.py:81 #, python-format msgctxt "Dashboard message related to an order" msgid "We restocked %(quantity)d item" msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Hemos reabastecido %(quantity)ditem" +msgstr[1] "Hemos reabastecido %(quantity)ditems" #: saleor/dashboard/templatetags/orders.py:88 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s added note: %(note)s" -msgstr "" +msgstr "%(user_name)s ha agregado nota: %(note)s" #: saleor/dashboard/templatetags/orders.py:94 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" -msgstr "" +msgstr "Envío #%(fulfillment)sha sido cancelado por %(user_name)s" #: saleor/dashboard/templatetags/orders.py:98 msgctxt "Dashboard message related to an order" msgid "Fulfilled some items" -msgstr "" +msgstr "Algunos items han sido completados" #: saleor/dashboard/templatetags/orders.py:102 msgctxt "Dashboard message related to an order" @@ -2191,13 +2193,13 @@ msgstr "El pedido fue enviado" #: saleor/dashboard/templatetags/orders.py:106 msgctxt "Dashboard message related to an order" msgid "Order was fully paid" -msgstr "" +msgstr "La orden ha sido completamente pagada. " #: saleor/dashboard/templatetags/orders.py:111 #, python-format msgctxt "Dashboard message related to an order" msgid "%(email_type)s email was sent to the customer (%(email)s)" -msgstr "" +msgstr "%(email_type)semail fue enviado al cliente (%(email)s)" #: saleor/dashboard/templatetags/orders.py:119 #, python-format @@ -2206,39 +2208,42 @@ msgid "" "Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " "%(user_name)s" msgstr "" +"Envío #%(fulfillment)s ha sido actualizado a %(tracking_number)s por " +"%(user_name)s" #: saleor/dashboard/templatetags/orders.py:129 #, python-format msgctxt "Dashboard message related to an order" msgid "The draft was created by %(user_name)s" -msgstr "" +msgstr "Borrador creado por %(user_name)s" #: saleor/dashboard/templatetags/orders.py:133 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s added some products" -msgstr "" +msgstr "%(user_name)sha agregado productos" #: saleor/dashboard/templatetags/orders.py:138 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s removed some products" -msgstr "" +msgstr "%(user_name)sha removido productos" #: saleor/dashboard/templatetags/orders.py:143 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s placed the order by bypassing oversold items" msgstr "" +"%(user_name)sha creado la orden mediante bypass de items sobrevendidos" #: saleor/dashboard/templatetags/orders.py:148 #, python-format msgctxt "Dashboard message related to an order" msgid "The order address was updated by %(user_name)s" -msgstr "" +msgstr "La dirección de la orden ha sido actualizada por %(user_name)s" #: saleor/dashboard/templatetags/orders.py:153 #, python-format msgctxt "Dashboard message related to an order" msgid "The payment was failed by %(user_name)s" -msgstr "" +msgstr "Pago anulado por %(user_name)s" diff --git a/saleor/dashboard/locale/es_CO/LC_MESSAGES/django.mo b/saleor/dashboard/locale/es_CO/LC_MESSAGES/django.mo index dcc35302e2f..e4bef3a2120 100644 Binary files a/saleor/dashboard/locale/es_CO/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/es_CO/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/es_CO/LC_MESSAGES/django.po b/saleor/dashboard/locale/es_CO/LC_MESSAGES/django.po index 31f74fb7356..3a08373293b 100644 --- a/saleor/dashboard/locale/es_CO/LC_MESSAGES/django.po +++ b/saleor/dashboard/locale/es_CO/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # # Translators: # C0D3C , 2019 +# ildebrando mora , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-09 15:43+0000\n" -"Last-Translator: C0D3C , 2019\n" +"Last-Translator: ildebrando mora , 2019\n" "Language-Team: Spanish (Colombia) (https://www.transifex.com/mirumee/teams/34782/es_CO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,7 +35,7 @@ msgstr "descripción" #: saleor/dashboard/category/filters.py:15 msgctxt "Category list filter label" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/category/filters.py:19 msgctxt "Category list sorting filter label" @@ -52,22 +53,22 @@ msgstr[1] "" #: saleor/dashboard/category/forms.py:27 #: saleor/dashboard/collection/forms.py:26 #: saleor/dashboard/discount/forms.py:93 saleor/dashboard/product/forms.py:112 -#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:511 +#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:513 #: saleor/dashboard/sites/forms.py:54 msgctxt "Item name" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/category/forms.py:28 saleor/dashboard/product/forms.py:259 -#: saleor/dashboard/product/forms.py:461 saleor/dashboard/sites/forms.py:29 +#: saleor/dashboard/product/forms.py:463 saleor/dashboard/sites/forms.py:29 msgctxt "Description" msgid "Description" -msgstr "" +msgstr "Descripción" #: saleor/dashboard/category/forms.py:29 msgctxt "Category form" msgid "Background Image" -msgstr "" +msgstr "Imagen de Fondo" #: saleor/dashboard/category/forms.py:31 msgctxt "Description of a category image" @@ -112,7 +113,7 @@ msgstr "" #: saleor/dashboard/collection/filters.py:18 msgctxt "Collection list name filter label" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/collection/filters.py:22 msgctxt "Collection list filter label" @@ -172,7 +173,7 @@ msgstr "" #: saleor/dashboard/collection/forms.py:40 msgctxt "Description field of a collection" msgid "Description" -msgstr "" +msgstr "Descripción" #: saleor/dashboard/collection/views.py:28 msgctxt "Dashboard message" @@ -250,82 +251,82 @@ msgid_plural "Found %(counter)d matching customers" msgstr[0] "" msgstr[1] "" -#: saleor/dashboard/customer/forms.py:10 +#: saleor/dashboard/customer/forms.py:11 #, python-format msgctxt "Customer form: Name field placeholder" msgid "%(name)s (Inherit from default billing address)" msgstr "" -#: saleor/dashboard/customer/forms.py:29 +#: saleor/dashboard/customer/forms.py:30 msgctxt "Edit customer details in order form error" msgid "" "You can't delete your own account via dashboard, please try from the " "storefront." msgstr "" -#: saleor/dashboard/customer/forms.py:37 +#: saleor/dashboard/customer/forms.py:38 msgctxt "Edit customer details in order form error" msgid "Only superuser can delete his own account." msgstr "" -#: saleor/dashboard/customer/forms.py:45 +#: saleor/dashboard/customer/forms.py:46 msgctxt "Edit customer details in order form error" msgid "You have insufficient permissions, to edit staff users." msgstr "" -#: saleor/dashboard/customer/forms.py:77 saleor/dashboard/staff/forms.py:30 +#: saleor/dashboard/customer/forms.py:104 saleor/dashboard/staff/forms.py:30 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "" -#: saleor/dashboard/customer/forms.py:80 saleor/dashboard/staff/forms.py:33 +#: saleor/dashboard/customer/forms.py:107 saleor/dashboard/staff/forms.py:33 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "" -#: saleor/dashboard/customer/forms.py:82 +#: saleor/dashboard/customer/forms.py:109 msgctxt "Customer form: email address field" msgid "Email" msgstr "Email" -#: saleor/dashboard/customer/forms.py:83 +#: saleor/dashboard/customer/forms.py:110 msgctxt "Customer form: customer note field" msgid "Notes" msgstr "" -#: saleor/dashboard/customer/forms.py:85 +#: saleor/dashboard/customer/forms.py:112 msgctxt "Customer form: is active toggle" msgid "User is active" msgstr "" -#: saleor/dashboard/customer/forms.py:96 +#: saleor/dashboard/customer/forms.py:123 msgctxt "Customer note" msgid "Note" msgstr "" -#: saleor/dashboard/customer/forms.py:98 +#: saleor/dashboard/customer/forms.py:125 msgctxt "Allow customers to see note toggle" msgid "Customer can see this note" msgstr "" -#: saleor/dashboard/customer/views.py:63 +#: saleor/dashboard/customer/views.py:64 #, python-format msgctxt "Dashboard message" msgid "Added customer %s" msgstr "" -#: saleor/dashboard/customer/views.py:78 +#: saleor/dashboard/customer/views.py:79 #, python-format msgctxt "Dashboard message" msgid "Updated customer %s" msgstr "" -#: saleor/dashboard/customer/views.py:110 +#: saleor/dashboard/customer/views.py:111 msgctxt "Dashboard message related to an customer" msgid "Added note" msgstr "" -#: saleor/dashboard/customer/views.py:131 +#: saleor/dashboard/customer/views.py:133 #, python-format msgctxt "Dashboard message" msgid "%(customer_name)s successfully removed" @@ -399,7 +400,7 @@ msgstr "" #: saleor/dashboard/discount/filters.py:57 msgctxt "Sale list filter label" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/discount/filters.py:60 msgctxt "Sale list filter label" @@ -437,7 +438,7 @@ msgstr[1] "" #: saleor/dashboard/discount/filters.py:99 msgctxt "Voucher list name filter label" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/discount/filters.py:104 msgctxt "Sale list is sale type filter label" @@ -485,7 +486,7 @@ msgstr "" #: saleor/dashboard/discount/forms.py:39 msgctxt "Sale name" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/discount/forms.py:40 msgctxt "Discount type" @@ -630,12 +631,12 @@ msgstr "" #: saleor/dashboard/menu/filters.py:8 msgctxt "Menu list sorting option" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/menu/filters.py:11 msgctxt "Menu item list sorting option" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/menu/filters.py:17 msgctxt "Menu list filter label" @@ -658,7 +659,7 @@ msgstr[1] "" #: saleor/dashboard/menu/filters.py:42 msgctxt "Menu item list filter label" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/menu/filters.py:46 msgctxt "Menu item list filter label" @@ -691,7 +692,7 @@ msgstr "Enlace" #: saleor/dashboard/menu/forms.py:55 msgctxt "Menu item name" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/menu/forms.py:56 msgctxt "Menu item url" @@ -1173,18 +1174,18 @@ msgid_plural "Fulfilled %(quantity_fulfilled)d items" msgstr[0] "" msgstr[1] "" -#: saleor/dashboard/order/views.py:659 +#: saleor/dashboard/order/views.py:658 msgctxt "Dashboard message related to an order" msgid "No items fulfilled" msgstr "" -#: saleor/dashboard/order/views.py:685 +#: saleor/dashboard/order/views.py:684 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s canceled" msgstr "" -#: saleor/dashboard/order/views.py:724 +#: saleor/dashboard/order/views.py:723 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s tracking number updated" @@ -1297,7 +1298,7 @@ msgstr "" #: saleor/dashboard/product/filters.py:36 msgctxt "Product list filter label" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/product/filters.py:40 msgctxt "Product list filter label" @@ -1335,7 +1336,7 @@ msgstr[1] "" #: saleor/dashboard/product/filters.py:82 msgctxt "Attribute list filter label" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/product/filters.py:86 msgctxt "Attribute list filter label" @@ -1353,7 +1354,7 @@ msgstr[1] "" #: saleor/dashboard/product/filters.py:107 msgctxt "Product type list filter label" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/product/filters.py:111 msgctxt "Product type list filter label" @@ -1555,17 +1556,17 @@ msgctxt "Currency amount" msgid "Cost net price" msgstr "" -#: saleor/dashboard/product/forms.py:460 saleor/dashboard/product/forms.py:564 +#: saleor/dashboard/product/forms.py:462 saleor/dashboard/product/forms.py:566 msgctxt "Product image" msgid "Image" msgstr "" -#: saleor/dashboard/product/forms.py:501 +#: saleor/dashboard/product/forms.py:503 msgctxt "Product display name" msgid "Display name" msgstr "" -#: saleor/dashboard/product/forms.py:502 +#: saleor/dashboard/product/forms.py:504 msgctxt "Product internal name" msgid "Internal name" msgstr "" @@ -1788,7 +1789,7 @@ msgstr "" #: saleor/dashboard/shipping/forms.py:137 msgctxt "Shipping Method name" msgid "Name" -msgstr "" +msgstr "Nombre" #: saleor/dashboard/shipping/forms.py:143 msgctxt "Shipping method name help text" diff --git a/saleor/dashboard/locale/et/LC_MESSAGES/django.mo b/saleor/dashboard/locale/et/LC_MESSAGES/django.mo index 22cabaeb863..9a98693a0fd 100644 Binary files a/saleor/dashboard/locale/et/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/et/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/fa/LC_MESSAGES/django.mo b/saleor/dashboard/locale/fa/LC_MESSAGES/django.mo index 8dbccc780d5..856bccfad09 100644 Binary files a/saleor/dashboard/locale/fa/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/fa/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/fr/LC_MESSAGES/django.mo b/saleor/dashboard/locale/fr/LC_MESSAGES/django.mo index f65e27611c5..b3d7d1352f2 100644 Binary files a/saleor/dashboard/locale/fr/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/fr/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/hi/LC_MESSAGES/django.mo b/saleor/dashboard/locale/hi/LC_MESSAGES/django.mo index 8695bad49d6..489c4ed3755 100644 Binary files a/saleor/dashboard/locale/hi/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/hi/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/hu/LC_MESSAGES/django.mo b/saleor/dashboard/locale/hu/LC_MESSAGES/django.mo index 4d892818185..28910e20025 100644 Binary files a/saleor/dashboard/locale/hu/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/hu/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/hy/LC_MESSAGES/django.mo b/saleor/dashboard/locale/hy/LC_MESSAGES/django.mo index 7f75d3d10b6..9cc32ddfc3a 100644 Binary files a/saleor/dashboard/locale/hy/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/hy/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/id/LC_MESSAGES/django.mo b/saleor/dashboard/locale/id/LC_MESSAGES/django.mo index 5a668699f86..02a70f6ff6d 100644 Binary files a/saleor/dashboard/locale/id/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/id/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/id/LC_MESSAGES/django.po b/saleor/dashboard/locale/id/LC_MESSAGES/django.po index 0a0eb0145c0..39d32fb3234 100644 --- a/saleor/dashboard/locale/id/LC_MESSAGES/django.po +++ b/saleor/dashboard/locale/id/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-09 15:43+0000\n" "Last-Translator: Chetabahana , 2019\n" "Language-Team: Indonesian (https://www.transifex.com/mirumee/teams/34782/id/)\n" @@ -52,14 +52,14 @@ msgstr[0] "Ditemukan %(counter)d kategori yang cocok" #: saleor/dashboard/category/forms.py:27 #: saleor/dashboard/collection/forms.py:26 #: saleor/dashboard/discount/forms.py:93 saleor/dashboard/product/forms.py:112 -#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:511 +#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:513 #: saleor/dashboard/sites/forms.py:54 msgctxt "Item name" msgid "Name" msgstr "Nama" #: saleor/dashboard/category/forms.py:28 saleor/dashboard/product/forms.py:259 -#: saleor/dashboard/product/forms.py:461 saleor/dashboard/sites/forms.py:29 +#: saleor/dashboard/product/forms.py:463 saleor/dashboard/sites/forms.py:29 msgctxt "Description" msgid "Description" msgstr "Deskripsi" @@ -248,13 +248,13 @@ msgid "Found %(counter)d matching customer" msgid_plural "Found %(counter)d matching customers" msgstr[0] "Ditemukan %(counter)d pelanggan yang cocok" -#: saleor/dashboard/customer/forms.py:10 +#: saleor/dashboard/customer/forms.py:11 #, python-format msgctxt "Customer form: Name field placeholder" msgid "%(name)s (Inherit from default billing address)" msgstr "%(name)s (Merujuk dari alamat penagihan standar)" -#: saleor/dashboard/customer/forms.py:29 +#: saleor/dashboard/customer/forms.py:30 msgctxt "Edit customer details in order form error" msgid "" "You can't delete your own account via dashboard, please try from the " @@ -263,69 +263,69 @@ msgstr "" "Kamu tidak bisa menghapus akunmu sendiri dari dasbor, silahkan coba dari " "etalase." -#: saleor/dashboard/customer/forms.py:37 +#: saleor/dashboard/customer/forms.py:38 msgctxt "Edit customer details in order form error" msgid "Only superuser can delete his own account." msgstr "Hanya superuser bisa menghapus akunnya sendiri." -#: saleor/dashboard/customer/forms.py:45 +#: saleor/dashboard/customer/forms.py:46 msgctxt "Edit customer details in order form error" msgid "You have insufficient permissions, to edit staff users." msgstr "Kamu tidak memiliki kewenangan, untuk mengubah pengguna staf." -#: saleor/dashboard/customer/forms.py:77 saleor/dashboard/staff/forms.py:30 +#: saleor/dashboard/customer/forms.py:104 saleor/dashboard/staff/forms.py:30 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "Nama pemberian" -#: saleor/dashboard/customer/forms.py:80 saleor/dashboard/staff/forms.py:33 +#: saleor/dashboard/customer/forms.py:107 saleor/dashboard/staff/forms.py:33 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "Nama keluarga" -#: saleor/dashboard/customer/forms.py:82 +#: saleor/dashboard/customer/forms.py:109 msgctxt "Customer form: email address field" msgid "Email" msgstr "Email" -#: saleor/dashboard/customer/forms.py:83 +#: saleor/dashboard/customer/forms.py:110 msgctxt "Customer form: customer note field" msgid "Notes" msgstr "Catatan" -#: saleor/dashboard/customer/forms.py:85 +#: saleor/dashboard/customer/forms.py:112 msgctxt "Customer form: is active toggle" msgid "User is active" msgstr "Pengguna aktif" -#: saleor/dashboard/customer/forms.py:96 +#: saleor/dashboard/customer/forms.py:123 msgctxt "Customer note" msgid "Note" msgstr "Catatan" -#: saleor/dashboard/customer/forms.py:98 +#: saleor/dashboard/customer/forms.py:125 msgctxt "Allow customers to see note toggle" msgid "Customer can see this note" msgstr "Pelanggan dapat melihat catatan ini" -#: saleor/dashboard/customer/views.py:63 +#: saleor/dashboard/customer/views.py:64 #, python-format msgctxt "Dashboard message" msgid "Added customer %s" msgstr "Pelanggan %s ditambahkan" -#: saleor/dashboard/customer/views.py:78 +#: saleor/dashboard/customer/views.py:79 #, python-format msgctxt "Dashboard message" msgid "Updated customer %s" msgstr "Pelanggan %s diperbarui" -#: saleor/dashboard/customer/views.py:110 +#: saleor/dashboard/customer/views.py:111 msgctxt "Dashboard message related to an customer" msgid "Added note" msgstr "Catatan ditambahkan" -#: saleor/dashboard/customer/views.py:131 +#: saleor/dashboard/customer/views.py:133 #, python-format msgctxt "Dashboard message" msgid "%(customer_name)s successfully removed" @@ -1175,18 +1175,18 @@ msgid "Fulfilled %(quantity_fulfilled)d item" msgid_plural "Fulfilled %(quantity_fulfilled)d items" msgstr[0] "Dipenuhi%(quantity_fulfilled)d items" -#: saleor/dashboard/order/views.py:659 +#: saleor/dashboard/order/views.py:658 msgctxt "Dashboard message related to an order" msgid "No items fulfilled" msgstr "Tidak ada item yang terpenuhi" -#: saleor/dashboard/order/views.py:685 +#: saleor/dashboard/order/views.py:684 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s canceled" msgstr "Pesanan #%(fulfillment)s dibatalkan" -#: saleor/dashboard/order/views.py:724 +#: saleor/dashboard/order/views.py:723 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s tracking number updated" @@ -1559,17 +1559,17 @@ msgctxt "Currency amount" msgid "Cost net price" msgstr "Biaya harga bersih" -#: saleor/dashboard/product/forms.py:460 saleor/dashboard/product/forms.py:564 +#: saleor/dashboard/product/forms.py:462 saleor/dashboard/product/forms.py:566 msgctxt "Product image" msgid "Image" msgstr "Gambar" -#: saleor/dashboard/product/forms.py:501 +#: saleor/dashboard/product/forms.py:503 msgctxt "Product display name" msgid "Display name" msgstr "Nama tampilan" -#: saleor/dashboard/product/forms.py:502 +#: saleor/dashboard/product/forms.py:504 msgctxt "Product internal name" msgid "Internal name" msgstr "Nama internal" @@ -2098,7 +2098,7 @@ msgstr "Konfirmasi pesanan" #: saleor/dashboard/templatetags/orders.py:49 msgctxt "Dashboard message related to an order" msgid "Order placed from draft order" -msgstr "" +msgstr "Pesanan dibuat dari draf" #: saleor/dashboard/templatetags/orders.py:54 #, python-format @@ -2126,14 +2126,14 @@ msgstr "Pesanan ditandai secara manual sebagai berbayar" #: saleor/dashboard/templatetags/orders.py:76 msgctxt "Dashboard message related to an order" msgid "Order was canceled" -msgstr "" +msgstr "Pesanan dibatalkan" #: saleor/dashboard/templatetags/orders.py:81 #, python-format msgctxt "Dashboard message related to an order" msgid "We restocked %(quantity)d item" msgid_plural "We restocked %(quantity)d items" -msgstr[0] "" +msgstr[0] "Kami mengisi %(quantity)d item" #: saleor/dashboard/templatetags/orders.py:88 #, python-format @@ -2150,7 +2150,7 @@ msgstr "Pesanan #%(fulfillment)s dibatalkan oleh %(user_name)s" #: saleor/dashboard/templatetags/orders.py:98 msgctxt "Dashboard message related to an order" msgid "Fulfilled some items" -msgstr "" +msgstr "Beberapa item terpenuhi" #: saleor/dashboard/templatetags/orders.py:102 msgctxt "Dashboard message related to an order" @@ -2182,34 +2182,34 @@ msgstr "" #, python-format msgctxt "Dashboard message related to an order" msgid "The draft was created by %(user_name)s" -msgstr "" +msgstr "Draf dibuat oleh %(user_name)s" #: saleor/dashboard/templatetags/orders.py:133 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s added some products" -msgstr "" +msgstr "%(user_name)s menambahkan beberapa produk" #: saleor/dashboard/templatetags/orders.py:138 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s removed some products" -msgstr "" +msgstr "%(user_name)s menghapus beberapa produk" #: saleor/dashboard/templatetags/orders.py:143 #, python-format msgctxt "Dashboard message related to an order" msgid "%(user_name)s placed the order by bypassing oversold items" -msgstr "" +msgstr "%(user_name)s menempatkan pesanan bypass item oversold" #: saleor/dashboard/templatetags/orders.py:148 #, python-format msgctxt "Dashboard message related to an order" msgid "The order address was updated by %(user_name)s" -msgstr "" +msgstr "Alamat pesanan diperbarui oleh %(user_name)s" #: saleor/dashboard/templatetags/orders.py:153 #, python-format msgctxt "Dashboard message related to an order" msgid "The payment was failed by %(user_name)s" -msgstr "" +msgstr "Pembayaran gagal oleh %(user_name)s" diff --git a/saleor/dashboard/locale/is/LC_MESSAGES/django.mo b/saleor/dashboard/locale/is/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..a062a6ec8c5 Binary files /dev/null and b/saleor/dashboard/locale/is/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/is/LC_MESSAGES/django.po b/saleor/dashboard/locale/is/LC_MESSAGES/django.po new file mode 100644 index 00000000000..ce050cda053 --- /dev/null +++ b/saleor/dashboard/locale/is/LC_MESSAGES/django.po @@ -0,0 +1,2202 @@ +# Saleor +# Copyright (C) 2017 Mirumee Software +# This file is distributed under the same license as the Saleor package. +# Mirumee Software , 2017. +# +# Translators: +# Samúel Jón Gunnarsson , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" +"PO-Revision-Date: 2017-02-09 15:43+0000\n" +"Last-Translator: Samúel Jón Gunnarsson , 2019\n" +"Language-Team: Icelandic (https://www.transifex.com/mirumee/teams/34782/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +#: saleor/dashboard/category/filters.py:8 +msgctxt "Category list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/category/filters.py:9 +msgctxt "Category list sorting option" +msgid "description" +msgstr "lýsing" + +#: saleor/dashboard/category/filters.py:15 +msgctxt "Category list filter label" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/category/filters.py:19 +msgctxt "Category list sorting filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/category/filters.py:32 +#, python-format +msgctxt "Number of matching records in the dashboard categories list" +msgid "Found %(counter)d matching category" +msgid_plural "Found %(counter)d matching categories" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/category/forms.py:27 +#: saleor/dashboard/collection/forms.py:26 +#: saleor/dashboard/discount/forms.py:93 saleor/dashboard/product/forms.py:112 +#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:513 +#: saleor/dashboard/sites/forms.py:54 +msgctxt "Item name" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/category/forms.py:28 saleor/dashboard/product/forms.py:259 +#: saleor/dashboard/product/forms.py:463 saleor/dashboard/sites/forms.py:29 +msgctxt "Description" +msgid "Description" +msgstr "Lýsing" + +#: saleor/dashboard/category/forms.py:29 +msgctxt "Category form" +msgid "Background Image" +msgstr "Bakgrunnsmynd" + +#: saleor/dashboard/category/forms.py:31 +msgctxt "Description of a category image" +msgid "Image description" +msgstr "Lýsing á mynd" + +#: saleor/dashboard/category/views.py:46 +#, python-format +msgctxt "Dashboard message" +msgid "Added category %s" +msgstr "" + +#: saleor/dashboard/category/views.py:74 +#, python-format +msgctxt "Dashboard message" +msgid "Updated category %s" +msgstr "" + +#: saleor/dashboard/category/views.py:118 +#, python-format +msgctxt "Dashboard message" +msgid "Removed category %s" +msgstr "" + +#: saleor/dashboard/collection/filters.py:8 +msgctxt "Collection list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/collection/filters.py:11 +#: saleor/dashboard/product/filters.py:29 +msgctxt "Is publish filter choice" +msgid "Published" +msgstr "Birt" + +#: saleor/dashboard/collection/filters.py:12 +#: saleor/dashboard/product/filters.py:30 +msgctxt "Is publish filter choice" +msgid "Not published" +msgstr "" + +#: saleor/dashboard/collection/filters.py:18 +msgctxt "Collection list name filter label" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/collection/filters.py:22 +msgctxt "Collection list filter label" +msgid "Is published" +msgstr "Birt" + +#: saleor/dashboard/collection/filters.py:24 +#: saleor/dashboard/customer/filters.py:44 +#: saleor/dashboard/discount/filters.py:67 +#: saleor/dashboard/discount/filters.py:106 +#: saleor/dashboard/order/filters.py:50 saleor/dashboard/order/filters.py:58 +#: saleor/dashboard/product/filters.py:57 saleor/dashboard/taxes/filters.py:25 +msgctxt "Filter empty choice label" +msgid "All" +msgstr "Allt" + +#: saleor/dashboard/collection/filters.py:28 +msgctxt "Collection list sorting filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/collection/filters.py:41 +#, python-format +msgctxt "Number of matching records in the dashboard collections list" +msgid "Found %(counter)d matching collection" +msgid_plural "Found %(counter)d matching collections" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/collection/forms.py:19 +msgctxt "Products selection" +msgid "Products" +msgstr "Vörur" + +#: saleor/dashboard/collection/forms.py:28 +msgctxt "Background image of a collection" +msgid "Background image" +msgstr "Bakgrunnsmynd" + +#: saleor/dashboard/collection/forms.py:31 +msgctxt "Description of a collection image" +msgid "Image description" +msgstr "Lýsing á mynd" + +#: saleor/dashboard/collection/forms.py:33 +msgctxt "Collection published toggle" +msgid "Published" +msgstr "Birt" + +#: saleor/dashboard/collection/forms.py:37 +msgctxt "" +"The publication date field, can be a posterior date for a planned " +"publication." +msgid "Publication date" +msgstr "" + +#: saleor/dashboard/collection/forms.py:40 +msgctxt "Description field of a collection" +msgid "Description" +msgstr "Lýsing" + +#: saleor/dashboard/collection/views.py:28 +msgctxt "Dashboard message" +msgid "Updated homepage collection" +msgstr "" + +#: saleor/dashboard/collection/views.py:54 +msgctxt "Collection message" +msgid "Added collection" +msgstr "" + +#: saleor/dashboard/collection/views.py:70 +msgctxt "Collection message" +msgid "Updated collection" +msgstr "" + +#: saleor/dashboard/collection/views.py:94 +msgctxt "Collection message" +msgid "Deleted collection" +msgstr "" + +#: saleor/dashboard/customer/filters.py:17 +#: saleor/dashboard/staff/filters.py:16 +msgctxt "Customer list sorting option" +msgid "email" +msgstr "netfang" + +#: saleor/dashboard/customer/filters.py:19 +#: saleor/dashboard/staff/filters.py:18 +msgctxt "Customer list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/customer/filters.py:22 +#: saleor/dashboard/staff/filters.py:21 +msgctxt "Customer list sorting option" +msgid "location" +msgstr "staðsetning" + +#: saleor/dashboard/customer/filters.py:27 +msgctxt "Is active filter choice" +msgid "Active" +msgstr "Virkt" + +#: saleor/dashboard/customer/filters.py:28 +msgctxt "Is active filter choice" +msgid "Not active" +msgstr "Óvirkt" + +#: saleor/dashboard/customer/filters.py:34 +msgctxt "Customer name or email filter" +msgid "Name or email" +msgstr "Nafn eða netfang" + +#: saleor/dashboard/customer/filters.py:38 +msgctxt "Customer list filter label" +msgid "Location" +msgstr "Staðsetning" + +#: saleor/dashboard/customer/filters.py:42 +msgctxt "Customer list filter label" +msgid "Is active" +msgstr "Er virkur" + +#: saleor/dashboard/customer/filters.py:48 +msgctxt "Customer list filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/customer/filters.py:85 +#, python-format +msgctxt "Number of matching records in the dashboard customers list" +msgid "Found %(counter)d matching customer" +msgid_plural "Found %(counter)d matching customers" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/customer/forms.py:11 +#, python-format +msgctxt "Customer form: Name field placeholder" +msgid "%(name)s (Inherit from default billing address)" +msgstr "" + +#: saleor/dashboard/customer/forms.py:30 +msgctxt "Edit customer details in order form error" +msgid "" +"You can't delete your own account via dashboard, please try from the " +"storefront." +msgstr "" + +#: saleor/dashboard/customer/forms.py:38 +msgctxt "Edit customer details in order form error" +msgid "Only superuser can delete his own account." +msgstr "" + +#: saleor/dashboard/customer/forms.py:46 +msgctxt "Edit customer details in order form error" +msgid "You have insufficient permissions, to edit staff users." +msgstr "" + +#: saleor/dashboard/customer/forms.py:104 saleor/dashboard/staff/forms.py:30 +msgctxt "Customer form: Given name field" +msgid "Given name" +msgstr "Fornafn" + +#: saleor/dashboard/customer/forms.py:107 saleor/dashboard/staff/forms.py:33 +msgctxt "Customer form: Family name field" +msgid "Family name" +msgstr "Eftirnafn" + +#: saleor/dashboard/customer/forms.py:109 +msgctxt "Customer form: email address field" +msgid "Email" +msgstr "Netfang" + +#: saleor/dashboard/customer/forms.py:110 +msgctxt "Customer form: customer note field" +msgid "Notes" +msgstr "" + +#: saleor/dashboard/customer/forms.py:112 +msgctxt "Customer form: is active toggle" +msgid "User is active" +msgstr "Notandi er virkur" + +#: saleor/dashboard/customer/forms.py:123 +msgctxt "Customer note" +msgid "Note" +msgstr "Athugasemd" + +#: saleor/dashboard/customer/forms.py:125 +msgctxt "Allow customers to see note toggle" +msgid "Customer can see this note" +msgstr "" + +#: saleor/dashboard/customer/views.py:64 +#, python-format +msgctxt "Dashboard message" +msgid "Added customer %s" +msgstr "" + +#: saleor/dashboard/customer/views.py:79 +#, python-format +msgctxt "Dashboard message" +msgid "Updated customer %s" +msgstr "" + +#: saleor/dashboard/customer/views.py:111 +msgctxt "Dashboard message related to an customer" +msgid "Added note" +msgstr "" + +#: saleor/dashboard/customer/views.py:133 +#, python-format +msgctxt "Dashboard message" +msgid "%(customer_name)s successfully removed" +msgstr "" + +#: saleor/dashboard/discount/filters.py:19 +msgctxt "Sale list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/discount/filters.py:20 +msgctxt "Sale list sorting option" +msgid "value" +msgstr "Gildi" + +#: saleor/dashboard/discount/filters.py:21 +msgctxt "Sale list sorting option" +msgid "start_date" +msgstr "" + +#: saleor/dashboard/discount/filters.py:22 +msgctxt "Sale list sorting option" +msgid "end_date" +msgstr "" + +#: saleor/dashboard/discount/filters.py:26 +msgctxt "Voucher list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/discount/filters.py:27 +msgctxt "Voucher list sorting option" +msgid "discount_value" +msgstr "" + +#: saleor/dashboard/discount/filters.py:28 +msgctxt "Voucher list sorting option" +msgid "countries" +msgstr "lönd" + +#: saleor/dashboard/discount/filters.py:29 +msgctxt "Voucher list sorting option" +msgid "start_date" +msgstr "" + +#: saleor/dashboard/discount/filters.py:30 +msgctxt "Voucher list sorting option" +msgid "end_date" +msgstr "" + +#: saleor/dashboard/discount/filters.py:31 +msgctxt "Voucher list sorting option" +msgid "used" +msgstr "" + +#: saleor/dashboard/discount/filters.py:33 +msgctxt "Voucher list sorting option" +msgid "min_amount_spent" +msgstr "" + +#: saleor/dashboard/discount/filters.py:38 +msgctxt "Sale type filter choice" +msgid "USD" +msgstr "USD" + +#: saleor/dashboard/discount/filters.py:39 +msgctxt "Sale type filter choice" +msgid "%" +msgstr "%" + +#: saleor/dashboard/discount/filters.py:57 +msgctxt "Sale list filter label" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/discount/filters.py:60 +msgctxt "Sale list filter label" +msgid "Categories" +msgstr "Flokkar" + +#: saleor/dashboard/discount/filters.py:65 +msgctxt "Sale list filter label" +msgid "Discount type" +msgstr "Afsláttargerð" + +#: saleor/dashboard/discount/filters.py:70 +msgctxt "Sale list filter label" +msgid "Value" +msgstr "Gildi" + +#: saleor/dashboard/discount/filters.py:72 +msgctxt "Sale list sorting filter label" +msgid "Period of validity" +msgstr "Gildistími" + +#: saleor/dashboard/discount/filters.py:78 +msgctxt "Sale list filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/discount/filters.py:91 +#, python-format +msgctxt "Number of matching records in the dashboard sales list" +msgid "Found %(counter)d matching sale" +msgid_plural "Found %(counter)d matching sales" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/discount/filters.py:99 +msgctxt "Voucher list name filter label" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/discount/filters.py:104 +msgctxt "Sale list is sale type filter label" +msgid "Discount type" +msgstr "Afsláttargerð" + +#: saleor/dashboard/discount/filters.py:110 +msgctxt "Sale list filter label" +msgid "Discount_value" +msgstr "" + +#: saleor/dashboard/discount/filters.py:113 +msgctxt "Voucher list sorting filter label" +msgid "Period of validity" +msgstr "Gildistími" + +#: saleor/dashboard/discount/filters.py:119 +msgctxt "Voucher list sorting filter" +msgid "Minimum amount spent" +msgstr "" + +#: saleor/dashboard/discount/filters.py:123 +msgctxt "Voucher list sorting filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/discount/filters.py:136 +#, python-format +msgctxt "Number of matching records in the dashboard vouchers list" +msgid "Found %(counter)d matching voucher" +msgid_plural "Found %(counter)d matching vouchers" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/discount/forms.py:22 +msgctxt "Lowest value for order to be able to use the voucher" +msgid "Apply only if the purchase value is greater than or equal to" +msgstr "" + +#: saleor/dashboard/discount/forms.py:32 +msgctxt "Discounted products" +msgid "Discounted products" +msgstr "Vörur á afslætti" + +#: saleor/dashboard/discount/forms.py:39 +msgctxt "Sale name" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/discount/forms.py:40 +msgctxt "Discount type" +msgid "Fixed or percentage" +msgstr "" + +#: saleor/dashboard/discount/forms.py:41 +msgctxt "Sale date restrictions" +msgid "Start date" +msgstr "Upphafsdagsetning" + +#: saleor/dashboard/discount/forms.py:42 +msgctxt "Sale date restrictions" +msgid "End date" +msgstr "Endadagsetning" + +#: saleor/dashboard/discount/forms.py:43 +msgctxt "Percentage or fixed amount value" +msgid "Value" +msgstr "Gildi" + +#: saleor/dashboard/discount/forms.py:45 +msgctxt "Discounted categories" +msgid "Discounted categories" +msgstr "Flokkar á afslætti" + +#: saleor/dashboard/discount/forms.py:48 +msgctxt "Discounted collections" +msgid "Discounted collections" +msgstr "" + +#: saleor/dashboard/discount/forms.py:64 +msgctxt "Sale (discount) error" +msgid "Sale cannot exceed 100%" +msgstr "" + +#: saleor/dashboard/discount/forms.py:73 +msgctxt "Sale (discount) error" +msgid "" +"A single sale must point to at least one product, collectionand/or category." +msgstr "" + +#: saleor/dashboard/discount/forms.py:92 +msgctxt "Discount type" +msgid "Discount type" +msgstr "Afsláttargerð" + +#: saleor/dashboard/discount/forms.py:94 +msgctxt "Coupon code" +msgid "Code" +msgstr "Kóði" + +#: saleor/dashboard/discount/forms.py:95 +msgctxt "Usage limit" +msgid "Usage limit" +msgstr "Notkunartakmörkun" + +#: saleor/dashboard/discount/forms.py:96 +msgctxt "Voucher date restrictions" +msgid "Start date" +msgstr "Upphafsdagsetning" + +#: saleor/dashboard/discount/forms.py:97 +msgctxt "Voucher date restrictions" +msgid "End date" +msgstr "Endadagsetning" + +#: saleor/dashboard/discount/forms.py:99 +msgctxt "Discount type of the voucher" +msgid "Discount type" +msgstr "Afsláttargerð" + +#: saleor/dashboard/discount/forms.py:102 +msgctxt "Discount value of the voucher" +msgid "Discount value" +msgstr "" + +#: saleor/dashboard/discount/forms.py:122 +msgctxt "Text above the dropdown of countries" +msgid "Limit countries that voucher should apply to" +msgstr "" + +#: saleor/dashboard/discount/forms.py:152 +msgctxt "Field label, apply discount value only once per order" +msgid "Only apply once per order" +msgstr "" + +#: saleor/dashboard/discount/forms.py:156 +msgctxt "Help text of checkbox for applying discount only once per order" +msgid "" +"If unchecked, discount value will be taken off each suitable item in an " +"order." +msgstr "" + +#: saleor/dashboard/discount/forms.py:167 +msgctxt "Product" +msgid "Products" +msgstr "Vörur" + +#: saleor/dashboard/discount/forms.py:184 +msgctxt "Collections" +msgid "Collections" +msgstr "" + +#: saleor/dashboard/discount/forms.py:195 +msgctxt "Categories" +msgid "Categories" +msgstr "Flokkar" + +#: saleor/dashboard/discount/views.py:64 +msgctxt "Sale (discount) message" +msgid "Added sale" +msgstr "Bætti við útsölu" + +#: saleor/dashboard/discount/views.py:78 +msgctxt "Sale (discount) message" +msgid "Updated sale" +msgstr "Uppfærði útsölu" + +#: saleor/dashboard/discount/views.py:91 +#, python-format +msgctxt "Sale (discount) message" +msgid "Removed sale %s" +msgstr "" + +#: saleor/dashboard/discount/views.py:136 +msgctxt "Voucher message" +msgid "Added voucher" +msgstr "" + +#: saleor/dashboard/discount/views.py:164 +msgctxt "Voucher message" +msgid "Updated voucher" +msgstr "" + +#: saleor/dashboard/discount/views.py:182 +#, python-format +msgctxt "Voucher message" +msgid "Removed voucher %s" +msgstr "" + +#: saleor/dashboard/menu/filters.py:8 +msgctxt "Menu list sorting option" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/menu/filters.py:11 +msgctxt "Menu item list sorting option" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/menu/filters.py:17 +msgctxt "Menu list filter label" +msgid "Menu name" +msgstr "Nafn á valmynd" + +#: saleor/dashboard/menu/filters.py:21 +msgctxt "Menu list filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/menu/filters.py:34 +#, python-format +msgctxt "Number of matching records in the dashboard menus list" +msgid "Found %(counter)d matching menu" +msgid_plural "Found %(counter)d matching menus" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/menu/filters.py:42 +msgctxt "Menu item list filter label" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/menu/filters.py:46 +msgctxt "Menu item list filter label" +msgid "Points to" +msgstr "Bendir á" + +#: saleor/dashboard/menu/filters.py:50 +msgctxt "Menu item list sorting filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/menu/filters.py:63 +#, python-format +msgctxt "Number of matching records in the dashboard menu items list" +msgid "Found %(counter)d matching menu item" +msgid_plural "Found %(counter)d matching menu items" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/menu/forms.py:25 +msgctxt "Menu name" +msgid "Menu name" +msgstr "Nafn á valmynd" + +#: saleor/dashboard/menu/forms.py:48 +msgctxt "Menu item object to link" +msgid "Link" +msgstr "Tengill" + +#: saleor/dashboard/menu/forms.py:55 +msgctxt "Menu item name" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/menu/forms.py:56 +msgctxt "Menu item url" +msgid "URL" +msgstr "SLÓÐ" + +#: saleor/dashboard/menu/forms.py:73 +msgctxt "Menu item form error" +msgid "Maximum nesting level for menu items equals to 2." +msgstr "" + +#: saleor/dashboard/menu/forms.py:83 +msgctxt "Menu item form error" +msgid "A single menu item can't point to both an internal link and URL." +msgstr "" + +#: saleor/dashboard/menu/forms.py:92 +msgctxt "Menu item form error" +msgid "A single menu item must point to an internal link or URL." +msgstr "" + +#: saleor/dashboard/menu/utils.py:110 +#, python-format +msgctxt "Menu item page hidden status" +msgid "" +"%(menu_item_name)s is hidden (will become visible on %(available_on_date)s)" +msgstr "" + +#: saleor/dashboard/menu/utils.py:123 +#, python-format +msgctxt "Menu item published status" +msgid "%(menu_item_name)s (Not published)" +msgstr "" + +#: saleor/dashboard/menu/views.py:34 +msgctxt "Dashboard message" +msgid "Updated storefront menus" +msgstr "" + +#: saleor/dashboard/menu/views.py:53 +#, python-format +msgctxt "Dashboard message" +msgid "Added menu %s" +msgstr "Bætti við valmynd %s" + +#: saleor/dashboard/menu/views.py:67 +#, python-format +msgctxt "Dashboard message" +msgid "Updated menu %s" +msgstr "Uppfærði valmynd %s" + +#: saleor/dashboard/menu/views.py:101 +#, python-format +msgctxt "Dashboard message" +msgid "Removed menu %s" +msgstr "Fjarlægði valmynd %s" + +#: saleor/dashboard/menu/views.py:122 +#, python-format +msgctxt "Dashboard message" +msgid "Added menu item %s" +msgstr "" + +#: saleor/dashboard/menu/views.py:144 +#, python-format +msgctxt "Dashboard message" +msgid "Saved menu item %s" +msgstr "" + +#: saleor/dashboard/menu/views.py:159 +#, python-format +msgctxt "Dashboard message" +msgid "Removed menu item %s" +msgstr "" + +#: saleor/dashboard/menu/views.py:245 +msgctxt "Link object type group description" +msgid "Collection" +msgstr "" + +#: saleor/dashboard/menu/views.py:251 +msgctxt "Link object type group description" +msgid "Category" +msgstr "Flokkur" + +#: saleor/dashboard/menu/views.py:257 +msgctxt "Link object type group description" +msgid "Page" +msgstr "Síða" + +#: saleor/dashboard/order/filters.py:28 +msgctxt "Order list sorting option" +msgid "#" +msgstr "#" + +#: saleor/dashboard/order/filters.py:29 +msgctxt "Order list sorting option" +msgid "payment" +msgstr "greiðsla" + +#: saleor/dashboard/order/filters.py:30 +msgctxt "Order list sorting option" +msgid "email" +msgstr "netfang" + +#: saleor/dashboard/order/filters.py:31 saleor/dashboard/order/filters.py:32 +msgctxt "Order list sorting option" +msgid "created" +msgstr "" + +#: saleor/dashboard/order/filters.py:37 +msgctxt "Order list filter label" +msgid "ID" +msgstr "ID" + +#: saleor/dashboard/order/filters.py:39 +msgctxt "Order list filter label" +msgid "Customer name or email" +msgstr "Nafn viðskiptavinar eða netfang" + +#: saleor/dashboard/order/filters.py:43 +msgctxt "Order list filter label" +msgid "Placed on" +msgstr "" + +#: saleor/dashboard/order/filters.py:48 +msgctxt "Order list filter label" +msgid "Order status" +msgstr "Staða pöntunar" + +#: saleor/dashboard/order/filters.py:54 +msgctxt "Order list filter label" +msgid "Payment status" +msgstr "Greiðslustaða" + +#: saleor/dashboard/order/filters.py:62 +msgctxt "Order list filter label" +msgid "Total" +msgstr "Samtals" + +#: saleor/dashboard/order/filters.py:65 +msgctxt "Order list filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/order/filters.py:99 +#, python-format +msgctxt "Number of matching records in the dashboard orders list" +msgid "Found %(counter)d matching order" +msgid_plural "Found %(counter)d matching orders" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/order/forms.py:49 +msgctxt "Send email to customer about order created by staff users" +msgid "Send email with order confirmation to the customer" +msgstr "" + +#: saleor/dashboard/order/forms.py:72 +msgctxt "Create draft order form error" +msgid "Could not create order without any products" +msgstr "" + +#: saleor/dashboard/order/forms.py:89 +msgctxt "Create draft order form error" +msgid "Shipping method is not valid for chosen shipping address" +msgstr "" + +#: saleor/dashboard/order/forms.py:120 +msgctxt "Update an order with user default addresses" +msgid "Set billing and shipping address in order to customer defaults" +msgstr "" + +#: saleor/dashboard/order/forms.py:130 +msgctxt "Order form: editing customer details - selecting a customer" +msgid "Customer" +msgstr "Viðskiptavinur" + +#: saleor/dashboard/order/forms.py:137 +msgctxt "Order customer email" +msgid "Email" +msgstr "Netfang" + +#: saleor/dashboard/order/forms.py:153 +msgctxt "Edit customer details in order form error" +msgid "" +"An order can be related either with an email or an existing user account" +msgstr "" + +#: saleor/dashboard/order/forms.py:184 +msgctxt "Shipping method form field label" +msgid "Shipping method" +msgstr "Sendingaraðferð" + +#: saleor/dashboard/order/forms.py:243 +msgctxt "Order discount amount fixed value" +msgid "Discount amount" +msgstr "" + +#: saleor/dashboard/order/forms.py:259 +msgctxt "Order voucher" +msgid "Voucher" +msgstr "" + +#: saleor/dashboard/order/forms.py:288 +msgctxt "Order note" +msgid "Note" +msgstr "Athugasemd" + +#: saleor/dashboard/order/forms.py:296 +msgctxt "Payment management form (capture, refund, void)" +msgid "Amount" +msgstr "Upphæð" + +#: saleor/dashboard/order/forms.py:303 +msgctxt "Payment form error" +msgid "This payment action can not be performed." +msgstr "" + +#: saleor/dashboard/order/forms.py:313 +#, python-format +msgctxt "Payment form error" +msgid "Payment gateway error: %s" +msgstr "" + +#: saleor/dashboard/order/forms.py:335 +msgctxt "Payment form error" +msgid "Only pre-authorized payments can be captured" +msgstr "" + +#: saleor/dashboard/order/forms.py:351 +msgctxt "Payment form error" +msgid "Only confirmed payments can be refunded" +msgstr "" + +#: saleor/dashboard/order/forms.py:361 +msgctxt "Payment form error" +msgid "Manual payments can not be refunded" +msgstr "" + +#: saleor/dashboard/order/forms.py:374 +msgctxt "Payment form error" +msgid "Only pre-authorized payments can be voided" +msgstr "" + +#: saleor/dashboard/order/forms.py:427 +msgctxt "Integer number" +msgid "Quantity" +msgstr "Magn" + +#: saleor/dashboard/order/forms.py:447 +#, python-format +msgctxt "Change quantity form error" +msgid "Only %(remaining)d remaining in stock." +msgid_plural "Only %(remaining)d remaining in stock." +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/order/forms.py:480 +#, python-format +msgctxt "Cancel order form action" +msgid "Restock %(quantity)d item" +msgid_plural "Restock %(quantity)d items" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/order/forms.py:489 +msgctxt "Cancel order form error" +msgid "This order can't be canceled" +msgstr "Ekki er hægt að hætta við þessa pöntun" + +#: saleor/dashboard/order/forms.py:510 +#, python-format +msgctxt "Cancel fulfillment form action" +msgid "Restock %(quantity)d item" +msgid_plural "Restock %(quantity)d items" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/order/forms.py:521 +msgctxt "Cancel fulfillment form error" +msgid "This fulfillment can't be canceled" +msgstr "" + +#: saleor/dashboard/order/forms.py:537 +msgctxt "Send mail to customer" +msgid "Send notification email to customer" +msgstr "Senda tilkynningu í tölvupósti á viðskiptavin" + +#: saleor/dashboard/order/forms.py:545 +msgctxt "Fulfillment record" +msgid "Tracking number" +msgstr "Rakningarnúmer" + +#: saleor/dashboard/order/forms.py:565 +msgctxt "Remove voucher form error" +msgid "This order has no voucher" +msgstr "" + +#: saleor/dashboard/order/forms.py:579 +msgctxt "Payment status field value" +msgid "All" +msgstr "Allt" + +#: saleor/dashboard/order/forms.py:594 +msgctxt "Order form: subform to add variant to order form: variant field" +msgid "Variant" +msgstr "Afbrigði" + +#: saleor/dashboard/order/forms.py:598 +msgctxt "Add variant to order form label" +msgid "Quantity" +msgstr "Magn" + +#: saleor/dashboard/order/forms.py:620 +#, python-format +msgctxt "Add item form error" +msgid "Could not add item. Only %(remaining)d remaining in stock." +msgstr "" + +#: saleor/dashboard/order/forms.py:649 +msgctxt "Order form: address subform - phone number input field" +msgid "Phone number" +msgstr "Símanúmer" + +#: saleor/dashboard/order/forms.py:665 +msgctxt "Send mail to customer" +msgid "Send shipment details to your customer now" +msgstr "" + +#: saleor/dashboard/order/forms.py:673 +msgctxt "Order tracking number" +msgid "Tracking number" +msgstr "Rakningarnúmer" + +#: saleor/dashboard/order/forms.py:712 +#, python-format +msgctxt "Fulfill order line form error" +msgid "%(quantity)d item remaining to fulfill." +msgid_plural "%(quantity)d items remaining to fulfill." +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/order/views.py:83 +msgctxt "Dashboard message related to an order" +msgid "Draft order created" +msgstr "" + +#: saleor/dashboard/order/views.py:105 +msgctxt "Dashboard message related to an order" +msgid "Order created from draft order" +msgstr "" + +#: saleor/dashboard/order/views.py:127 +msgctxt "Dashboard message" +msgid "Draft order successfully removed" +msgstr "" + +#: saleor/dashboard/order/views.py:170 +msgctxt "Dashboard message related to an order" +msgid "Added note" +msgstr "" + +#: saleor/dashboard/order/views.py:192 +#, python-format +msgctxt "Dashboard message related to a payment" +msgid "Captured %(amount)s" +msgstr "" + +#: saleor/dashboard/order/views.py:219 +#, python-format +msgctxt "Dashboard message related to a payment" +msgid "Refunded %(amount)s" +msgstr "" + +#: saleor/dashboard/order/views.py:246 +msgctxt "Dashboard message" +msgid "Voided payment" +msgstr "" + +#: saleor/dashboard/order/views.py:269 +#, python-format +msgctxt "Dashboard message related to an order line" +msgid "" +"Changed quantity for variant %(variant)s from %(old_quantity)s to " +"%(new_quantity)s" +msgstr "" + +#: saleor/dashboard/order/views.py:297 +#, python-format +msgctxt "Dashboard message related to an order line" +msgid "Canceled item %s" +msgstr "" + +#: saleor/dashboard/order/views.py:334 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "Added %(quantity)d x %(variant)s" +msgstr "" + +#: saleor/dashboard/order/views.py:343 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "Insufficient stock: could not add %(quantity)d x %(variant)s" +msgstr "" + +#: saleor/dashboard/order/views.py:363 +msgctxt "Dashboard message" +msgid "Updated shipping address" +msgstr "Uppfærð afhendingarstaðsetning" + +#: saleor/dashboard/order/views.py:367 +msgctxt "Dashboard message" +msgid "Updated billing address" +msgstr "Uppfærð greiðslustaðsetning" + +#: saleor/dashboard/order/views.py:398 +#, python-format +msgctxt "Dashboard message" +msgid "%s email assigned to an order" +msgstr "" + +#: saleor/dashboard/order/views.py:403 +#, python-format +msgctxt "Dashboard message" +msgid "%s user assigned to an order" +msgstr "" + +#: saleor/dashboard/order/views.py:407 +msgctxt "Dashboard message" +msgid "Guest user assigned to an order" +msgstr "Gestanotanda úthlutað á pöntun" + +#: saleor/dashboard/order/views.py:426 +msgctxt "Dashboard message" +msgid "Customer removed from an order" +msgstr "" + +#: saleor/dashboard/order/views.py:441 +msgctxt "Dashboard message" +msgid "Shipping updated" +msgstr "Afhendingarstaður uppfærður" + +#: saleor/dashboard/order/views.py:459 +msgctxt "Dashboard message" +msgid "Shipping removed" +msgstr "Afhendingarstaður fjarlægður" + +#: saleor/dashboard/order/views.py:473 +msgctxt "Dashboard message" +msgid "Discount updated" +msgstr "Afsláttur uppfærður" + +#: saleor/dashboard/order/views.py:492 +msgctxt "Dashboard message" +msgid "Voucher updated" +msgstr "" + +#: saleor/dashboard/order/views.py:513 +msgctxt "Dashboard message" +msgid "Order canceled" +msgstr "Hætt var við pöntun" + +#: saleor/dashboard/order/views.py:534 +msgctxt "Dashboard message" +msgid "Removed voucher from order" +msgstr "" + +#: saleor/dashboard/order/views.py:566 +msgctxt "Dashboard message" +msgid "Order manually marked as paid" +msgstr "Pöntun handvirkt merkt sem greidd" + +#: saleor/dashboard/order/views.py:641 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "Fulfilled %(quantity_fulfilled)d item" +msgid_plural "Fulfilled %(quantity_fulfilled)d items" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/order/views.py:658 +msgctxt "Dashboard message related to an order" +msgid "No items fulfilled" +msgstr "" + +#: saleor/dashboard/order/views.py:684 +#, python-format +msgctxt "Dashboard message" +msgid "Fulfillment #%(fulfillment)s canceled" +msgstr "" + +#: saleor/dashboard/order/views.py:723 +#, python-format +msgctxt "Dashboard message" +msgid "Fulfillment #%(fulfillment)s tracking number updated" +msgstr "" + +#: saleor/dashboard/page/filters.py:8 +msgctxt "Page list sorting option" +msgid "title" +msgstr "titill" + +#: saleor/dashboard/page/filters.py:9 +msgctxt "Page list sorting option" +msgid "url" +msgstr "slóð" + +#: saleor/dashboard/page/filters.py:15 +msgctxt "Page list title filter label" +msgid "Title" +msgstr "Titill" + +#: saleor/dashboard/page/filters.py:19 +msgctxt "Page list url filter label" +msgid "URL" +msgstr "SLÓÐ" + +#: saleor/dashboard/page/filters.py:23 +msgctxt "Page list sorting filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/page/filters.py:36 +#, python-format +msgctxt "Number of matching records in the dashboard page list" +msgid "Found %(counter)d matching page" +msgid_plural "Found %(counter)d matching pages" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/page/forms.py:12 +msgctxt "Page form: page content field" +msgid "Content" +msgstr "" + +#: saleor/dashboard/page/forms.py:20 +msgctxt "Page form: title field" +msgid "Title" +msgstr "Titill" + +#: saleor/dashboard/page/forms.py:21 +msgctxt "Page form: slug field" +msgid "Slug" +msgstr "" + +#: saleor/dashboard/page/forms.py:23 +msgctxt "Page form: available on which date field" +msgid "Available on" +msgstr "" + +#: saleor/dashboard/page/forms.py:26 +msgctxt "Page form: publication status indicator" +msgid "Is published" +msgstr "Birt" + +#: saleor/dashboard/page/forms.py:31 +msgctxt "Form field help text" +msgid "Slug is being used to create page URL" +msgstr "" + +#: saleor/dashboard/page/views.py:50 +msgctxt "Dashboard message" +msgid "Saved page" +msgstr "Vistaði síðu" + +#: saleor/dashboard/page/views.py:66 +#, python-format +msgctxt "Dashboard message" +msgid "Removed page %s" +msgstr "Fjarlægði síðu %s" + +#: saleor/dashboard/product/__init__.py:11 +msgctxt "product bulk action" +msgid "Publish" +msgstr "Birta" + +#: saleor/dashboard/product/__init__.py:12 +msgctxt "product bulk action" +msgid "Unpublish" +msgstr "Taka úr birtingu" + +#: saleor/dashboard/product/filters.py:16 +msgctxt "Product list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/product/filters.py:17 +msgctxt "Product type list sorting option" +msgid "price" +msgstr "verð" + +#: saleor/dashboard/product/filters.py:21 +msgctxt "Product attribute list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/product/filters.py:25 +msgctxt "Product type list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/product/filters.py:36 +msgctxt "Product list filter label" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/product/filters.py:40 +msgctxt "Product list filter label" +msgid "Category" +msgstr "Flokkur" + +#: saleor/dashboard/product/filters.py:45 +msgctxt "Product list filter label" +msgid "Product type" +msgstr "Gerð vöru" + +#: saleor/dashboard/product/filters.py:50 +msgctxt "Product list filter label" +msgid "Price" +msgstr "Verð" + +#: saleor/dashboard/product/filters.py:55 +msgctxt "Product list filter label" +msgid "Is published" +msgstr "Birt" + +#: saleor/dashboard/product/filters.py:61 +msgctxt "Product list filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/product/filters.py:74 +#, python-format +msgctxt "Number of matching records in the dashboard products list" +msgid "Found %(counter)d matching product" +msgid_plural "Found %(counter)d matching products" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/product/filters.py:82 +msgctxt "Attribute list filter label" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/product/filters.py:86 +msgctxt "Attribute list filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/product/filters.py:99 +#, python-format +msgctxt "Number of matching records in the dashboard attributes list" +msgid "Found %(counter)d matching attribute" +msgid_plural "Found %(counter)d matching attributes" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/product/filters.py:107 +msgctxt "Product type list filter label" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/product/filters.py:111 +msgctxt "Product type list filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/product/filters.py:116 +msgctxt "Product type list filter label" +msgid "Product attributes" +msgstr "" + +#: saleor/dashboard/product/filters.py:121 +msgctxt "Product type list filter label" +msgid "Variant attributes" +msgstr "" + +#: saleor/dashboard/product/filters.py:134 +#, python-format +msgctxt "Number of matching records in the dashboard product types list" +msgid "Found %(counter)d matching product type" +msgid_plural "Found %(counter)d matching product types" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/product/forms.py:47 +msgctxt "Help text in rich-text editor field" +msgid "Select text to enable text-formatting tools." +msgstr "" + +#: saleor/dashboard/product/forms.py:64 +msgctxt "Product type form label" +msgid "Product type" +msgstr "Gerð vöru" + +#: saleor/dashboard/product/forms.py:83 +msgctxt "Product type tax rate type" +msgid "Tax rate" +msgstr "" + +#: saleor/dashboard/product/forms.py:86 saleor/dashboard/product/forms.py:263 +msgctxt "ProductType weight" +msgid "Weight" +msgstr "Vigt" + +#: saleor/dashboard/product/forms.py:89 +msgctxt "ProductVariant weight help text" +msgid "" +"Default weight that will be used for calculating shipping price for products" +" of that type." +msgstr "" + +#: saleor/dashboard/product/forms.py:97 +msgctxt "Product type attributes" +msgid "Attributes common to all variants." +msgstr "" + +#: saleor/dashboard/product/forms.py:104 +msgctxt "Product type attributes" +msgid "Attributes specific to each variant." +msgstr "" + +#: saleor/dashboard/product/forms.py:113 +msgctxt "Enable variants" +msgid "Enable variants" +msgstr "Virkja afbrigði" + +#: saleor/dashboard/product/forms.py:115 +msgctxt "Shipping toggle" +msgid "Require shipping" +msgstr "" + +#: saleor/dashboard/product/forms.py:154 +msgctxt "Product type form error" +msgid "Product variants are disabled." +msgstr "" + +#: saleor/dashboard/product/forms.py:160 +msgctxt "Product type form error" +msgid "A single attribute can't belong to both a product and its variant." +msgstr "" + +#: saleor/dashboard/product/forms.py:181 +msgctxt "Product type form error" +msgid "Some products of this type have more than one variant." +msgstr "" + +#: saleor/dashboard/product/forms.py:247 +msgctxt "Product tax rate type" +msgid "Tax rate" +msgstr "" + +#: saleor/dashboard/product/forms.py:251 +msgctxt "Category" +msgid "Category" +msgstr "Flokkur" + +#: saleor/dashboard/product/forms.py:256 +msgctxt "Add to collection select" +msgid "Collections" +msgstr "" + +#: saleor/dashboard/product/forms.py:266 +msgctxt "Product weight field help text" +msgid "" +"Weight will be used to calculate shipping price, if empty, equal to default " +"value used on the ProductType." +msgstr "" + +#: saleor/dashboard/product/forms.py:278 +#: saleor/dashboard/shipping/forms.py:138 +msgctxt "Currency amount" +msgid "Price" +msgstr "Verð" + +#: saleor/dashboard/product/forms.py:280 +msgctxt "Availability date" +msgid "Publish product on" +msgstr "Birta vöru þann" + +#: saleor/dashboard/product/forms.py:282 +msgctxt "Product published toggle" +msgid "Published" +msgstr "Birt" + +#: saleor/dashboard/product/forms.py:284 +msgctxt "Charge taxes on product" +msgid "Charge taxes on this product" +msgstr "Rukka virðisauka fyrir þessa vöru" + +#: saleor/dashboard/product/forms.py:311 +msgctxt "Currency gross amount" +msgid "Gross price" +msgstr "Brúttóverð" + +#: saleor/dashboard/product/forms.py:315 +msgctxt "Currency net amount" +msgid "Net price" +msgstr "Nettóverð" + +#: saleor/dashboard/product/forms.py:347 +msgctxt "ProductVariant weight" +msgid "Weight" +msgstr "Vigt" + +#: saleor/dashboard/product/forms.py:350 +msgctxt "ProductVariant weight help text" +msgid "" +"Weight will be used to calculate shipping price. If empty, weight from " +"Product or ProductType will be used." +msgstr "" + +#: saleor/dashboard/product/forms.py:366 +msgctxt "SKU" +msgid "SKU" +msgstr "VN" + +#: saleor/dashboard/product/forms.py:367 +msgctxt "Override price" +msgid "Selling price override" +msgstr "" + +#: saleor/dashboard/product/forms.py:368 +msgctxt "Integer number" +msgid "Number in stock" +msgstr "Fjöldi á lager" + +#: saleor/dashboard/product/forms.py:369 +msgctxt "Currency amount" +msgid "Cost price" +msgstr "Kostnaðarverð" + +#: saleor/dashboard/product/forms.py:371 +msgctxt "Track inventory field" +msgid "Track inventory" +msgstr "Fylgjast með birgðastöðu" + +#: saleor/dashboard/product/forms.py:377 +msgctxt "product variant handle stock field help text" +msgid "Automatically track this product's inventory" +msgstr "Fylgjast sjálfkrafa með birgðastöðu þessara vöru" + +#: saleor/dashboard/product/forms.py:394 +msgctxt "Override price" +msgid "Selling gross price override" +msgstr "" + +#: saleor/dashboard/product/forms.py:397 +msgctxt "Currency amount" +msgid "Cost gross price" +msgstr "" + +#: saleor/dashboard/product/forms.py:401 +msgctxt "Override price" +msgid "Selling net price override" +msgstr "" + +#: saleor/dashboard/product/forms.py:404 +msgctxt "Currency amount" +msgid "Cost net price" +msgstr "" + +#: saleor/dashboard/product/forms.py:462 saleor/dashboard/product/forms.py:566 +msgctxt "Product image" +msgid "Image" +msgstr "Mynd" + +#: saleor/dashboard/product/forms.py:503 +msgctxt "Product display name" +msgid "Display name" +msgstr "Birta nafn" + +#: saleor/dashboard/product/forms.py:504 +msgctxt "Product internal name" +msgid "Internal name" +msgstr "Innra nafn" + +#: saleor/dashboard/product/views.py:141 +#, python-format +msgctxt "Dashboard message" +msgid "Added product %s" +msgstr "Bætti við vöru %s" + +#: saleor/dashboard/product/views.py:173 +#, python-format +msgctxt "Dashboard message" +msgid "Updated product %s" +msgstr "Uppfærði vöru %s" + +#: saleor/dashboard/product/views.py:186 +#, python-format +msgctxt "Dashboard message" +msgid "Removed product %s" +msgstr "Fjarlægði vöru %s" + +#: saleor/dashboard/product/views.py:204 +#, python-format +msgctxt "Dashboard message" +msgid "%(count)d product has been updated" +msgid_plural "%(count)d products have been updated" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/product/views.py:261 +#, python-format +msgctxt "Dashboard message" +msgid "Added product type %s" +msgstr "" + +#: saleor/dashboard/product/views.py:277 +#, python-format +msgctxt "Dashboard message" +msgid "Updated product type %s" +msgstr "" + +#: saleor/dashboard/product/views.py:292 +#, python-format +msgctxt "Dashboard message" +msgid "Removed product type %s" +msgstr "" + +#: saleor/dashboard/product/views.py:340 saleor/dashboard/product/views.py:357 +#, python-format +msgctxt "Dashboard message" +msgid "Saved variant %s" +msgstr "" + +#: saleor/dashboard/product/views.py:373 +#, python-format +msgctxt "Dashboard message" +msgid "Removed variant %s" +msgstr "" + +#: saleor/dashboard/product/views.py:452 +#, python-format +msgctxt "Dashboard message" +msgid "Added image %s" +msgstr "" + +#: saleor/dashboard/product/views.py:471 +#, python-format +msgctxt "Dashboard message" +msgid "Updated image %s" +msgstr "" + +#: saleor/dashboard/product/views.py:487 +#, python-format +msgctxt "Dashboard message" +msgid "Removed image %s" +msgstr "" + +#: saleor/dashboard/product/views.py:579 +msgctxt "Dashboard message" +msgid "Added attribute" +msgstr "" + +#: saleor/dashboard/product/views.py:593 +msgctxt "Dashboard message" +msgid "Updated attribute" +msgstr "" + +#: saleor/dashboard/product/views.py:606 +#, python-format +msgctxt "Dashboard message" +msgid "Removed attribute %s" +msgstr "" + +#: saleor/dashboard/product/views.py:626 +msgctxt "Dashboard message" +msgid "Added attribute's value" +msgstr "" + +#: saleor/dashboard/product/views.py:643 +msgctxt "Dashboard message" +msgid "Updated attribute's value" +msgstr "" + +#: saleor/dashboard/product/views.py:658 +#, python-format +msgctxt "Dashboard message" +msgid "Removed attribute's value %s" +msgstr "" + +#: saleor/dashboard/seo/fields.py:8 +msgctxt "Form field help text" +msgid "If empty, the preview shows what will be autogenerated." +msgstr "" + +#: saleor/dashboard/seo/fields.py:31 +msgctxt "A SEO friendly title" +msgid "SEO Friendly Title" +msgstr "" + +#: saleor/dashboard/seo/fields.py:53 +msgctxt "A SEO friendly description" +msgid "SEO Friendly Description" +msgstr "SEO leitarvæn lýsing" + +#: saleor/dashboard/shipping/filters.py:8 +msgctxt "Group list sorting option" +msgid "name" +msgstr "nafn" + +#: saleor/dashboard/shipping/filters.py:13 +msgctxt "Shipping zones list filter label" +msgid "Shipping zone name" +msgstr "Nafn á sendingarsvæði" + +#: saleor/dashboard/shipping/filters.py:17 +msgctxt "Shipping zones list filter label" +msgid "Price range" +msgstr "Verðbil" + +#: saleor/dashboard/shipping/filters.py:21 +msgctxt "Shipping zones filter label" +msgid "Country" +msgstr "Land" + +#: saleor/dashboard/shipping/filters.py:27 +msgctxt "Product list sorting filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/shipping/filters.py:40 +#, python-format +msgctxt "Number of matching records in the dashboard shipping zones list" +msgid "Found %(counter)d matching shipping zone" +msgid_plural "Found %(counter)d matching shipping zones" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/shipping/forms.py:35 +msgctxt "Label of the default weight unit picker" +msgid "Default weight unit" +msgstr "Sjálfgefin þyngdareining" + +#: saleor/dashboard/shipping/forms.py:41 +msgctxt "Default weight unit help text" +msgid "" +"Default unit for weights entered from the dashboard.All weights will be " +"recalculated to the new unit." +msgstr "" + +#: saleor/dashboard/shipping/forms.py:52 +msgctxt "Shippment Zone field name" +msgid "Shipping zone name" +msgstr "Nafn á sendingarsvæði" + +#: saleor/dashboard/shipping/forms.py:53 +msgctxt "Shipping Zone field name" +msgid "Rest of World" +msgstr "Restin af umheiminum" + +#: saleor/dashboard/shipping/forms.py:54 +msgctxt "List of countries to pick from" +msgid "Countries" +msgstr "Lönd" + +#: saleor/dashboard/shipping/forms.py:59 +msgctxt "Countries field help text" +msgid "Each country might be included in only one shipping zone." +msgstr "" + +#: saleor/dashboard/shipping/forms.py:63 +msgctxt "Help text for ShippingZone name" +msgid "Name is for internal use only, it won't be displayed to your customers" +msgstr "" + +#: saleor/dashboard/shipping/forms.py:68 +msgctxt "Help text for ShippingZone name" +msgid "" +"If selected, this zone will include any countries that are not already " +"listed in your other shipping zones." +msgstr "" + +#: saleor/dashboard/shipping/forms.py:98 +msgctxt "ShippingZone with \"default\" option selected already exists" +msgid "Default ShippingZone already exists." +msgstr "" + +#: saleor/dashboard/shipping/forms.py:113 +#, python-format +msgctxt "Shipping zone containing duplicated countries form error" +msgid "" +"Countries already exists in another shipping zone: %(list_of_countries)s" +msgstr "" + +#: saleor/dashboard/shipping/forms.py:125 +msgctxt "ShippingZone field error" +msgid "This field is required." +msgstr "" + +#: saleor/dashboard/shipping/forms.py:137 +msgctxt "Shipping Method name" +msgid "Name" +msgstr "Nafn" + +#: saleor/dashboard/shipping/forms.py:143 +msgctxt "Shipping method name help text" +msgid "Customers will see this at the checkout." +msgstr "" + +#: saleor/dashboard/shipping/forms.py:152 +msgctxt "Minimum order price to use this shipping method" +msgid "Minimum order price" +msgstr "" + +#: saleor/dashboard/shipping/forms.py:155 +msgctxt "Maximum order price to use this order" +msgid "Maximum order price" +msgstr "" + +#: saleor/dashboard/shipping/forms.py:164 +msgctxt "Placeholder for maximum order price set to unlimited" +msgid "No limit" +msgstr "Engin takmörkun" + +#: saleor/dashboard/shipping/forms.py:180 +#: saleor/dashboard/shipping/forms.py:223 +msgctxt "Price shipping method form error" +msgid "Maximum order price should be larger than the minimum order price." +msgstr "" + +#: saleor/dashboard/shipping/forms.py:191 +msgctxt "Minimum order weight to use this shipping method" +msgid "Minimum order weight" +msgstr "" + +#: saleor/dashboard/shipping/forms.py:197 +msgctxt "Maximum order weight to use this shipping method" +msgid "Maximum order weight" +msgstr "" + +#: saleor/dashboard/shipping/forms.py:207 +msgctxt "Placeholder for maximum order weight set to unlimited" +msgid "No limit" +msgstr "Engin takmörkun" + +#: saleor/dashboard/shipping/views.py:24 +msgctxt "Dashboard message" +msgid "Updated default weight unit" +msgstr "" + +#: saleor/dashboard/shipping/views.py:49 +msgctxt "Dashboard message" +msgid "Added shipping zone" +msgstr "" + +#: saleor/dashboard/shipping/views.py:63 +msgctxt "Dashboard message" +msgid "Updated shipping zone" +msgstr "" + +#: saleor/dashboard/shipping/views.py:91 +#, python-format +msgctxt "Dashboard message" +msgid "%(shipping_zone_name)s successfully removed" +msgstr "" + +#: saleor/dashboard/shipping/views.py:111 +#, python-format +msgctxt "Dashboard message" +msgid "Added shipping method for %(zone_name)s shipping zone" +msgstr "" + +#: saleor/dashboard/shipping/views.py:134 +#, python-format +msgctxt "Dashboard message" +msgid "Updated %(method_name)s shipping method" +msgstr "" + +#: saleor/dashboard/shipping/views.py:153 +#, python-format +msgctxt "Dashboard message" +msgid "Removed %(shipping_method_name)s shipping method" +msgstr "" + +#: saleor/dashboard/sites/forms.py:13 +msgctxt "Domain name (FQDN)" +msgid "Domain name" +msgstr "Lénsnafn" + +#: saleor/dashboard/sites/forms.py:14 +msgctxt "Display name" +msgid "Display name" +msgstr "Birta nafn" + +#: saleor/dashboard/sites/forms.py:28 +msgctxt "Header text" +msgid "Header text" +msgstr "" + +#: saleor/dashboard/sites/forms.py:32 +msgctxt "Inventory tracking by default settings toggle label" +msgid "Enable inventory tracking for newly created products" +msgstr "" + +#: saleor/dashboard/sites/forms.py:35 +msgctxt "Default weight unit" +msgid "Default weight unit" +msgstr "Sjálfgefin þyngdareining" + +#: saleor/dashboard/sites/forms.py:41 +msgctxt "handle stock by default settings field help text" +msgid "" +"This will set the default value of stock handling on product and variant " +"creation" +msgstr "" + +#: saleor/dashboard/sites/forms.py:52 +msgctxt "Key for chosen authorization method" +msgid "Key" +msgstr "" + +#: saleor/dashboard/sites/forms.py:53 +msgctxt "Password" +msgid "Password" +msgstr "Lykilorð" + +#: saleor/dashboard/sites/views.py:34 +msgctxt "Dashboard message" +msgid "Updated site settings" +msgstr "" + +#: saleor/dashboard/sites/views.py:65 +#, python-format +msgctxt "Dashboard message" +msgid "Added authorization key %s" +msgstr "" + +#: saleor/dashboard/sites/views.py:81 +#, python-format +msgctxt "dashboard message" +msgid "Updated authorization key %s" +msgstr "" + +#: saleor/dashboard/sites/views.py:100 +#, python-format +msgctxt "Dashboard message" +msgid "Removed site authorization key %s" +msgstr "" + +#: saleor/dashboard/staff/filters.py:32 +msgctxt "Group list filter label" +msgid "Permissions" +msgstr "Réttindi" + +#: saleor/dashboard/staff/filters.py:37 +msgctxt "Staff list filter label" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/staff/filters.py:50 +#, python-format +msgctxt "Number of matching records in the dashboard staff members list" +msgid "Found %(counter)d matching staff member" +msgid_plural "Found %(counter)d matching staff members" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/staff/forms.py:15 +msgctxt "Label above the permissions choicefield" +msgid "Permissions" +msgstr "Réttindi" + +#: saleor/dashboard/staff/forms.py:35 +msgctxt "Email" +msgid "Email" +msgstr "Netfang" + +#: saleor/dashboard/staff/forms.py:36 +msgctxt "User active toggle" +msgid "User is active" +msgstr "Notandi er virkur" + +#: saleor/dashboard/staff/forms.py:37 +msgctxt "User staff toggle" +msgid "User is staff" +msgstr "Notandi er starfsmaður" + +#: saleor/dashboard/staff/views.py:45 +#, python-format +msgctxt "Dashboard message" +msgid "Updated staff member %s" +msgstr "Uppfærði starfsmann %s" + +#: saleor/dashboard/staff/views.py:71 +#, python-format +msgctxt "Dashboard message" +msgid "Added staff member %s" +msgstr "Bætti við starfsmanni %s" + +#: saleor/dashboard/staff/views.py:89 +#, python-format +msgctxt "Dashboard message" +msgid "Removed staff member %s" +msgstr "" + +#: saleor/dashboard/taxes/filters.py:10 +msgctxt "Product list sorting option" +msgid "country_code" +msgstr "" + +#: saleor/dashboard/taxes/filters.py:24 +msgctxt "Taxes list filter label" +msgid "Country name" +msgstr "Nafn lands" + +#: saleor/dashboard/taxes/filters.py:29 +msgctxt "Taxes list sorting form" +msgid "Sort by" +msgstr "Sía eftir" + +#: saleor/dashboard/taxes/filters.py:48 +#, python-format +msgctxt "Number of matching records in the dashboard taxes list" +msgid "Found %(counter)d matching country" +msgid_plural "Found %(counter)d matching countries" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/taxes/forms.py:18 +msgctxt "Include taxes in prices" +msgid "All products prices are entered with tax included" +msgstr "" + +#: saleor/dashboard/taxes/forms.py:22 +msgctxt "Display gross prices" +msgid "Show gross prices to customers in the storefront" +msgstr "" + +#: saleor/dashboard/taxes/forms.py:25 +msgctxt "Charge taxes on shipping rates" +msgid "Charge taxes on shipping rates" +msgstr "" + +#: saleor/dashboard/taxes/views.py:60 +msgctxt "Dashboard message" +msgid "Updated taxes settings" +msgstr "" + +#: saleor/dashboard/taxes/views.py:73 +msgctxt "Dashboard message" +msgid "Tax rates updated successfully" +msgstr "" + +#: saleor/dashboard/taxes/views.py:79 +msgctxt "Dashboard message" +msgid "" +"Could not fetch tax rates. Make sure you have supplied a valid API Access " +"Key.
Check the server logs for more information about this error." +msgstr "" + +#: saleor/dashboard/templatetags/chips.py:78 +msgctxt "Possible values of boolean filter" +msgid "yes,no,all" +msgstr "já,nei,allt" + +#: saleor/dashboard/templatetags/chips.py:94 +#, python-format +msgctxt "Label of first value in range filter" +msgid "From %(value)s" +msgstr "Frá %(value)s" + +#: saleor/dashboard/templatetags/chips.py:95 +#, python-format +msgctxt "Label of second value in range filter" +msgid "To %(value)s" +msgstr "Til %(value)s" + +#: saleor/dashboard/templatetags/orders.py:14 +msgctxt "Email type" +msgid "Payment confirmation" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:17 +msgctxt "Email type" +msgid "Shipping confirmation" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:20 +msgctxt "Email type" +msgid "Fulfillment confirmation" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:22 +msgctxt "Email type" +msgid "Order confirmation" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:49 +msgctxt "Dashboard message related to an order" +msgid "Order placed from draft order" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:54 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "Payment was voided by %(user_name)s" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:60 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "Successfully refunded: %(amount)s" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:67 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "Successfully captured: %(amount)s" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:72 +msgctxt "Dashboard message related to an order" +msgid "Order manually marked as paid" +msgstr "Pöntun handvirkt merkt sem greidd" + +#: saleor/dashboard/templatetags/orders.py:76 +msgctxt "Dashboard message related to an order" +msgid "Order was canceled" +msgstr "Hætt var við pöntun" + +#: saleor/dashboard/templatetags/orders.py:81 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "We restocked %(quantity)d item" +msgid_plural "We restocked %(quantity)d items" +msgstr[0] "" +msgstr[1] "" + +#: saleor/dashboard/templatetags/orders.py:88 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "%(user_name)s added note: %(note)s" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:94 +#, python-format +msgctxt "Dashboard message" +msgid "Fulfillment #%(fulfillment)s canceled by %(user_name)s" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:98 +msgctxt "Dashboard message related to an order" +msgid "Fulfilled some items" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:102 +msgctxt "Dashboard message related to an order" +msgid "Order was placed" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:106 +msgctxt "Dashboard message related to an order" +msgid "Order was fully paid" +msgstr "Pöntun greidd að fullu" + +#: saleor/dashboard/templatetags/orders.py:111 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "%(email_type)s email was sent to the customer (%(email)s)" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:119 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "" +"Fulfillment #%(fulfillment)s tracking was updated to %(tracking_number)s by " +"%(user_name)s" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:129 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "The draft was created by %(user_name)s" +msgstr "Drög stofnuð af %(user_name)s" + +#: saleor/dashboard/templatetags/orders.py:133 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "%(user_name)s added some products" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:138 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "%(user_name)s removed some products" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:143 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "%(user_name)s placed the order by bypassing oversold items" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:148 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "The order address was updated by %(user_name)s" +msgstr "" + +#: saleor/dashboard/templatetags/orders.py:153 +#, python-format +msgctxt "Dashboard message related to an order" +msgid "The payment was failed by %(user_name)s" +msgstr "" diff --git a/saleor/dashboard/locale/it/LC_MESSAGES/django.mo b/saleor/dashboard/locale/it/LC_MESSAGES/django.mo index e38b7ceb941..924cc5d1a11 100644 Binary files a/saleor/dashboard/locale/it/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/it/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/ja/LC_MESSAGES/django.mo b/saleor/dashboard/locale/ja/LC_MESSAGES/django.mo index 3535876a54d..0f5a1c1c16a 100644 Binary files a/saleor/dashboard/locale/ja/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/ja/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/ko/LC_MESSAGES/django.mo b/saleor/dashboard/locale/ko/LC_MESSAGES/django.mo index fcbf77dacbf..6142b616e4c 100644 Binary files a/saleor/dashboard/locale/ko/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/ko/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/lt/LC_MESSAGES/django.mo b/saleor/dashboard/locale/lt/LC_MESSAGES/django.mo index d80b126537c..6c825598752 100644 Binary files a/saleor/dashboard/locale/lt/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/lt/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/mn/LC_MESSAGES/django.mo b/saleor/dashboard/locale/mn/LC_MESSAGES/django.mo index ec67d049be9..0e76e6d9edb 100644 Binary files a/saleor/dashboard/locale/mn/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/mn/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/nb/LC_MESSAGES/django.mo b/saleor/dashboard/locale/nb/LC_MESSAGES/django.mo index 6d2dcf3abf1..d6db83cdf74 100644 Binary files a/saleor/dashboard/locale/nb/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/nb/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/nl/LC_MESSAGES/django.mo b/saleor/dashboard/locale/nl/LC_MESSAGES/django.mo index 0a9d13b4f2f..043b88001e4 100644 Binary files a/saleor/dashboard/locale/nl/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/nl/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/pl/LC_MESSAGES/django.mo b/saleor/dashboard/locale/pl/LC_MESSAGES/django.mo index 1b5420cbd35..2bbc2ec6905 100644 Binary files a/saleor/dashboard/locale/pl/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/pl/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/pt/LC_MESSAGES/django.mo b/saleor/dashboard/locale/pt/LC_MESSAGES/django.mo index 63988da5cf8..3dcde3579e2 100644 Binary files a/saleor/dashboard/locale/pt/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/pt/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/pt_BR/LC_MESSAGES/django.mo b/saleor/dashboard/locale/pt_BR/LC_MESSAGES/django.mo index 83db8a33b77..44620b0ec8f 100644 Binary files a/saleor/dashboard/locale/pt_BR/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/ro/LC_MESSAGES/django.mo b/saleor/dashboard/locale/ro/LC_MESSAGES/django.mo index 21c75328ee2..4fdcd76172f 100644 Binary files a/saleor/dashboard/locale/ro/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/ro/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/ru/LC_MESSAGES/django.mo b/saleor/dashboard/locale/ru/LC_MESSAGES/django.mo index acfdb31c9ab..50c18700a39 100644 Binary files a/saleor/dashboard/locale/ru/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/ru/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/sk/LC_MESSAGES/django.mo b/saleor/dashboard/locale/sk/LC_MESSAGES/django.mo index 52022c8e081..b08561398f5 100644 Binary files a/saleor/dashboard/locale/sk/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/sk/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/sl/LC_MESSAGES/django.mo b/saleor/dashboard/locale/sl/LC_MESSAGES/django.mo index ab5f06a6e75..6e09be4090f 100644 Binary files a/saleor/dashboard/locale/sl/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/sl/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/sq/LC_MESSAGES/django.mo b/saleor/dashboard/locale/sq/LC_MESSAGES/django.mo index c0140170e31..b2725dfe038 100644 Binary files a/saleor/dashboard/locale/sq/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/sq/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/sr/LC_MESSAGES/django.mo b/saleor/dashboard/locale/sr/LC_MESSAGES/django.mo index 5dadf17662c..e733f89dec1 100644 Binary files a/saleor/dashboard/locale/sr/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/sr/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/sv/LC_MESSAGES/django.mo b/saleor/dashboard/locale/sv/LC_MESSAGES/django.mo index bcc6857694b..02336ac0ee6 100644 Binary files a/saleor/dashboard/locale/sv/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/sv/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/sw/LC_MESSAGES/django.mo b/saleor/dashboard/locale/sw/LC_MESSAGES/django.mo index 739d07d5138..e3c7cfcc9c3 100644 Binary files a/saleor/dashboard/locale/sw/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/sw/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/th/LC_MESSAGES/django.mo b/saleor/dashboard/locale/th/LC_MESSAGES/django.mo index 982fbc98e1e..599b906bd41 100644 Binary files a/saleor/dashboard/locale/th/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/th/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/tr/LC_MESSAGES/django.mo b/saleor/dashboard/locale/tr/LC_MESSAGES/django.mo index 25a4bbab56f..fbc237e608d 100644 Binary files a/saleor/dashboard/locale/tr/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/tr/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/uk/LC_MESSAGES/django.mo b/saleor/dashboard/locale/uk/LC_MESSAGES/django.mo index d98aabf603c..801c5b8f593 100644 Binary files a/saleor/dashboard/locale/uk/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/uk/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/vi/LC_MESSAGES/django.mo b/saleor/dashboard/locale/vi/LC_MESSAGES/django.mo index d444903fc3e..9f457ba6aec 100644 Binary files a/saleor/dashboard/locale/vi/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/vi/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.mo b/saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.mo index 59a81e4fe9f..c786f58f909 100644 Binary files a/saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.po b/saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.po index 77573891533..1fbab59db01 100644 --- a/saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.po +++ b/saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.po @@ -12,15 +12,16 @@ # shell wang , 2019 # 刘 志锋 <752074518@qq.com>, 2019 # Julian Hu , 2019 +# John Q , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-13 03:43-0500\n" +"POT-Creation-Date: 2019-06-04 11:45-0500\n" "PO-Revision-Date: 2017-02-09 15:43+0000\n" -"Last-Translator: Julian Hu , 2019\n" +"Last-Translator: John Q , 2019\n" "Language-Team: Chinese Simplified (https://www.transifex.com/mirumee/teams/34782/zh-Hans/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,14 +59,14 @@ msgstr[0] "已找到%(counter)d个匹配的分类" #: saleor/dashboard/category/forms.py:27 #: saleor/dashboard/collection/forms.py:26 #: saleor/dashboard/discount/forms.py:93 saleor/dashboard/product/forms.py:112 -#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:511 +#: saleor/dashboard/product/forms.py:277 saleor/dashboard/product/forms.py:513 #: saleor/dashboard/sites/forms.py:54 msgctxt "Item name" msgid "Name" msgstr "名称" #: saleor/dashboard/category/forms.py:28 saleor/dashboard/product/forms.py:259 -#: saleor/dashboard/product/forms.py:461 saleor/dashboard/sites/forms.py:29 +#: saleor/dashboard/product/forms.py:463 saleor/dashboard/sites/forms.py:29 msgctxt "Description" msgid "Description" msgstr "描述" @@ -254,82 +255,82 @@ msgid "Found %(counter)d matching customer" msgid_plural "Found %(counter)d matching customers" msgstr[0] "找到 %(counter)d 匹配的客户" -#: saleor/dashboard/customer/forms.py:10 +#: saleor/dashboard/customer/forms.py:11 #, python-format msgctxt "Customer form: Name field placeholder" msgid "%(name)s (Inherit from default billing address)" msgstr "1%(name)s(使用默认收费地址)" -#: saleor/dashboard/customer/forms.py:29 +#: saleor/dashboard/customer/forms.py:30 msgctxt "Edit customer details in order form error" msgid "" "You can't delete your own account via dashboard, please try from the " "storefront." msgstr "你不能在Dashboard中删除自己的账户,请在Storefront中尝试删除。" -#: saleor/dashboard/customer/forms.py:37 +#: saleor/dashboard/customer/forms.py:38 msgctxt "Edit customer details in order form error" msgid "Only superuser can delete his own account." msgstr "只有超级用户可以删除他的账户。" -#: saleor/dashboard/customer/forms.py:45 +#: saleor/dashboard/customer/forms.py:46 msgctxt "Edit customer details in order form error" msgid "You have insufficient permissions, to edit staff users." msgstr "您没有足够的权限来编辑员工用户。" -#: saleor/dashboard/customer/forms.py:77 saleor/dashboard/staff/forms.py:30 +#: saleor/dashboard/customer/forms.py:104 saleor/dashboard/staff/forms.py:30 msgctxt "Customer form: Given name field" msgid "Given name" msgstr "名" -#: saleor/dashboard/customer/forms.py:80 saleor/dashboard/staff/forms.py:33 +#: saleor/dashboard/customer/forms.py:107 saleor/dashboard/staff/forms.py:33 msgctxt "Customer form: Family name field" msgid "Family name" msgstr "姓" -#: saleor/dashboard/customer/forms.py:82 +#: saleor/dashboard/customer/forms.py:109 msgctxt "Customer form: email address field" msgid "Email" msgstr "电子邮件" -#: saleor/dashboard/customer/forms.py:83 +#: saleor/dashboard/customer/forms.py:110 msgctxt "Customer form: customer note field" msgid "Notes" msgstr "备注" -#: saleor/dashboard/customer/forms.py:85 +#: saleor/dashboard/customer/forms.py:112 msgctxt "Customer form: is active toggle" msgid "User is active" msgstr "活动的用户" -#: saleor/dashboard/customer/forms.py:96 +#: saleor/dashboard/customer/forms.py:123 msgctxt "Customer note" msgid "Note" msgstr "备注" -#: saleor/dashboard/customer/forms.py:98 +#: saleor/dashboard/customer/forms.py:125 msgctxt "Allow customers to see note toggle" msgid "Customer can see this note" msgstr "备注对顾客可见" -#: saleor/dashboard/customer/views.py:63 +#: saleor/dashboard/customer/views.py:64 #, python-format msgctxt "Dashboard message" msgid "Added customer %s" msgstr "添加客户%s" -#: saleor/dashboard/customer/views.py:78 +#: saleor/dashboard/customer/views.py:79 #, python-format msgctxt "Dashboard message" msgid "Updated customer %s" msgstr "更新客户资料%s" -#: saleor/dashboard/customer/views.py:110 +#: saleor/dashboard/customer/views.py:111 msgctxt "Dashboard message related to an customer" msgid "Added note" msgstr "添加备注" -#: saleor/dashboard/customer/views.py:131 +#: saleor/dashboard/customer/views.py:133 #, python-format msgctxt "Dashboard message" msgid "%(customer_name)s successfully removed" @@ -1016,7 +1017,7 @@ msgstr "手机号码" #: saleor/dashboard/order/forms.py:665 msgctxt "Send mail to customer" msgid "Send shipment details to your customer now" -msgstr "" +msgstr "现在发送发运明细给您的客户" #: saleor/dashboard/order/forms.py:673 msgctxt "Order tracking number" @@ -1028,12 +1029,12 @@ msgstr "追踪编号" msgctxt "Fulfill order line form error" msgid "%(quantity)d item remaining to fulfill." msgid_plural "%(quantity)d items remaining to fulfill." -msgstr[0] "" +msgstr[0] "还剩%(quantity)d条行项目待完成。" #: saleor/dashboard/order/views.py:83 msgctxt "Dashboard message related to an order" msgid "Draft order created" -msgstr "" +msgstr "草稿订单已创建" #: saleor/dashboard/order/views.py:105 msgctxt "Dashboard message related to an order" @@ -1167,18 +1168,18 @@ msgid "Fulfilled %(quantity_fulfilled)d item" msgid_plural "Fulfilled %(quantity_fulfilled)d items" msgstr[0] "" -#: saleor/dashboard/order/views.py:659 +#: saleor/dashboard/order/views.py:658 msgctxt "Dashboard message related to an order" msgid "No items fulfilled" msgstr "" -#: saleor/dashboard/order/views.py:685 +#: saleor/dashboard/order/views.py:684 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s canceled" msgstr "" -#: saleor/dashboard/order/views.py:724 +#: saleor/dashboard/order/views.py:723 #, python-format msgctxt "Dashboard message" msgid "Fulfillment #%(fulfillment)s tracking number updated" @@ -1545,17 +1546,17 @@ msgctxt "Currency amount" msgid "Cost net price" msgstr "" -#: saleor/dashboard/product/forms.py:460 saleor/dashboard/product/forms.py:564 +#: saleor/dashboard/product/forms.py:462 saleor/dashboard/product/forms.py:566 msgctxt "Product image" msgid "Image" msgstr "图片" -#: saleor/dashboard/product/forms.py:501 +#: saleor/dashboard/product/forms.py:503 msgctxt "Product display name" msgid "Display name" msgstr "显示名称" -#: saleor/dashboard/product/forms.py:502 +#: saleor/dashboard/product/forms.py:504 msgctxt "Product internal name" msgid "Internal name" msgstr "内部名称" diff --git a/saleor/dashboard/locale/zh_Hant/LC_MESSAGES/django.mo b/saleor/dashboard/locale/zh_Hant/LC_MESSAGES/django.mo index 82b15a7fa41..5650d77ee48 100644 Binary files a/saleor/dashboard/locale/zh_Hant/LC_MESSAGES/django.mo and b/saleor/dashboard/locale/zh_Hant/LC_MESSAGES/django.mo differ diff --git a/saleor/dashboard/order/forms.py b/saleor/dashboard/order/forms.py index 5fe9884a5a4..ecf9cf47013 100644 --- a/saleor/dashboard/order/forms.py +++ b/saleor/dashboard/order/forms.py @@ -11,7 +11,7 @@ from ...account.models import User from ...checkout.forms import QuantityField from ...core.exceptions import InsufficientStock -from ...core.utils.taxes import ZERO_TAXED_MONEY +from ...core.taxes import interface as tax_interface, zero_taxed_money from ...discount.models import Voucher from ...discount.utils import decrease_voucher_usage, increase_voucher_usage from ...order import OrderStatus, events @@ -102,7 +102,7 @@ def save(self): remove_shipping_address = False if not self.instance.is_shipping_required(): self.instance.shipping_method_name = None - self.instance.shipping_price = ZERO_TAXED_MONEY + self.instance.shipping_price = zero_taxed_money() if self.instance.shipping_address: remove_shipping_address = True super().save() @@ -189,7 +189,6 @@ class Meta: fields = ["shipping_method"] def __init__(self, *args, **kwargs): - self.taxes = kwargs.pop("taxes") super().__init__(*args, **kwargs) method_field = self.fields["shipping_method"] fetch_data_url = reverse( @@ -212,7 +211,9 @@ def __init__(self, *args, **kwargs): def save(self, commit=True): method = self.instance.shipping_method self.instance.shipping_method_name = method.name - self.instance.shipping_price = method.get_total(self.taxes) + self.instance.shipping_price = tax_interface.calculate_order_shipping( + self.instance + ) recalculate_order(self.instance) return super().save(commit) @@ -227,7 +228,7 @@ class Meta: def save(self, commit=True): self.instance.shipping_method = None self.instance.shipping_method_name = None - self.instance.shipping_price = ZERO_TAXED_MONEY + self.instance.shipping_price = zero_taxed_money() recalculate_order(self.instance) return super().save(commit) @@ -602,7 +603,6 @@ class AddVariantToOrderForm(forms.Form): def __init__(self, *args, **kwargs): self.order = kwargs.pop("order") self.discounts = kwargs.pop("discounts") - self.taxes = kwargs.pop("taxes") super().__init__(*args, **kwargs) def clean(self): @@ -632,9 +632,7 @@ def save(self, user): """ variant = self.cleaned_data.get("variant") quantity = self.cleaned_data.get("quantity") - line = add_variant_to_order( - self.order, variant, quantity, self.discounts, self.taxes - ) + line = add_variant_to_order(self.order, variant, quantity, self.discounts) events.draft_order_added_products_event( order=self.order, user=user, order_lines=[(line.quantity, line)] ) diff --git a/saleor/dashboard/order/utils.py b/saleor/dashboard/order/utils.py index 1d0331cf6ff..e2c8ed0915a 100644 --- a/saleor/dashboard/order/utils.py +++ b/saleor/dashboard/order/utils.py @@ -2,12 +2,17 @@ from django.contrib.sites.models import Site from django.contrib.sites.shortcuts import get_current_site from django.template.loader import get_template +from django.utils.translation import pgettext from ...checkout import AddressType -from ...checkout.utils import _get_products_voucher_discount -from ...core.utils.taxes import ZERO_MONEY +from ...core.taxes import zero_money from ...discount import VoucherType -from ...discount.utils import get_shipping_voucher_discount, get_value_voucher_discount +from ...discount.models import NotApplicable +from ...discount.utils import ( + get_products_voucher_discount, + get_shipping_voucher_discount, + get_value_voucher_discount, +) INVOICE_TEMPLATE = "dashboard/order/pdf/invoice.html" PACKING_SLIP_TEMPLATE = "dashboard/order/pdf/packing_slip.html" @@ -73,25 +78,99 @@ def update_order_with_user_addresses(order): order.save(update_fields=["billing_address", "shipping_address"]) +def get_prices_of_discounted_products(order, discounted_products): + """Get prices of variants belonging to the discounted products.""" + line_prices = [] + if discounted_products: + for line in order: + if line.variant.product in discounted_products: + line_prices.extend([line.unit_price_gross] * line.quantity) + return line_prices + + +def get_prices_of_products_in_discounted_collections(order, discounted_collections): + """Get prices of variants belonging to the discounted collections.""" + line_prices = [] + if discounted_collections: + for line in order: + if not line.variant: + continue + product_collections = line.variant.product.collections.all() + if set(product_collections).intersection(discounted_collections): + line_prices.extend([line.unit_price_gross] * line.quantity) + return line_prices + + +def get_prices_of_products_in_discounted_categories(order, discounted_categories): + """Get prices of variants belonging to the discounted categories. + + Product must be assigned directly to the discounted category, assigning + product to child category won't work. + """ + # If there's no discounted collections, + # it means that all of them are discounted + line_prices = [] + if discounted_categories: + discounted_categories = set(discounted_categories) + for line in order: + if not line.variant: + continue + product_category = line.variant.product.category + if product_category in discounted_categories: + line_prices.extend([line.unit_price_gross] * line.quantity) + return line_prices + + +def get_products_voucher_discount_for_order(order, voucher): + """Calculate products discount value for a voucher, depending on its type. + """ + prices = None + if voucher.type == VoucherType.PRODUCT: + prices = get_prices_of_discounted_products(order, voucher.products.all()) + elif voucher.type == VoucherType.COLLECTION: + prices = get_prices_of_products_in_discounted_collections( + order, voucher.collections.all() + ) + elif voucher.type == VoucherType.CATEGORY: + prices = get_prices_of_products_in_discounted_categories( + order, voucher.categories.all() + ) + if not prices: + msg = pgettext( + "Voucher not applicable", "This offer is only valid for selected items." + ) + raise NotApplicable(msg) + return get_products_voucher_discount( + voucher, prices, order.get_subtotal().gross, order.get_total_quantity() + ) + + def get_voucher_discount_for_order(order): """Calculate discount value depending on voucher and discount types. Raise NotApplicable if voucher of given type cannot be applied. """ if not order.voucher: - return ZERO_MONEY - if order.voucher.type == VoucherType.VALUE: - return get_value_voucher_discount(order.voucher, order.get_subtotal()) + return zero_money() + subtotal = order.get_subtotal() + if order.voucher.type == VoucherType.ENTIRE_ORDER: + return get_value_voucher_discount( + order.voucher, subtotal.gross, order.get_total_quantity() + ) if order.voucher.type == VoucherType.SHIPPING: return get_shipping_voucher_discount( - order.voucher, order.get_subtotal(), order.shipping_price + order.voucher, + subtotal.gross, + order.shipping_price, + order.get_total_quantity(), ) if order.voucher.type in ( VoucherType.PRODUCT, VoucherType.COLLECTION, VoucherType.CATEGORY, + VoucherType.SPECIFIC_PRODUCT, ): - return _get_products_voucher_discount(order, order.voucher) + return get_products_voucher_discount_for_order(order, order.voucher) raise NotImplementedError("Unknown discount type") diff --git a/saleor/dashboard/order/views.py b/saleor/dashboard/order/views.py index 9d7c7a5a71d..74bc3dcc77b 100644 --- a/saleor/dashboard/order/views.py +++ b/saleor/dashboard/order/views.py @@ -14,7 +14,6 @@ from ...core.exceptions import InsufficientStock from ...core.utils import get_paginator_items -from ...core.utils.taxes import get_taxes_for_address from ...order import OrderStatus, events from ...order.emails import ( send_fulfillment_confirmation_to_customer, @@ -315,9 +314,8 @@ def orderline_cancel(request, order_pk, line_pk): def add_variant_to_order(request, order_pk): """Add variant in given quantity to an order.""" order = get_object_or_404(Order.objects.drafts(), pk=order_pk) - taxes = get_taxes_for_address(order.shipping_address) form = AddVariantToOrderForm( - request.POST or None, order=order, discounts=request.discounts, taxes=taxes + request.POST or None, order=order, discounts=request.discounts ) status = 200 if form.is_valid(): @@ -433,8 +431,7 @@ def order_customer_remove(request, order_pk): @permission_required("order.manage_orders") def order_shipping_edit(request, order_pk): order = get_object_or_404(Order.objects.drafts(), pk=order_pk) - taxes = get_taxes_for_address(order.shipping_address) - form = OrderShippingForm(request.POST or None, instance=order, taxes=taxes) + form = OrderShippingForm(request.POST or None, instance=order) status = 200 if form.is_valid(): form.save() diff --git a/saleor/dashboard/product/forms.py b/saleor/dashboard/product/forms.py index 556b87ba672..e48b2cc3482 100644 --- a/saleor/dashboard/product/forms.py +++ b/saleor/dashboard/product/forms.py @@ -7,11 +7,10 @@ from django.utils.encoding import smart_text from django.utils.text import slugify from django.utils.translation import pgettext_lazy -from django_prices_vatlayer.utils import get_tax_rate_types from mptt.forms import TreeNodeChoiceField -from ...core import TaxRateType -from ...core.utils.taxes import DEFAULT_TAX_RATE_NAME, include_taxes_in_prices +from ...core.taxes import include_taxes_in_prices +from ...core.taxes.interface import get_tax_from_object_meta, get_tax_rate_type_choices from ...core.weight import WeightField from ...product.models import ( Attribute, @@ -67,17 +66,6 @@ class ProductTypeSelectorForm(forms.Form): ) -def get_tax_rate_type_choices(): - rate_types = get_tax_rate_types() + [DEFAULT_TAX_RATE_NAME] - translations = dict(TaxRateType.CHOICES) - choices = [ - (rate_name, translations.get(rate_name, "---------")) - for rate_name in rate_types - ] - # sort choices alphabetically by translations - return sorted(choices, key=lambda x: x[1]) - - class ProductTypeForm(forms.ModelForm): tax_rate = forms.ChoiceField( required=False, label=pgettext_lazy("Product type tax rate type", "Tax rate") @@ -118,7 +106,9 @@ class Meta: def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields["tax_rate"].choices = get_tax_rate_type_choices() + self.fields["tax_rate"].choices = [ + (tax.code, tax.description) for tax in get_tax_rate_type_choices() + ] unassigned_attrs_q = Q( product_type__isnull=True, product_variant_type__isnull=True ) @@ -288,7 +278,10 @@ class Meta: def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) product_type = self.instance.product_type - self.initial["tax_rate"] = self.instance.tax_rate or product_type.tax_rate + product_tax_rate = get_tax_from_object_meta(self.instance).code + self.initial["tax_rate"] = ( + product_tax_rate or get_tax_from_object_meta(product_type).code + ) self.available_attributes = product_type.product_attributes.prefetch_related( "values" ).all() @@ -305,7 +298,9 @@ def __init__(self, *args, **kwargs): self.fields["seo_title"] = SeoTitleField( extra_attrs={"data-bind": self["name"].auto_id} ) - self.fields["tax_rate"].choices = get_tax_rate_type_choices() + self.fields["tax_rate"].choices = [ + (tax.code, tax.description) for tax in get_tax_rate_type_choices() + ] if include_taxes_in_prices(): self.fields["price"].label = pgettext_lazy( "Currency gross amount", "Gross price" diff --git a/saleor/dashboard/product/views.py b/saleor/dashboard/product/views.py index 8093c82186a..3822e507bff 100644 --- a/saleor/dashboard/product/views.py +++ b/saleor/dashboard/product/views.py @@ -1,5 +1,3 @@ -from datetime import date - from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import permission_required @@ -10,8 +8,8 @@ from django.utils.translation import npgettext_lazy, pgettext_lazy from django.views.decorators.http import require_POST +from ...core.taxes import interface as tax_interface from ...core.utils import get_paginator_items -from ...discount.models import Sale from ...product.models import ( Attribute, AttributeValue, @@ -55,7 +53,10 @@ def product_details(request, pk): variants = product.variants.all() images = product.images.all() availability = get_product_availability( - product, discounts=request.discounts, taxes=request.taxes + product, + discounts=request.discounts, + country=request.country, + taxes=request.taxes, ) sale_price = availability.price_range_undiscounted discounted_price = availability.price_range @@ -313,8 +314,8 @@ def variant_details(request, product_pk, variant_pk): images = variant.images.all() margin = get_margin_for_variant(variant) - discounted_price = variant.get_price( - discounts=Sale.objects.active(date.today()) + discounted_price = tax_interface.apply_taxes_to_product( + variant.product, variant.get_price(discounts=request.discounts), request.country ).gross ctx = { "images": images, diff --git a/saleor/dashboard/taxes/views.py b/saleor/dashboard/taxes/views.py index efb5f03478f..756d36e4e28 100644 --- a/saleor/dashboard/taxes/views.py +++ b/saleor/dashboard/taxes/views.py @@ -5,6 +5,7 @@ from django.contrib.auth.decorators import permission_required from django.core.exceptions import ImproperlyConfigured from django.core.management import call_command +from django.http import HttpResponseNotFound from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.translation import pgettext_lazy @@ -12,33 +13,39 @@ from django_countries.fields import Country from django_prices_vatlayer.models import VAT -from ...core import TaxRateType +from ...core.taxes.vatlayer import TaxRateType, get_taxes_for_country from ...core.utils import get_paginator_items -from ...core.utils.taxes import get_taxes_for_country from ...dashboard.taxes.filters import TaxFilter from ...dashboard.taxes.forms import TaxesConfigurationForm from ...dashboard.views import staff_member_required logger = logging.getLogger(__name__) +# FIXME these views belong to vatlayer module. + @staff_member_required def tax_list(request): - taxes = VAT.objects.order_by("country_code") - tax_filter = TaxFilter(request.GET, queryset=taxes) - taxes = get_paginator_items( - tax_filter.qs, settings.DASHBOARD_PAGINATE_BY, request.GET.get("page") - ) - ctx = { - "taxes": taxes, - "filter_set": tax_filter, - "is_empty": not tax_filter.queryset.exists(), - } + if settings.VATLAYER_ACCESS_KEY: + taxes = VAT.objects.order_by("country_code") + tax_filter = TaxFilter(request.GET, queryset=taxes) + taxes = get_paginator_items( + tax_filter.qs, settings.DASHBOARD_PAGINATE_BY, request.GET.get("page") + ) + ctx = { + "taxes": taxes, + "filter_set": tax_filter, + "is_empty": not tax_filter.queryset.exists(), + } + else: + ctx = {"taxes": [], "filter_set": None, "is_empty": True} return TemplateResponse(request, "dashboard/taxes/list.html", ctx) @staff_member_required def tax_details(request, country_code): + if not settings.VATLAYER_ACCESS_KEY: + return HttpResponseNotFound() tax = get_object_or_404(VAT, country_code=country_code) tax_rates = get_taxes_for_country(Country(country_code)) translations = dict(TaxRateType.CHOICES) diff --git a/saleor/data_feeds/google_merchant.py b/saleor/data_feeds/google_merchant.py index 2a65dfa58cf..2da5e92287c 100644 --- a/saleor/data_feeds/google_merchant.py +++ b/saleor/data_feeds/google_merchant.py @@ -1,14 +1,17 @@ import csv import gzip -from datetime import date +from typing import Iterable from django.conf import settings from django.contrib.sites.models import Site from django.contrib.syndication.views import add_domain from django.core.files.storage import default_storage +from django.utils import timezone from django.utils.encoding import smart_text -from ..discount.models import Sale +from ..core.taxes import zero_money +from ..discount import DiscountInfo +from ..discount.utils import fetch_discounts from ..product.models import Attribute, AttributeValue, Category, ProductVariant CATEGORY_SEPARATOR = " > " @@ -55,31 +58,31 @@ def get_feed_items(): return items -def item_id(item): +def item_id(item: ProductVariant): return item.sku -def item_mpn(item): +def item_mpn(item: ProductVariant): return str(item.sku) -def item_guid(item): +def item_guid(item: ProductVariant): return item.sku -def item_link(item, current_site): +def item_link(item: ProductVariant, current_site): return add_domain(current_site.domain, item.get_absolute_url(), not settings.DEBUG) -def item_title(item): +def item_title(item: ProductVariant): return item.display_product() -def item_description(item): +def item_description(item: ProductVariant): return item.product.description[:100] -def item_condition(item): +def item_condition(item: ProductVariant): """Return a valid item condition. Allowed values: new, refurbished, and used. @@ -89,7 +92,7 @@ def item_condition(item): return "new" -def item_brand(item, attributes_dict, attribute_values_dict): +def item_brand(item: ProductVariant, attributes_dict, attribute_values_dict): """Return an item brand. This field is required. @@ -117,22 +120,22 @@ def item_brand(item, attributes_dict, attribute_values_dict): return brand -def item_tax(item, discounts): +def item_tax(item: ProductVariant, discounts: Iterable[DiscountInfo]): """Return item tax. For some countries you need to set tax info Read more: https://support.google.com/merchants/answer/6324454 """ - price = item.get_price(discounts=discounts) - return "US::%s:y" % price.tax + # FIXME https://github.com/mirumee/saleor/issues/4311 + return "US::%s:y" % zero_money() -def item_group_id(item): +def item_group_id(item: ProductVariant): return str(item.product.pk) -def item_image_link(item, current_site): +def item_image_link(item: ProductVariant, current_site): product_image = item.get_first_image() if product_image: image = product_image.image @@ -140,13 +143,13 @@ def item_image_link(item, current_site): return None -def item_availability(item): +def item_availability(item: ProductVariant): if item.quantity_available: return "in stock" return "out of stock" -def item_google_product_category(item, category_paths): +def item_google_product_category(item: ProductVariant, category_paths): """Return a canonical product category. To have your categories accepted, please use names accepted by Google or @@ -163,22 +166,22 @@ def item_google_product_category(item, category_paths): return category_path -def item_price(item): +def item_price(item: ProductVariant): price = item.get_price(discounts=None) - return "%s %s" % (price.gross.amount, price.currency) + return "%s %s" % (price.amount, price.currency) -def item_sale_price(item, discounts): +def item_sale_price(item: ProductVariant, discounts: Iterable[DiscountInfo]): sale_price = item.get_price(discounts=discounts) - return "%s %s" % (sale_price.gross.amount, sale_price.currency) + return "%s %s" % (sale_price.amount, sale_price.currency) def item_attributes( - item, + item: ProductVariant, categories, category_paths, current_site, - discounts, + discounts: Iterable[DiscountInfo], attributes_dict, attribute_values_dict, ): @@ -220,9 +223,7 @@ def write_feed(file_obj): writer = csv.DictWriter(file_obj, ATTRIBUTES, dialect=csv.excel_tab) writer.writeheader() categories = Category.objects.all() - discounts = Sale.objects.active(date.today()).prefetch_related( - "products", "categories" - ) + discounts = fetch_discounts(timezone.now()) attributes_dict = {a.slug: a.pk for a in Attribute.objects.all()} attribute_values_dict = { smart_text(a.pk): smart_text(a) for a in AttributeValue.objects.all() diff --git a/saleor/discount/__init__.py b/saleor/discount/__init__.py index f6f6b3d8651..4eb1941514d 100644 --- a/saleor/discount/__init__.py +++ b/saleor/discount/__init__.py @@ -1,3 +1,6 @@ +from dataclasses import dataclass +from typing import Any, List + from django.conf import settings from django.utils.translation import pgettext_lazy @@ -18,9 +21,11 @@ class VoucherType: CATEGORY = "category" SHIPPING = "shipping" VALUE = "value" + ENTIRE_ORDER = "entire_order" + SPECIFIC_PRODUCT = "specific_product" CHOICES = [ - (VALUE, pgettext_lazy("Voucher: discount for", "All products")), + (ENTIRE_ORDER, pgettext_lazy("Voucher: discount for", "Entire order")), (PRODUCT, pgettext_lazy("Voucher: discount for", "Specific products")), ( COLLECTION, @@ -31,4 +36,18 @@ class VoucherType: pgettext_lazy("Voucher: discount for", "Specific categories of products"), ), (SHIPPING, pgettext_lazy("Voucher: discount for", "Shipping")), + ( + SPECIFIC_PRODUCT, + pgettext_lazy( + "Voucher: discount for", "Specific products, collections and categories" + ), + ), ] + + +@dataclass +class DiscountInfo: + sale: Any + product_ids: List[int] + category_ids: List[int] + collection_ids: List[int] diff --git a/saleor/discount/migrations/0013_auto_20190618_0733.py b/saleor/discount/migrations/0013_auto_20190618_0733.py new file mode 100644 index 00000000000..54ce740f22e --- /dev/null +++ b/saleor/discount/migrations/0013_auto_20190618_0733.py @@ -0,0 +1,32 @@ +# Generated by Django 2.2.2 on 2019-06-18 12:33 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [("discount", "0012_auto_20190329_0836")] + + operations = [ + migrations.AlterField( + model_name="sale", + name="end_date", + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AlterField( + model_name="sale", + name="start_date", + field=models.DateTimeField(default=django.utils.timezone.now), + ), + migrations.AlterField( + model_name="voucher", + name="end_date", + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AlterField( + model_name="voucher", + name="start_date", + field=models.DateTimeField(default=django.utils.timezone.now), + ), + ] diff --git a/saleor/discount/migrations/0014_auto_20190701_0402.py b/saleor/discount/migrations/0014_auto_20190701_0402.py new file mode 100644 index 00000000000..8fdb0c782fe --- /dev/null +++ b/saleor/discount/migrations/0014_auto_20190701_0402.py @@ -0,0 +1,38 @@ +# Generated by Django 2.2.2 on 2019-07-01 09:02 + +from django.db import migrations, models + +from saleor.discount import VoucherType + + +def replace_value_vocucher_type(apps, schema_editor): + cls = apps.get_model("discount", "Voucher") + cls.objects.filter(type="value").update(type=VoucherType.ENTIRE_ORDER) + + +class Migration(migrations.Migration): + + dependencies = [("discount", "0013_auto_20190618_0733")] + + operations = [ + migrations.RunPython(replace_value_vocucher_type), + migrations.AlterField( + model_name="voucher", + name="type", + field=models.CharField( + choices=[ + ("entire_order", "Entire order"), + ("product", "Specific products"), + ("collection", "Specific collections of products"), + ("category", "Specific categories of products"), + ("shipping", "Shipping"), + ( + "specific_product", + "Specific products, collections and categories", + ), + ], + default="entire_order", + max_length=20, + ), + ), + ] diff --git a/saleor/discount/migrations/0015_voucher_min_quantity_of_products.py b/saleor/discount/migrations/0015_voucher_min_quantity_of_products.py new file mode 100644 index 00000000000..a02951e62d4 --- /dev/null +++ b/saleor/discount/migrations/0015_voucher_min_quantity_of_products.py @@ -0,0 +1,16 @@ +# Generated by Django 2.2.3 on 2019-07-04 08:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [("discount", "0014_auto_20190701_0402")] + + operations = [ + migrations.AddField( + model_name="voucher", + name="min_checkout_items_quantity", + field=models.PositiveIntegerField(blank=True, null=True), + ) + ] diff --git a/saleor/discount/models.py b/saleor/discount/models.py index 1d86d9515df..d7a2eca496a 100644 --- a/saleor/discount/models.py +++ b/saleor/discount/models.py @@ -1,10 +1,10 @@ -from datetime import date from decimal import Decimal from functools import partial from django.conf import settings from django.db import models from django.db.models import F, Q +from django.utils import timezone from django.utils.translation import pgettext, pgettext_lazy from django_countries.fields import CountryField from django_prices.models import MoneyField @@ -19,13 +19,15 @@ class NotApplicable(ValueError): """Exception raised when a discount is not applicable to a checkout. The error is raised if the order value is below the minimum required - price. + price or the order quantity is below the minimum quantity of items. Minimum price will be available as the `min_amount_spent` attribute. + Minimum quantity will be available as the `min_checkout_items_quantity` attribute. """ - def __init__(self, msg, min_amount_spent=None): + def __init__(self, msg, min_amount_spent=None, min_checkout_items_quantity=None): super().__init__(msg) self.min_amount_spent = min_amount_spent + self.min_checkout_items_quantity = min_checkout_items_quantity class VoucherQueryset(models.QuerySet): @@ -44,14 +46,14 @@ def expired(self, date): class Voucher(models.Model): type = models.CharField( - max_length=20, choices=VoucherType.CHOICES, default=VoucherType.VALUE + max_length=20, choices=VoucherType.CHOICES, default=VoucherType.ENTIRE_ORDER ) name = models.CharField(max_length=255, null=True, blank=True) code = models.CharField(max_length=12, unique=True, db_index=True) usage_limit = models.PositiveIntegerField(null=True, blank=True) used = models.PositiveIntegerField(default=0, editable=False) - start_date = models.DateField(default=date.today) - end_date = models.DateField(null=True, blank=True) + start_date = models.DateTimeField(default=timezone.now) + end_date = models.DateTimeField(null=True, blank=True) # this field indicates if discount should be applied per order or # individually to every item apply_once_per_order = models.BooleanField(default=False) @@ -73,6 +75,7 @@ class Voucher(models.Model): null=True, blank=True, ) + min_checkout_items_quantity = models.PositiveIntegerField(null=True, blank=True) products = models.ManyToManyField("product.Product", blank=True) collections = models.ManyToManyField("product.Collection", blank=True) categories = models.ManyToManyField("product.Category", blank=True) @@ -130,15 +133,14 @@ def get_discount(self): def get_discount_amount_for(self, price): discount = self.get_discount() - gross_price = price.gross - gross_after_discount = discount(gross_price) - if gross_after_discount.amount < 0: - return gross_price - return gross_price - gross_after_discount + after_discount = discount(price) + if after_discount.amount < 0: + return price + return price - after_discount def validate_min_amount_spent(self, value): min_amount_spent = self.min_amount_spent - if min_amount_spent and value.gross < min_amount_spent: + if min_amount_spent and value < min_amount_spent: msg = pgettext( "Voucher not applicable", "This offer is only valid for orders over %(amount)s.", @@ -148,6 +150,21 @@ def validate_min_amount_spent(self, value): min_amount_spent=min_amount_spent, ) + def validate_min_checkout_items_quantity(self, quantity): + min_checkout_items_quantity = self.min_checkout_items_quantity + if min_checkout_items_quantity and min_checkout_items_quantity > quantity: + msg = pgettext( + "Voucher not applicable", + ( + "This offer is only valid for orders with a minimum of " + "%(min_checkout_items_quantity)d quantity." + ), + ) + raise NotApplicable( + msg % {"min_checkout_items_quantity": min_checkout_items_quantity}, + min_checkout_items_quantity=min_checkout_items_quantity, + ) + class SaleQueryset(models.QuerySet): def active(self, date): @@ -185,8 +202,8 @@ class Sale(models.Model): products = models.ManyToManyField("product.Product", blank=True) categories = models.ManyToManyField("product.Category", blank=True) collections = models.ManyToManyField("product.Collection", blank=True) - start_date = models.DateField(default=date.today) - end_date = models.DateField(null=True, blank=True) + start_date = models.DateTimeField(default=timezone.now) + end_date = models.DateTimeField(null=True, blank=True) objects = SaleQueryset.as_manager() translated = TranslationProxy() diff --git a/saleor/discount/utils.py b/saleor/discount/utils.py index 1a0ce61abf6..674293e01d9 100644 --- a/saleor/discount/utils.py +++ b/saleor/discount/utils.py @@ -1,8 +1,13 @@ +import datetime +from collections import defaultdict +from typing import Iterable + from django.db.models import F from django.utils.translation import pgettext -from ..core.utils.taxes import ZERO_MONEY, ZERO_TAXED_MONEY -from .models import NotApplicable +from ..core.taxes import zero_money +from . import DiscountInfo +from .models import NotApplicable, Sale def increase_voucher_usage(voucher): @@ -17,46 +22,37 @@ def decrease_voucher_usage(voucher): voucher.save(update_fields=["used"]) -def are_product_collections_on_sale(product, sale): - """Checks if any collection is on sale.""" - discounted_collections = set(sale.collections.all()) - product_collections = set(product.collections.all()) - return set(product_collections).intersection(discounted_collections) - - -def is_category_on_sale(category, sale): - """Check if category is descendant of one of categories on sale.""" - discounted_categories = set(sale.categories.all()) - return any( - [category.is_descendant_of(c, include_self=True) for c in discounted_categories] - ) +def are_product_collections_on_sale(product, discount: DiscountInfo): + """Check if any collection is on sale.""" + discounted_collections = discount.collection_ids + product_collections = set(c.id for c in product.collections.all()) + return product_collections.intersection(discounted_collections) -def get_product_discount_on_sale(sale, product): +def get_product_discount_on_sale(product, discount: DiscountInfo): """Return discount value if product is on sale or raise NotApplicable.""" - discounted_products = {p.pk for p in sale.products.all()} is_product_on_sale = ( - product.pk in discounted_products - or is_category_on_sale(product.category, sale) - or are_product_collections_on_sale(product, sale) + product.id in discount.product_ids + or product.category_id in discount.category_ids + or are_product_collections_on_sale(product, discount) ) if is_product_on_sale: - return sale.get_discount() + return discount.sale.get_discount() raise NotApplicable( pgettext("Voucher not applicable", "Discount not applicable for this product") ) -def get_product_discounts(product, discounts): +def get_product_discounts(product, discounts: Iterable[DiscountInfo]): """Return discount values for all discounts applicable to a product.""" for discount in discounts: try: - yield get_product_discount_on_sale(discount, product) + yield get_product_discount_on_sale(product, discount) except NotApplicable: pass -def calculate_discounted_price(product, price, discounts): +def calculate_discounted_price(product, price, discounts: Iterable[DiscountInfo]): """Return minimum product's price of all prices with discounts applied.""" if discounts: discounts = list(get_product_discounts(product, discounts)) @@ -65,23 +61,83 @@ def calculate_discounted_price(product, price, discounts): return price -def get_value_voucher_discount(voucher, total_price): +def get_value_voucher_discount(voucher, total_price, quantity): """Calculate discount value for a voucher of value type.""" voucher.validate_min_amount_spent(total_price) + voucher.validate_min_checkout_items_quantity(quantity) return voucher.get_discount_amount_for(total_price) -def get_shipping_voucher_discount(voucher, total_price, shipping_price): +def get_shipping_voucher_discount(voucher, total_price, shipping_price, quantity): """Calculate discount value for a voucher of shipping type.""" voucher.validate_min_amount_spent(total_price) + voucher.validate_min_checkout_items_quantity(quantity) return voucher.get_discount_amount_for(shipping_price) -def get_products_voucher_discount(voucher, prices): +def get_products_voucher_discount(voucher, prices, total_price, quantity): """Calculate discount value for a voucher of product or category type.""" + voucher.validate_min_amount_spent(total_price) + voucher.validate_min_checkout_items_quantity(quantity) if voucher.apply_once_per_order: - product_total = sum(prices, ZERO_TAXED_MONEY) - return voucher.get_discount_amount_for(product_total) + return voucher.get_discount_amount_for(min(prices)) discounts = (voucher.get_discount_amount_for(price) for price in prices) - total_amount = sum(discounts, ZERO_MONEY) + total_amount = sum(discounts, zero_money()) return total_amount + + +def _fetch_categories(sale_pks): + from ..product.models import Category + + categories = Sale.categories.through.objects.filter( + sale_id__in=sale_pks + ).values_list("sale_id", "category_id") + category_map = defaultdict(set) + for sale_pk, category_pk in categories: + category_map[sale_pk].add(category_pk) + subcategory_map = defaultdict(set) + for sale_pk, category_pks in category_map.items(): + subcategory_map[sale_pk] = set( + Category.tree.filter(pk__in=category_pks) + .get_descendants(include_self=True) + .values_list("pk", flat=True) + ) + return subcategory_map + + +def _fetch_collections(sale_pks): + collections = Sale.collections.through.objects.filter( + sale_id__in=sale_pks + ).values_list("sale_id", "collection_id") + collection_map = defaultdict(set) + for sale_pk, collection_pk in collections: + collection_map[sale_pk].add(collection_pk) + return collection_map + + +def _fetch_products(sale_pks): + products = Sale.products.through.objects.filter(sale_id__in=sale_pks).values_list( + "sale_id", "product_id" + ) + product_map = defaultdict(set) + for sale_pk, product_pk in products: + product_map[sale_pk].add(product_pk) + return product_map + + +def fetch_discounts(date: datetime.date): + sales = list(Sale.objects.active(date)) + pks = {s.pk for s in sales} + collections = _fetch_collections(pks) + products = _fetch_products(pks) + categories = _fetch_categories(pks) + + return [ + DiscountInfo( + sale=sale, + category_ids=categories[sale.pk], + collection_ids=collections[sale.pk], + product_ids=products[sale.pk], + ) + for sale in sales + ] diff --git a/saleor/graphql/account/resolvers.py b/saleor/graphql/account/resolvers.py index 9a58f4cecd3..5923f876b36 100644 --- a/saleor/graphql/account/resolvers.py +++ b/saleor/graphql/account/resolvers.py @@ -1,9 +1,16 @@ +from itertools import chain + import graphene_django_optimizer as gql_optimizer from django.db.models import Q from i18naddress import get_validation_rules from ...account import models from ...core.utils import get_client_ip, get_country_by_ip +from ...payment.utils import ( + fetch_customer_id, + list_enabled_gateways, + retrieve_customer_sources, +) from ..utils import filter_by_query_param from .types import AddressValidationData, ChoiceValue @@ -79,3 +86,38 @@ def resolve_address_validator(info, country_code, country_area, city_area): postal_code_examples=rules.postal_code_examples, postal_code_prefix=rules.postal_code_prefix, ) + + +def resolve_payment_sources(user: models.User): + stored_customer_accounts = { + gateway: fetch_customer_id(user, gateway) for gateway in list_enabled_gateways() + } + return list( + chain( + *[ + prepare_graphql_payment_sources_type( + retrieve_customer_sources(gateway, customer_id) + ) + for gateway, customer_id in stored_customer_accounts.items() + if customer_id is not None + ] + ) + ) + + +def prepare_graphql_payment_sources_type(payment_sources): + sources = [] + for src in payment_sources: + sources.append( + { + "gateway": src.gateway, + "credit_card_info": { + "last_digits": src.credit_card_info.last_4, + "exp_year": src.credit_card_info.exp_year, + "exp_month": src.credit_card_info.exp_month, + "brand": "", + "first_digits": "", + }, + } + ) + return sources diff --git a/saleor/graphql/account/types.py b/saleor/graphql/account/types.py index d9082822d7f..aadc3b3d4b9 100644 --- a/saleor/graphql/account/types.py +++ b/saleor/graphql/account/types.py @@ -2,7 +2,7 @@ import graphene_django_optimizer as gql_optimizer from django.contrib.auth import get_user_model from graphene import relay -from graphql_jwt.decorators import permission_required +from graphql_jwt.decorators import login_required, permission_required from ...account import models from ...checkout.utils import get_user_checkout @@ -12,7 +12,7 @@ from ..core.connection import CountableDjangoObjectType from ..core.fields import PrefetchingConnectionField from ..core.types import CountryDisplay, Image, PermissionDisplay -from ..shop.types import get_node_optimized +from ..core.utils import get_node_optimized from ..utils import format_permissions_for_display from .enums import CustomerEventsEnum @@ -182,6 +182,10 @@ class User(CountableDjangoObjectType): ), model_field="events", ) + stored_payment_sources = graphene.List( + "saleor.graphql.payment.types.PaymentSource", + description="List of stored payment sources", + ) class Meta: description = "Represents user data." @@ -252,6 +256,13 @@ def resolve_avatar(root: models.User, info, size=None, **_kwargs): info=info, ) + @staticmethod + @login_required + def resolve_stored_payment_sources(root: models.User, _info): + from .resolvers import resolve_payment_sources + + return resolve_payment_sources(root) + class ChoiceValue(graphene.ObjectType): raw = graphene.String() diff --git a/saleor/graphql/api.py b/saleor/graphql/api.py index c5a41f9f323..8cee2e01943 100644 --- a/saleor/graphql/api.py +++ b/saleor/graphql/api.py @@ -2,7 +2,7 @@ from .account.schema import AccountMutations, AccountQueries from .checkout.schema import CheckoutMutations, CheckoutQueries -from .core.schema import CoreMutations +from .core.schema import CoreMutations, CoreQueries from .discount.schema import DiscountMutations, DiscountQueries from .giftcard.schema import GiftCardMutations, GiftCardQueries from .menu.schema import MenuMutations, MenuQueries @@ -18,6 +18,7 @@ class Query( AccountQueries, CheckoutQueries, + CoreQueries, DiscountQueries, GiftCardQueries, MenuQueries, diff --git a/saleor/graphql/checkout/mutations.py b/saleor/graphql/checkout/mutations.py index 77fff15cb7c..290e7152bbf 100644 --- a/saleor/graphql/checkout/mutations.py +++ b/saleor/graphql/checkout/mutations.py @@ -1,9 +1,8 @@ -from datetime import date - import graphene from django.conf import settings from django.core.exceptions import ValidationError from django.db import transaction +from django.utils import timezone from ...checkout import models from ...checkout.utils import ( @@ -16,7 +15,6 @@ clean_checkout, create_order, get_or_create_user_checkout, - get_taxes_for_checkout, get_voucher_for_checkout, prepare_order_data, recalculate_checkout_discount, @@ -25,11 +23,12 @@ ) from ...core import analytics from ...core.exceptions import InsufficientStock -from ...core.utils.taxes import get_taxes_for_address +from ...core.taxes.errors import TaxError +from ...core.taxes.interface import calculate_checkout_subtotal from ...discount import models as voucher_model from ...payment import PaymentError from ...payment.interface import AddressData -from ...payment.utils import gateway_process_payment +from ...payment.utils import gateway_process_payment, store_customer_id from ...shipping.models import ShippingMethod as ShippingMethodModel from ..account.i18n import I18nMixin from ..account.types import AddressInput, User @@ -41,9 +40,7 @@ from .types import Checkout, CheckoutLine -def clean_shipping_method( - checkout, method, discounts, taxes, country_code=None, remove=True -): +def clean_shipping_method(checkout, method, discounts, country_code=None, remove=True): # FIXME Add tests for this function if not method: return None @@ -58,7 +55,7 @@ def clean_shipping_method( ) valid_methods = ShippingMethodModel.objects.applicable_shipping_methods( - price=checkout.get_subtotal(discounts, taxes).gross.amount, + price=calculate_checkout_subtotal(checkout, discounts).gross.amount, weight=checkout.get_total_weight(), country_code=country_code or checkout.shipping_address.country.code, ) @@ -254,16 +251,13 @@ def perform_mutation(cls, _root, info, checkout_id, lines, replace=False): checkout=checkout, method=checkout.shipping_method, discounts=info.context.discounts, - taxes=get_taxes_for_address(checkout.shipping_address), ) if variants and quantities: for variant, quantity in zip(variants, quantities): add_variant_to_checkout(checkout, variant, quantity, replace=replace) - recalculate_checkout_discount( - checkout, info.context.discounts, info.context.taxes - ) + recalculate_checkout_discount(checkout, info.context.discounts) return CheckoutLinesAdd(checkout=checkout) @@ -316,12 +310,9 @@ def perform_mutation(cls, _root, info, checkout_id, line_id): checkout=checkout, method=checkout.shipping_method, discounts=info.context.discounts, - taxes=get_taxes_for_address(checkout.shipping_address), ) - recalculate_checkout_discount( - checkout, info.context.discounts, info.context.taxes - ) + recalculate_checkout_discount(checkout, info.context.discounts) return CheckoutLineDelete(checkout=checkout) @@ -410,15 +401,12 @@ def perform_mutation(cls, _root, info, checkout_id, shipping_address): checkout=checkout, method=checkout.shipping_method, discounts=info.context.discounts, - taxes=get_taxes_for_address(shipping_address), ) with transaction.atomic(): shipping_address.save() change_shipping_address_in_checkout(checkout, shipping_address) - recalculate_checkout_discount( - checkout, info.context.discounts, info.context.taxes - ) + recalculate_checkout_discount(checkout, info.context.discounts) return CheckoutShippingAddressUpdate(checkout=checkout) @@ -516,15 +504,12 @@ def perform_mutation(cls, _root, info, checkout_id, shipping_method_id): checkout=checkout, method=shipping_method, discounts=info.context.discounts, - taxes=info.context.taxes, remove=False, ) checkout.shipping_method = shipping_method checkout.save(update_fields=["shipping_method"]) - recalculate_checkout_discount( - checkout, info.context.discounts, info.context.taxes - ) + recalculate_checkout_discount(checkout, info.context.discounts) return CheckoutShippingMethodUpdate(checkout=checkout) @@ -534,6 +519,12 @@ class CheckoutComplete(BaseMutation): class Arguments: checkout_id = graphene.ID(description="Checkout ID", required=True) + store_source = graphene.Boolean( + default_value=False, + description=( + "Determines whether to store the payment source for future usage." + ), + ) class Meta: description = ( @@ -550,13 +541,13 @@ def check_permissions(cls, user): return True @classmethod - def perform_mutation(cls, _root, info, checkout_id): + def perform_mutation(cls, _root, info, checkout_id, store_source): checkout = cls.get_node_or_error( info, checkout_id, only_type=Checkout, field="checkout_id" ) - taxes = get_taxes_for_checkout(checkout, info.context.taxes) - clean_checkout(checkout, taxes, info.context.discounts) + user = info.context.user + clean_checkout(checkout, info.context.discounts) payment = checkout.get_last_active_payment() @@ -566,30 +557,35 @@ def perform_mutation(cls, _root, info, checkout_id): checkout=checkout, tracking_code=analytics.get_client_id(info.context), discounts=info.context.discounts, - taxes=taxes, ) except InsufficientStock as e: raise ValidationError(f"Insufficient product stock: {e.item}") except voucher_model.NotApplicable: raise ValidationError("Voucher not applicable") + except TaxError as tax_error: + return ValidationError( + "Unable to calculate taxes - %s" % str(tax_error) + ) try: billing_address = order_data["billing_address"] # type: models.Address shipping_address = order_data["shipping_address"] # type: models.Address - gateway_process_payment( + txn = gateway_process_payment( payment=payment, payment_token=payment.token, billing_address=AddressData(**billing_address.as_data()), shipping_address=AddressData(**shipping_address.as_data()), + store_source=store_source, ) + if txn.is_success and txn.customer_id and user.is_authenticated: + store_customer_id(user, payment.gateway, txn.customer_id) + except PaymentError as e: abort_order_data(order_data) raise ValidationError(str(e)) # create the order into the database - order = create_order( - checkout=checkout, order_data=order_data, user=info.context.user - ) + order = create_order(checkout=checkout, order_data=order_data, user=user) # remove checkout after order is successfully paid checkout.delete() @@ -625,7 +621,7 @@ def perform_mutation(cls, _root, info, checkout_id, voucher_code=None): if voucher_code: try: - voucher = voucher_model.Voucher.objects.active(date=date.today()).get( + voucher = voucher_model.Voucher.objects.active(date=timezone.now()).get( code=voucher_code ) except voucher_model.Voucher.DoesNotExist: @@ -673,7 +669,7 @@ def perform_mutation(cls, _root, info, checkout_id, promo_code): checkout = cls.get_node_or_error( info, checkout_id, only_type=Checkout, field="checkout_id" ) - add_promo_code_to_checkout(checkout, promo_code) + add_promo_code_to_checkout(checkout, promo_code, info.context.discounts) return CheckoutAddPromoCode(checkout=checkout) diff --git a/saleor/graphql/checkout/types.py b/saleor/graphql/checkout/types.py index 8ded1e58ba0..f85d9d0e4bc 100644 --- a/saleor/graphql/checkout/types.py +++ b/saleor/graphql/checkout/types.py @@ -3,7 +3,13 @@ from django.conf import settings from ...checkout import models -from ...core.utils.taxes import get_taxes_for_address +from ...core.taxes import zero_taxed_money +from ...core.taxes.interface import ( + calculate_checkout_line_total, + calculate_checkout_shipping, + calculate_checkout_subtotal, + calculate_checkout_total, +) from ..core.connection import CountableDjangoObjectType from ..core.types.money import TaxedMoney from ..giftcard.types import GiftCard @@ -29,9 +35,10 @@ class Meta: filter_fields = ["id"] @staticmethod - def resolve_total_price(root: models.CheckoutLine, info): - taxes = get_taxes_for_address(root.checkout.shipping_address) - return root.get_total(discounts=info.context.discounts, taxes=taxes) + def resolve_total_price(self, info): + return calculate_checkout_line_total( + checkout_line=self, discounts=info.context.discounts + ) @staticmethod def resolve_requires_shipping(root: models.CheckoutLine, *_args): @@ -110,18 +117,23 @@ class Meta: @staticmethod def resolve_total_price(root: models.Checkout, info): - taxes = get_taxes_for_address(root.shipping_address) - return root.get_total(discounts=info.context.discounts, taxes=taxes) + taxed_total = ( + calculate_checkout_total(checkout=root, discounts=info.context.discounts) + - root.get_total_gift_cards_balance() + ) + return max(taxed_total, zero_taxed_money()) @staticmethod def resolve_subtotal_price(root: models.Checkout, info): - taxes = get_taxes_for_address(root.shipping_address) - return root.get_subtotal(discounts=info.context.discounts, taxes=taxes) + return calculate_checkout_subtotal( + checkout=root, discounts=info.context.discounts + ) @staticmethod - def resolve_shipping_price(root: models.Checkout, *_args): - taxes = get_taxes_for_address(root.shipping_address) - return root.get_shipping_price(taxes=taxes) + def resolve_shipping_price(root: models.Checkout, info): + return calculate_checkout_shipping( + checkout=root, discounts=info.context.discounts + ) @staticmethod def resolve_lines(root: models.Checkout, *_args): @@ -129,8 +141,9 @@ def resolve_lines(root: models.Checkout, *_args): @staticmethod def resolve_available_shipping_methods(root: models.Checkout, info): - taxes = get_taxes_for_address(root.shipping_address) - price = root.get_subtotal(taxes=taxes, discounts=info.context.discounts) + price = calculate_checkout_subtotal( + checkout=root, discounts=info.context.discounts + ) return applicable_shipping_methods(root, price.gross.amount) @staticmethod diff --git a/saleor/graphql/core/enums.py b/saleor/graphql/core/enums.py index 36a3be0e7d9..7af46363225 100644 --- a/saleor/graphql/core/enums.py +++ b/saleor/graphql/core/enums.py @@ -1,10 +1,13 @@ import graphene -from ...core import TaxRateType as CoreTaxRateType from ...core.permissions import MODELS_PERMISSIONS +from ...core.taxes.vatlayer import TaxRateType as CoreTaxRateType from ...core.weight import WeightUnits from .utils import str_to_enum +# FIXME CoreTaxRateType should be removed after we will drop old api fields dedicated +# to taxes + class ReportingPeriod(graphene.Enum): TODAY = "TODAY" diff --git a/saleor/graphql/core/schema.py b/saleor/graphql/core/schema.py index 307c40efeff..ec29797bcec 100644 --- a/saleor/graphql/core/schema.py +++ b/saleor/graphql/core/schema.py @@ -1,10 +1,24 @@ import graphene import graphql_jwt +from ...core.taxes import interface as tax_interface from .mutations import CreateToken, VerifyToken +from .types.common import TaxType class CoreMutations(graphene.ObjectType): token_create = CreateToken.Field() token_refresh = graphql_jwt.Refresh.Field() token_verify = VerifyToken.Field() + + +class CoreQueries(graphene.ObjectType): + tax_types = graphene.List( + TaxType, description="List of all tax rates available from tax gateway" + ) + + def resolve_tax_types(self, _info): + return [ + TaxType(description=tax.description, tax_code=tax.code) + for tax in tax_interface.get_tax_rate_type_choices() + ] diff --git a/saleor/graphql/core/types/__init__.py b/saleor/graphql/core/types/__init__.py index 3ea384e89db..92efe4e307d 100644 --- a/saleor/graphql/core/types/__init__.py +++ b/saleor/graphql/core/types/__init__.py @@ -6,6 +6,7 @@ LanguageDisplay, PermissionDisplay, SeoInput, + TaxType, Weight, ) from .filter_input import FilterInputObjectType diff --git a/saleor/graphql/core/types/common.py b/saleor/graphql/core/types/common.py index 9ec2cb04e53..5b0d16f678a 100644 --- a/saleor/graphql/core/types/common.py +++ b/saleor/graphql/core/types/common.py @@ -86,6 +86,20 @@ class DateRangeInput(graphene.InputObjectType): lte = graphene.Date(description="End date", required=False) +class DateTimeRangeInput(graphene.InputObjectType): + gte = graphene.DateTime(description="Start date", required=False) + lte = graphene.DateTime(description="End date", required=False) + + class IntRangeInput(graphene.InputObjectType): gte = graphene.Int(description="Value greater than or equal", required=False) lte = graphene.Int(description="Value less than or equal", required=False) + + +class TaxType(graphene.ObjectType): + """Representation of tax types fetched from tax gateway""" + + description = graphene.String(description="Description of the tax type") + tax_code = graphene.String( + description="External tax code used to identify given tax group" + ) diff --git a/saleor/graphql/discount/enums.py b/saleor/graphql/discount/enums.py index 4e707cfe29e..e6c6808ade0 100644 --- a/saleor/graphql/discount/enums.py +++ b/saleor/graphql/discount/enums.py @@ -14,6 +14,8 @@ class VoucherTypeEnum(graphene.Enum): CATEGORY = VoucherType.CATEGORY SHIPPING = VoucherType.SHIPPING VALUE = VoucherType.VALUE + ENTIRE_ORDER = VoucherType.ENTIRE_ORDER + SPECIFIC_PRODUCT = VoucherType.SPECIFIC_PRODUCT class DiscountStatusEnum(graphene.Enum): diff --git a/saleor/graphql/discount/filters.py b/saleor/graphql/discount/filters.py index 2083384c206..3ff97ebf835 100644 --- a/saleor/graphql/discount/filters.py +++ b/saleor/graphql/discount/filters.py @@ -1,13 +1,13 @@ -from datetime import date from typing import List import django_filters from django.db.models import Q +from django.utils import timezone from ...discount import DiscountValueType from ...discount.models import Sale, Voucher, VoucherQueryset from ..core.filters import ListObjectTypeFilter, ObjectTypeFilter -from ..core.types.common import DateRangeInput, IntRangeInput +from ..core.types.common import DateTimeRangeInput, IntRangeInput from ..utils import filter_by_query_param from .enums import DiscountStatusEnum, DiscountValueTypeEnum, VoucherDiscountType @@ -18,13 +18,13 @@ def filter_status( if not value: return qs query_objects = qs.none() - today = date.today() + now = timezone.now() if DiscountStatusEnum.ACTIVE in value: - query_objects |= qs.active(today) + query_objects |= qs.active(now) if DiscountStatusEnum.EXPIRED in value: - query_objects |= qs.expired(today) + query_objects |= qs.expired(now) if DiscountStatusEnum.SCHEDULED in value: - query_objects |= qs.filter(start_date__gt=today) + query_objects |= qs.filter(start_date__gt=now) return qs & query_objects @@ -90,7 +90,7 @@ class VoucherFilter(django_filters.FilterSet): discount_type = ListObjectTypeFilter( input_class=VoucherDiscountType, method=filter_discount_type ) - started = ObjectTypeFilter(input_class=DateRangeInput, method=filter_started) + started = ObjectTypeFilter(input_class=DateTimeRangeInput, method=filter_started) search = django_filters.CharFilter(method=filter_voucher_search) class Meta: @@ -103,7 +103,7 @@ class SaleFilter(django_filters.FilterSet): sale_type = ObjectTypeFilter( input_class=DiscountValueTypeEnum, method=filter_sale_type ) - started = ObjectTypeFilter(input_class=DateRangeInput, method=filter_started) + started = ObjectTypeFilter(input_class=DateTimeRangeInput, method=filter_started) search = django_filters.CharFilter(method=filter_sale_search) class Meta: diff --git a/saleor/graphql/discount/mutations.py b/saleor/graphql/discount/mutations.py index 38c3a8ee778..f44dc82ae3e 100644 --- a/saleor/graphql/discount/mutations.py +++ b/saleor/graphql/discount/mutations.py @@ -66,14 +66,19 @@ def remove_catalogues_from_node(cls, node, input): class VoucherInput(graphene.InputObjectType): type = VoucherTypeEnum( - description="Voucher type: product, category shipping or value." + description=( + "Voucher type: PRODUCT, CATEGORY SHIPPING or ENTIRE_ORDER. " + "Deprecated fields: " + "PRODUCT, COLLECTION, CATEGORY use SPECIFIC_PRODUCT instead. " + "VALUE use ENTIRE_ORDER instead." + ) ) name = graphene.String(description="Voucher name.") code = graphene.String(decription="Code to use the voucher.") - start_date = graphene.types.datetime.Date( + start_date = graphene.types.datetime.DateTime( description="Start date of the voucher in ISO 8601 format." ) - end_date = graphene.types.datetime.Date( + end_date = graphene.types.datetime.DateTime( description="End date of the voucher in ISO 8601 format." ) discount_value_type = DiscountValueTypeEnum( @@ -96,9 +101,18 @@ class VoucherInput(graphene.InputObjectType): min_amount_spent = Decimal( description="Min purchase amount required to apply the voucher." ) + min_checkout_items_quantity = graphene.Int( + description="Minimal quantity of checkout items required to apply the voucher." + ) countries = graphene.List( graphene.String, - description="Country codes that can be used with the shipping voucher", + description="Country codes that can be used with the shipping voucher.", + ) + apply_once_per_order = graphene.Boolean( + description="Voucher should be applied to the cheapest item or entire order." + ) + usage_limit = graphene.Int( + description="Limit number of times this voucher can be used in total" ) @@ -120,6 +134,9 @@ def clean_input(cls, info, instance, data): data["code"] = generate_promo_code() elif not is_available_promo_code(code): raise PromoCodeAlreadyExists() + voucher_type = data.get("type", None) + if voucher_type == VoucherTypeEnum.VALUE: + data["type"] = VoucherTypeEnum.ENTIRE_ORDER.value cleaned_input = super().clean_input(info, instance, data) return cleaned_input @@ -208,8 +225,12 @@ class SaleInput(graphene.InputObjectType): description="Collections related to the discount.", name="collections", ) - start_date = graphene.Date(description="Start date of the sale in ISO 8601 format.") - end_date = graphene.Date(description="End date of the sale in ISO 8601 format.") + start_date = graphene.types.datetime.DateTime( + description="Start date of the voucher in ISO 8601 format." + ) + end_date = graphene.types.datetime.DateTime( + description="End date of the voucher in ISO 8601 format." + ) class SaleCreate(ModelMutation): diff --git a/saleor/graphql/discount/types.py b/saleor/graphql/discount/types.py index 1143f3aff93..88710c0714f 100644 --- a/saleor/graphql/discount/types.py +++ b/saleor/graphql/discount/types.py @@ -10,6 +10,7 @@ from ..translations.enums import LanguageCodeEnum from ..translations.resolvers import resolve_translation from ..translations.types import SaleTranslation, VoucherTranslation +from .enums import DiscountValueTypeEnum, VoucherTypeEnum class Sale(CountableDjangoObjectType): @@ -96,6 +97,11 @@ class Voucher(CountableDjangoObjectType): description="Returns translated Voucher fields for the given language code.", resolver=resolve_translation, ) + discount_value_type = DiscountValueTypeEnum( + description="Determines a type of discount for voucher - value or percentage", + required=True, + ) + type = VoucherTypeEnum(description="Determines a type of voucher", required=True) class Meta: description = """ @@ -110,6 +116,7 @@ class Meta: "end_date", "id", "min_amount_spent", + "min_checkout_items_quantity", "name", "start_date", "type", diff --git a/saleor/graphql/middleware.py b/saleor/graphql/middleware.py index c5ff9f246f1..ead93a98cb2 100644 --- a/saleor/graphql/middleware.py +++ b/saleor/graphql/middleware.py @@ -1,33 +1,9 @@ -from functools import wraps -from typing import Callable - from django.contrib.auth.models import AnonymousUser -from django.urls import reverse +from django.shortcuts import reverse from graphene_django.settings import graphene_settings from graphql_jwt.middleware import JSONWebTokenMiddleware -def api_only_request_handler(get_response: Callable, handler: Callable): - @wraps(handler) - def handle_request(request): - api_path = reverse("api") - if request.path != api_path: - return get_response(request) - return handler(request) - - return handle_request - - -def api_only_middleware(middleware): - @wraps(middleware) - def wrapped(get_response): - handler = middleware(get_response) - return api_only_request_handler(get_response, handler) - - return wrapped - - -@api_only_middleware def jwt_middleware(get_response): """Authenticate user using JSONWebTokenMiddleware ignoring the session-based authentication. @@ -42,12 +18,13 @@ def jwt_middleware(get_response): graphene_settings.MIDDLEWARE.remove(JSONWebTokenMiddleware) def middleware(request): - # clear user authenticated by AuthenticationMiddleware - request._cached_user = AnonymousUser() - request.user = AnonymousUser() + if request.path == reverse("api"): + # clear user authenticated by AuthenticationMiddleware + request._cached_user = AnonymousUser() + request.user = AnonymousUser() - # authenticate using JWT middleware - jwt_middleware_inst.process_request(request) + # authenticate using JWT middleware + jwt_middleware_inst.process_request(request) return get_response(request) return middleware diff --git a/saleor/graphql/order/mutations/draft_orders.py b/saleor/graphql/order/mutations/draft_orders.py index e52598f2066..08e5008b1a3 100644 --- a/saleor/graphql/order/mutations/draft_orders.py +++ b/saleor/graphql/order/mutations/draft_orders.py @@ -4,7 +4,7 @@ from ....account.models import User from ....core.exceptions import InsufficientStock -from ....core.utils.taxes import ZERO_TAXED_MONEY +from ....core.taxes import zero_taxed_money from ....order import OrderStatus, events, models from ....order.utils import ( add_variant_to_order, @@ -12,6 +12,7 @@ change_order_line_quantity, delete_order_line, recalculate_order, + update_order_prices, ) from ...account.i18n import I18nMixin from ...account.types import AddressInput @@ -107,7 +108,7 @@ def clean_input(cls, info, instance, data): return cleaned_input @staticmethod - def _save_addresses(instance, cleaned_input): + def _save_addresses(info, instance: models.Order, cleaned_input): # Create the draft creation event shipping_address = cleaned_input.get("shipping_address") if shipping_address: @@ -148,10 +149,24 @@ def _commit_changes(cls, info, instance, cleaned_input): instance.save(update_fields=["billing_address", "shipping_address"]) + @classmethod + def _refresh_lines_unit_price(cls, info, instance, cleaned_input, new_instance): + if new_instance: + # It is a new instance, all new lines have already updated prices. + return + shipping_address = cleaned_input.get("shipping_address") + if shipping_address and instance.is_shipping_required(): + update_order_prices(instance, info.context.discounts) + billing_address = cleaned_input.get("billing_address") + if billing_address and not instance.is_shipping_required(): + update_order_prices(instance, info.context.discounts) + @classmethod def save(cls, info, instance, cleaned_input): + new_instance = not bool(instance.pk) + # Process addresses - cls._save_addresses(instance, cleaned_input) + cls._save_addresses(info, instance, cleaned_input) # Save any changes create/update the draft cls._commit_changes(info, instance, cleaned_input) @@ -164,6 +179,8 @@ def save(cls, info, instance, cleaned_input): cleaned_input.get("variants"), ) + cls._refresh_lines_unit_price(info, instance, cleaned_input, new_instance) + # Post-process the results recalculate_order(instance) @@ -222,7 +239,7 @@ def perform_mutation(cls, _root, info, id): if not order.is_shipping_required(): order.shipping_method_name = None - order.shipping_price = ZERO_TAXED_MONEY + order.shipping_price = zero_taxed_money() if order.shipping_address: order.shipping_address.delete() diff --git a/saleor/graphql/order/mutations/orders.py b/saleor/graphql/order/mutations/orders.py index ad1260f3085..122b6c8cb87 100644 --- a/saleor/graphql/order/mutations/orders.py +++ b/saleor/graphql/order/mutations/orders.py @@ -2,9 +2,9 @@ from django.core.exceptions import ValidationError from ....account.models import User -from ....core.utils.taxes import ZERO_TAXED_MONEY +from ....core.taxes import interface as tax_interface, zero_taxed_money from ....order import events, models -from ....order.utils import cancel_order +from ....order.utils import cancel_order, recalculate_order from ....payment import CustomPaymentChoices, PaymentError from ....payment.utils import ( clean_mark_order_as_paid, @@ -150,7 +150,7 @@ def perform_mutation(cls, _root, info, **data): ) order.shipping_method = None - order.shipping_price = ZERO_TAXED_MONEY + order.shipping_price = zero_taxed_money() order.shipping_method_name = None order.save( update_fields=[ @@ -172,7 +172,7 @@ def perform_mutation(cls, _root, info, **data): clean_order_update_shipping(order, method) order.shipping_method = method - order.shipping_price = method.get_total(info.context.taxes) + order.shipping_price = tax_interface.calculate_order_shipping(order) order.shipping_method_name = method.name order.save( update_fields=[ @@ -182,6 +182,9 @@ def perform_mutation(cls, _root, info, **data): "shipping_price_gross", ] ) + # Post-process the results + recalculate_order(order) + return OrderUpdateShipping(order=order) diff --git a/saleor/graphql/payment/mutations.py b/saleor/graphql/payment/mutations.py index 5cbd42957d4..5edbd22f38e 100644 --- a/saleor/graphql/payment/mutations.py +++ b/saleor/graphql/payment/mutations.py @@ -2,8 +2,9 @@ from django.conf import settings from django.core.exceptions import ValidationError +from ...core.taxes import zero_taxed_money +from ...core.taxes.interface import calculate_checkout_total from ...core.utils import get_client_ip -from ...core.utils.taxes import get_taxes_for_address from ...payment import PaymentError, models from ...payment.utils import ( create_payment, @@ -83,12 +84,12 @@ def perform_mutation(cls, _root, info, checkout_id, **data): raise ValidationError( {"billing_address": "No billing address associated with this checkout."} ) - - checkout_total = checkout.get_total( - discounts=info.context.discounts, - taxes=get_taxes_for_address(checkout.billing_address), + checkout_total = ( + calculate_checkout_total(checkout, discounts=info.context.discounts) + - checkout.get_total_gift_cards_balance() ) - amount = data.get("amount", checkout_total) + checkout_total = max(checkout_total, zero_taxed_money(checkout_total.currency)) + amount = data.get("amount", checkout_total.gross.amount) if amount < checkout_total.gross.amount: raise ValidationError( { diff --git a/saleor/graphql/payment/resolvers.py b/saleor/graphql/payment/resolvers.py index 6ad3c466c6a..d6807704114 100644 --- a/saleor/graphql/payment/resolvers.py +++ b/saleor/graphql/payment/resolvers.py @@ -1,7 +1,8 @@ import graphene_django_optimizer as gql_optimizer from ...payment import models -from ...payment.utils import gateway_get_client_token +from ...payment.interface import TokenConfig +from ...payment.utils import fetch_customer_id, gateway_get_client_token from ..utils import filter_by_query_param PAYMENT_SEARCH_FIELDS = ["id"] @@ -13,5 +14,10 @@ def resolve_payments(info, query): return gql_optimizer.query(queryset, info) -def resolve_payment_client_token(gateway=None): +def resolve_payment_client_token(gateway=None, user=None): + if user is not None: + customer_id = fetch_customer_id(user, gateway) + if customer_id: + token_config = TokenConfig(customer_id=customer_id) + return gateway_get_client_token(gateway, token_config) return gateway_get_client_token(gateway) diff --git a/saleor/graphql/payment/schema.py b/saleor/graphql/payment/schema.py index bc8864dfd29..e38fd7ec785 100644 --- a/saleor/graphql/payment/schema.py +++ b/saleor/graphql/payment/schema.py @@ -23,8 +23,9 @@ def resolve_payment(self, info, **data): def resolve_payments(self, info, query=None, **_kwargs): return resolve_payments(info, query) - def resolve_payment_client_token(self, _info, gateway=None): - return resolve_payment_client_token(gateway) + def resolve_payment_client_token(self, info, gateway=None): + user = info.context.user if info.context.user.is_authenticated else None + return resolve_payment_client_token(gateway, user=user) class PaymentMutations(graphene.ObjectType): diff --git a/saleor/graphql/payment/types.py b/saleor/graphql/payment/types.py index 28ceaf10c83..84792df213e 100644 --- a/saleor/graphql/payment/types.py +++ b/saleor/graphql/payment/types.py @@ -52,6 +52,19 @@ class CreditCard(graphene.ObjectType): ) +class PaymentSource(graphene.ObjectType): + class Meta: + description = ( + "Represents a payment source stored " + "for user in payment gateway, such as credit card." + ) + + gateway = graphene.String(description="Payment gateway name", required=True) + credit_card_info = graphene.Field( + CreditCard, description="Stored credit card details if available" + ) + + class Payment(CountableDjangoObjectType): charge_status = PaymentChargeStatusEnum( description="Internal payment status.", required=True diff --git a/saleor/graphql/product/mutations/products.py b/saleor/graphql/product/mutations/products.py index 7ea5e27057a..1a9d31c2c8a 100644 --- a/saleor/graphql/product/mutations/products.py +++ b/saleor/graphql/product/mutations/products.py @@ -6,6 +6,8 @@ from django.template.defaultfilters import slugify from graphene.types import InputObjectType +from ....core.taxes import interface as tax_interface +from ....core.taxes.vatlayer import interface as vatlayer_interface from ....product import models from ....product.tasks import update_variants_names from ....product.thumbnails import ( @@ -358,7 +360,11 @@ class ProductInput(graphene.InputObjectType): Product price. Note: this field is deprecated, use basePrice instead.""" ) base_price = Decimal(description="Product price.") - tax_rate = TaxRateType(description="Tax rate.") + tax_rate = TaxRateType( + description="Tax rate.", + deprecation_reason=("taxRate is deprecated, Use taxCode"), + ) + tax_code = graphene.String(description="Tax rate for enabled tax gateway") seo = SeoInput(description="Search engine optimization fields.") weight = WeightScalar(description="Weight of the Product.", required=False) sku = graphene.String( @@ -416,6 +422,15 @@ def clean_input(cls, info, instance, data): if price is not None: cleaned_input["price"] = price + # FIXME tax_rate logic should be dropped after we remove tax_rate from input + tax_rate = cleaned_input.pop("tax_rate", "") + if tax_rate: + vatlayer_interface.assign_tax_to_object_meta(instance, tax_rate) + + tax_code = cleaned_input.pop("tax_code", "") + if tax_code: + tax_interface.assign_tax_to_object_meta(instance, tax_code) + if attributes and product_type: qs = product_type.product_attributes.prefetch_related("values") try: @@ -662,7 +677,11 @@ class ProductTypeInput(graphene.InputObjectType): description="Determines if products are digital.", required=False ) weight = WeightScalar(description="Weight of the ProductType items.") - tax_rate = TaxRateType(description="A type of goods.") + tax_rate = TaxRateType( + description="Tax rate.", + deprecation_reason=("taxRate is deprecated, Use taxCode"), + ) + tax_code = graphene.String(description="Tax rate for enabled tax gateway") class ProductTypeCreate(ModelMutation): @@ -676,6 +695,21 @@ class Meta: model = models.ProductType permissions = ("product.manage_products",) + @classmethod + def clean_input(cls, info, instance, data): + cleaned_input = super().clean_input(info, instance, data) + + # FIXME tax_rate logic should be dropped after we remove tax_rate from input + tax_rate = cleaned_input.pop("tax_rate", "") + if tax_rate: + vatlayer_interface.assign_tax_to_object_meta(instance, tax_rate) + + tax_code = cleaned_input.pop("tax_code", "") + if tax_code: + tax_interface.assign_tax_to_object_meta(instance, tax_code) + + return cleaned_input + @classmethod def _save_m2m(cls, info, instance, cleaned_data): super()._save_m2m(info, instance, cleaned_data) diff --git a/saleor/graphql/product/types/products.py b/saleor/graphql/product/types/products.py index 78069be3786..3c2dca5dfce 100644 --- a/saleor/graphql/product/types/products.py +++ b/saleor/graphql/product/types/products.py @@ -5,6 +5,8 @@ from graphql.error import GraphQLError from graphql_jwt.decorators import permission_required +from ....core.taxes import interface as tax_interface +from ....core.taxes.vatlayer import interface as vatlayer_interface from ....product import models from ....product.templatetags.product_images import ( get_product_image_thumbnail, @@ -19,7 +21,7 @@ from ...core.connection import CountableDjangoObjectType from ...core.enums import ReportingPeriod, TaxRateType from ...core.fields import PrefetchingConnectionField -from ...core.types import Image, Money, MoneyRange, TaxedMoney, TaxedMoneyRange +from ...core.types import Image, Money, MoneyRange, TaxedMoney, TaxedMoneyRange, TaxType from ...translations.enums import LanguageCodeEnum from ...translations.resolvers import resolve_translation from ...translations.types import ( @@ -283,7 +285,11 @@ def resolve_price(root: models.ProductVariant, *_args): def resolve_pricing(root: models.ProductVariant, info): context = info.context availability = get_variant_availability( - root, context.discounts, context.taxes, context.currency + root, + context.discounts, + context.country, + context.currency, + taxes=context.taxes, ) return VariantPricingInfo(**availability._asdict()) @@ -372,7 +378,16 @@ class Product(CountableDjangoObjectType): description="The product's default base price.", deprecation_reason=("Has been replaced by 'basePrice'"), ) - tax_rate = TaxRateType(description="A type of tax rate.") + tax_rate = TaxRateType( + description="A type of tax rate.", + deprecation_reason=( + "taxRate is deprecated. Use taxType to obtain taxCode for given tax gateway" + ), + ) + + tax_type = graphene.Field( + TaxType, description="A type of tax. Assigned by enabled tax gateway" + ) attributes = graphene.List( graphene.NonNull(SelectedAttribute), required=True, @@ -436,6 +451,17 @@ class Meta: "weight", ] + @staticmethod + def resolve_tax_rate(root: models.ProductType, info, **_kwargs): + # FIXME this resolver should be dropped after we drop tax_rate from API + tax_rate = vatlayer_interface.get_tax_from_object_meta(root).code + return tax_rate or None + + @staticmethod + def resolve_tax_type(root: models.Product, _info): + tax_data = tax_interface.get_tax_from_object_meta(root) + return TaxType(tax_code=tax_data.code, description=tax_data.description) + @staticmethod @gql_optimizer.resolver_hints(prefetch_related="images") def resolve_thumbnail_url(root: models.Product, info, *, size=None): @@ -464,12 +490,12 @@ def resolve_url(root: models.Product, *_args): @staticmethod @gql_optimizer.resolver_hints( prefetch_related=("variants", "collections"), - only=["publication_date", "charge_taxes", "price", "tax_rate"], + only=["publication_date", "charge_taxes", "price", "meta"], ) def resolve_pricing(root: models.Product, info): context = info.context availability = get_product_availability( - root, context.discounts, context.taxes, context.currency + root, context.discounts, context.country, context.currency, context.taxes ) return ProductPricingInfo(**availability._asdict()) @@ -487,11 +513,14 @@ def resolve_base_price(root: models.Product, _info): @staticmethod @gql_optimizer.resolver_hints( prefetch_related=("variants", "collections"), - only=["publication_date", "charge_taxes", "price", "tax_rate"], + only=["publication_date", "charge_taxes", "price", "meta"], ) def resolve_price(root: models.Product, info): price_range = root.get_price_range(info.context.discounts) - return price_range.start.net + price = tax_interface.apply_taxes_to_product( + root, price_range.start, info.context.country, taxes=info.context.taxes + ) + return price.net @staticmethod @gql_optimizer.resolver_hints( @@ -554,6 +583,9 @@ class ProductType(CountableDjangoObjectType): prefetch_related=prefetch_products, ) tax_rate = TaxRateType(description="A type of tax rate.") + tax_type = graphene.Field( + TaxType, description="A type of tax. Assigned by enabled tax gateway" + ) variant_attributes = graphene.List( Attribute, description="Variant attributes of that product type." ) @@ -573,8 +605,20 @@ class Meta: "is_shipping_required", "name", "weight", + "tax_type", ] + @staticmethod + def resolve_tax_type(root: models.ProductType, _info): + tax_data = tax_interface.get_tax_from_object_meta(root) + return TaxType(tax_code=tax_data.code, description=tax_data.description) + + @staticmethod + def resolve_tax_rate(root: models.ProductType, info, **_kwargs): + # FIXME this resolver should be dropped after we drop tax_rate from API + tax_rate = vatlayer_interface.get_tax_from_object_meta(root).code + return tax_rate or None + @staticmethod @gql_optimizer.resolver_hints(prefetch_related="product_attributes") def resolve_product_attributes(root: models.ProductType, *_args, **_kwargs): diff --git a/saleor/graphql/schema.graphql b/saleor/graphql/schema.graphql index 0fb21c1c115..3c05b4c1902 100644 --- a/saleor/graphql/schema.graphql +++ b/saleor/graphql/schema.graphql @@ -971,6 +971,11 @@ input DateRangeInput { scalar DateTime +input DateTimeRangeInput { + gte: DateTime + lte: DateTime +} + scalar Decimal type DigitalContent implements Node { @@ -1304,6 +1309,7 @@ enum LanguageCodeEnum { HU HY ID + IS IT JA KO @@ -1500,6 +1506,7 @@ type Mutations { shopSettingsUpdate(input: ShopSettingsInput!): ShopSettingsUpdate shopFetchTaxRates: ShopFetchTaxRates shopSettingsTranslate(input: ShopSettingsTranslationInput!, languageCode: LanguageCodeEnum!): ShopSettingsTranslate + shopAddressUpdate(input: AddressInput): ShopAddressUpdate shippingPriceCreate(input: ShippingPriceInput!): ShippingPriceCreate shippingPriceDelete(id: ID!): ShippingPriceDelete shippingPriceBulkDelete(ids: [ID]!): ShippingPriceBulkDelete @@ -1623,7 +1630,7 @@ type Mutations { tokenVerify(token: String!): VerifyToken checkoutAddPromoCode(checkoutId: ID!, promoCode: String!): CheckoutAddPromoCode checkoutBillingAddressUpdate(billingAddress: AddressInput!, checkoutId: ID!): CheckoutBillingAddressUpdate - checkoutComplete(checkoutId: ID!): CheckoutComplete + checkoutComplete(checkoutId: ID!, storeSource: Boolean = false): CheckoutComplete checkoutCreate(input: CheckoutCreateInput!): CheckoutCreate checkoutCustomerAttach(checkoutId: ID!, customerId: ID!): CheckoutCustomerAttach checkoutCustomerDetach(checkoutId: ID!): CheckoutCustomerDetach @@ -2081,6 +2088,11 @@ type PaymentRefund { payment: Payment } +type PaymentSource { + gateway: String! + creditCardInfo: CreditCard +} + type PaymentVoid { errors: [Error!] payment: Payment @@ -2133,7 +2145,8 @@ type Product implements Node { isAvailable: Boolean basePrice: Money price: Money @deprecated(reason: "Has been replaced by 'basePrice'") - taxRate: TaxRateType + taxRate: TaxRateType @deprecated(reason: "taxRate is deprecated. Use taxType to obtain taxCode for given tax gateway") + taxType: TaxType attributes: [SelectedAttribute!]! purchaseCost: MoneyRange margin: Margin @@ -2184,6 +2197,7 @@ input ProductCreateInput { price: Decimal basePrice: Decimal taxRate: TaxRateType + taxCode: String seo: SeoInput weight: WeightScalar sku: String @@ -2267,6 +2281,7 @@ input ProductInput { price: Decimal basePrice: Decimal taxRate: TaxRateType + taxCode: String seo: SeoInput weight: WeightScalar sku: String @@ -2319,6 +2334,7 @@ type ProductType implements Node { weight: Weight products(before: String, after: String, first: Int, last: Int): ProductCountableConnection taxRate: TaxRateType + taxType: TaxType variantAttributes: [Attribute] productAttributes: [Attribute] } @@ -2373,6 +2389,7 @@ input ProductTypeInput { isDigital: Boolean weight: WeightScalar taxRate: TaxRateType + taxCode: String } type ProductTypeUpdate { @@ -2513,6 +2530,7 @@ type Query { sales(filter: SaleFilterInput, query: String, before: String, after: String, first: Int, last: Int): SaleCountableConnection voucher(id: ID!): Voucher vouchers(filter: VoucherFilterInput, query: String, before: String, after: String, first: Int, last: Int): VoucherCountableConnection + taxTypes: [TaxType] checkout(token: UUID): Checkout checkouts(before: String, after: String, first: Int, last: Int): CheckoutCountableConnection checkoutLine(id: ID): CheckoutLine @@ -2545,8 +2563,8 @@ type Sale implements Node { name: String! type: SaleType! value: Float! - startDate: Date! - endDate: Date + startDate: DateTime! + endDate: DateTime categories(before: String, after: String, first: Int, last: Int): CategoryCountableConnection collections(before: String, after: String, first: Int, last: Int): CollectionCountableConnection products(before: String, after: String, first: Int, last: Int): ProductCountableConnection @@ -2587,7 +2605,7 @@ type SaleDelete { input SaleFilterInput { status: [DiscountStatusEnum] saleType: DiscountValueTypeEnum - started: DateRangeInput + started: DateTimeRangeInput search: String } @@ -2598,8 +2616,8 @@ input SaleInput { products: [ID] categories: [ID] collections: [ID] - startDate: Date - endDate: Date + startDate: DateTime + endDate: DateTime } type SaleRemoveCatalogues { @@ -2781,6 +2799,12 @@ type Shop { automaticFulfillmentDigitalProducts: Boolean defaultDigitalMaxDownloads: Int defaultDigitalUrlValidDays: Int + companyAddress: Address +} + +type ShopAddressUpdate { + errors: [Error!] + shop: Shop } type ShopDomainUpdate { @@ -2915,6 +2939,11 @@ enum TaxRateType { WINE } +type TaxType { + description: String + taxCode: String +} + type TaxedMoney { currency: String! gross: Money! @@ -3018,6 +3047,7 @@ type User implements Node { permissions: [PermissionDisplay] avatar(size: Int): Image events: [CustomerEvent] + storedPaymentSources: [PaymentSource] } input UserAddressInput { @@ -3097,17 +3127,18 @@ type VerifyToken { type Voucher implements Node { id: ID! - type: VoucherType! + type: VoucherTypeEnum! name: String code: String! usageLimit: Int used: Int! - startDate: Date! - endDate: Date + startDate: DateTime! + endDate: DateTime applyOncePerOrder: Boolean! - discountValueType: VoucherDiscountValueType! + discountValueType: DiscountValueTypeEnum! discountValue: Float! minAmountSpent: Money + minCheckoutItemsQuantity: Int categories(before: String, after: String, first: Int, last: Int): CategoryCountableConnection collections(before: String, after: String, first: Int, last: Int): CollectionCountableConnection products(before: String, after: String, first: Int, last: Int): ProductCountableConnection @@ -3152,16 +3183,11 @@ enum VoucherDiscountType { SHIPPING } -enum VoucherDiscountValueType { - FIXED - PERCENTAGE -} - input VoucherFilterInput { status: [DiscountStatusEnum] timesUsed: IntRangeInput discountType: [VoucherDiscountType] - started: DateRangeInput + started: DateTimeRangeInput search: String } @@ -3169,15 +3195,18 @@ input VoucherInput { type: VoucherTypeEnum name: String code: String - startDate: Date - endDate: Date + startDate: DateTime + endDate: DateTime discountValueType: DiscountValueTypeEnum discountValue: Decimal products: [ID] collections: [ID] categories: [ID] minAmountSpent: Decimal + minCheckoutItemsQuantity: Int countries: [String] + applyOncePerOrder: Boolean + usageLimit: Int } type VoucherRemoveCatalogues { @@ -3196,20 +3225,14 @@ type VoucherTranslation implements Node { language: LanguageDisplay! } -enum VoucherType { - VALUE - PRODUCT - COLLECTION - CATEGORY - SHIPPING -} - enum VoucherTypeEnum { PRODUCT COLLECTION CATEGORY SHIPPING VALUE + ENTIRE_ORDER + SPECIFIC_PRODUCT } type VoucherUpdate { diff --git a/saleor/graphql/shop/mutations.py b/saleor/graphql/shop/mutations.py index 5ce1f135395..3cdcc6548b7 100644 --- a/saleor/graphql/shop/mutations.py +++ b/saleor/graphql/shop/mutations.py @@ -3,7 +3,10 @@ from django.core.exceptions import ValidationError from django.core.management import call_command +from ...account.models import Address from ...site import models as site_models +from ..account.i18n import I18nMixin +from ..account.types import AddressInput from ..core.enums import WeightUnitsEnum from ..core.mutations import BaseMutation from ..product.types import Collection @@ -63,6 +66,32 @@ def perform_mutation(cls, _root, info, **data): return ShopSettingsUpdate(shop=Shop()) +class ShopAddressUpdate(BaseMutation, I18nMixin): + shop = graphene.Field(Shop, description="Updated Shop") + + class Arguments: + input = AddressInput(description="Fields required to update shop address") + + class Meta: + description = "Update shop address" + permissions = ("site.manage_settings",) + + @classmethod + def perform_mutation(cls, _root, info, **data): + site_settings = info.context.site.settings + data = data.get("input") + + if not site_settings.company_address: + company_address = Address() + else: + company_address = site_settings.company_address + company_address = cls.validate_address(data, company_address) + company_address.save() + site_settings.company_address = company_address + site_settings.save() + return ShopAddressUpdate(shop=Shop()) + + class ShopDomainUpdate(BaseMutation): shop = graphene.Field(Shop, description="Updated Shop") diff --git a/saleor/graphql/shop/schema.py b/saleor/graphql/shop/schema.py index cc99d1dedb2..04f38500136 100644 --- a/saleor/graphql/shop/schema.py +++ b/saleor/graphql/shop/schema.py @@ -5,6 +5,7 @@ AuthorizationKeyAdd, AuthorizationKeyDelete, HomepageCollectionUpdate, + ShopAddressUpdate, ShopDomainUpdate, ShopFetchTaxRates, ShopSettingsUpdate, @@ -28,3 +29,4 @@ class ShopMutations(graphene.ObjectType): shop_settings_update = ShopSettingsUpdate.Field() shop_fetch_tax_rates = ShopFetchTaxRates.Field() shop_settings_translate = ShopSettingsTranslate.Field() + shop_address_update = ShopAddressUpdate.Field() diff --git a/saleor/graphql/shop/types.py b/saleor/graphql/shop/types.py index a1f4298773f..5a361b01f31 100644 --- a/saleor/graphql/shop/types.py +++ b/saleor/graphql/shop/types.py @@ -10,6 +10,7 @@ from ...menu import models as menu_models from ...product import models as product_models from ...site import models as site_models +from ..account.types import Address from ..core.enums import WeightUnitsEnum from ..core.types.common import CountryDisplay, LanguageDisplay, PermissionDisplay from ..core.utils import get_node_optimized, str_to_enum @@ -133,6 +134,9 @@ class Shop(graphene.ObjectType): default_digital_url_valid_days = graphene.Int( description=("Default number of days which digital content url will be valid") ) + company_address = graphene.Field( + Address, description="Company address", required=False + ) class Meta: description = """ @@ -259,6 +263,10 @@ def resolve_default_country(_, _info): default_country = None return default_country + @staticmethod + def resolve_company_address(_, info): + return info.context.site.settings.company_address + @staticmethod def resolve_translation(_, info, language_code): return resolve_translation(info.context.site.settings, info, language_code) diff --git a/saleor/graphql/views.py b/saleor/graphql/views.py index cb82749e46b..998c14ea2ca 100644 --- a/saleor/graphql/views.py +++ b/saleor/graphql/views.py @@ -37,9 +37,9 @@ { product(id: "%(product_id)s") { name - price { - amount - currency + description + category { + name } } } diff --git a/saleor/order/events.py b/saleor/order/events.py index 1dc74a09e1a..7d7943f6e34 100644 --- a/saleor/order/events.py +++ b/saleor/order/events.py @@ -222,16 +222,19 @@ def fulfillment_tracking_updated_event( def order_note_added_event(*, order: Order, user: UserType, message: str) -> OrderEvent: - if order.user.pk == user.pk: - account_events.customer_added_to_note_order_event( - user=user, order=order, message=message - ) + kwargs = {} + if user is not None and not user.is_anonymous: + if order.user is not None and order.user.pk == user.pk: + account_events.customer_added_to_note_order_event( + user=user, order=order, message=message + ) + kwargs["user"] = user return OrderEvent.objects.create( order=order, type=OrderEvents.NOTE_ADDED, - user=user, parameters={"message": message}, + **kwargs, ) diff --git a/saleor/order/migrations/0065_auto_20181017_1346.py b/saleor/order/migrations/0065_auto_20181017_1346.py index f668097ac88..511316384b3 100644 --- a/saleor/order/migrations/0065_auto_20181017_1346.py +++ b/saleor/order/migrations/0065_auto_20181017_1346.py @@ -1,10 +1,12 @@ # Generated by Django 2.1.2 on 2018-10-17 18:46 +from decimal import Decimal + +import django_prices.models from django.conf import settings from django.db import migrations, models -import django_prices.models + import saleor.core -from decimal import Decimal class Migration(migrations.Migration): @@ -21,7 +23,7 @@ class Migration(migrations.Migration): field=django_prices.models.MoneyField( currency=settings.DEFAULT_CURRENCY, decimal_places=2, - default=saleor.core.utils.taxes.zero_money, + default=saleor.core.taxes.zero_money, max_digits=12, ), ), @@ -31,7 +33,7 @@ class Migration(migrations.Migration): field=django_prices.models.MoneyField( currency=settings.DEFAULT_CURRENCY, decimal_places=2, - default=saleor.core.utils.taxes.zero_money, + default=saleor.core.taxes.zero_money, max_digits=12, ), ), @@ -41,7 +43,7 @@ class Migration(migrations.Migration): field=django_prices.models.MoneyField( currency=settings.DEFAULT_CURRENCY, decimal_places=2, - default=saleor.core.utils.taxes.zero_money, + default=saleor.core.taxes.zero_money, max_digits=12, ), ), diff --git a/saleor/order/models.py b/saleor/order/models.py index 3094df0753b..6c6df861b9c 100644 --- a/saleor/order/models.py +++ b/saleor/order/models.py @@ -16,8 +16,8 @@ from prices import Money from ..account.models import Address +from ..core.taxes import zero_money, zero_taxed_money from ..core.utils.json_serializer import CustomJsonEncoder -from ..core.utils.taxes import ZERO_TAXED_MONEY, zero_money from ..core.weight import WeightUnits, zero_weight from ..discount.models import Voucher from ..giftcard.models import GiftCard @@ -179,7 +179,7 @@ def _total_paid(self): ] ) total_captured = [payment.get_captured_amount() for payment in payments] - total_paid = sum(total_captured, ZERO_TAXED_MONEY) + total_paid = sum(total_captured, zero_taxed_money()) return total_paid def _index_billing_phone(self): @@ -233,7 +233,7 @@ def is_shipping_required(self): def get_subtotal(self): subtotal_iterator = (line.get_total() for line in self) - return sum(subtotal_iterator, ZERO_TAXED_MONEY) + return sum(subtotal_iterator, zero_taxed_money()) def get_total_quantity(self): return sum([line.quantity for line in self]) diff --git a/saleor/order/utils.py b/saleor/order/utils.py index 55a3c1b57b3..e031e9db711 100644 --- a/saleor/order/utils.py +++ b/saleor/order/utils.py @@ -8,14 +8,14 @@ from ..account.utils import store_user_address from ..checkout import AddressType -from ..core.utils.taxes import ZERO_MONEY, get_tax_rate_by_name, get_taxes_for_address +from ..core.taxes import zero_money +from ..core.taxes.interface import calculate_order_line_unit, calculate_order_shipping from ..core.weight import zero_weight from ..dashboard.order.utils import get_voucher_discount_for_order from ..discount.models import NotApplicable from ..order import FulfillmentStatus, OrderStatus, emails from ..order.models import Fulfillment, FulfillmentLine, Order, OrderLine from ..payment import ChargeStatus -from ..payment.utils import gateway_refund, gateway_void from ..product.utils import ( allocate_stock, deallocate_stock, @@ -111,7 +111,7 @@ def decorator(*args, **kwargs): try: discount_amount = get_voucher_discount_for_order(order) except NotApplicable: - discount_amount = ZERO_MONEY + discount_amount = zero_money() order.discount_amount = discount_amount return func(*args, **kwargs) @@ -153,16 +153,22 @@ def recalculate_order_weight(order): def update_order_prices(order, discounts): """Update prices in order with given discounts and proper taxes.""" - taxes = get_taxes_for_address(order.shipping_address) - for line in order: if line.variant: - line.unit_price = line.variant.get_price(discounts, taxes) - line.tax_rate = get_tax_rate_by_name(line.variant.product.tax_rate, taxes) - line.save() + unit_price = line.variant.get_price(discounts) + line.unit_price_net = unit_price + line.unit_price_gross = unit_price + line.save(update_fields=["unit_price_net", "unit_price_gross"]) + + price = calculate_order_line_unit(line) + if price != line.unit_price: + line.unit_price = price + if price.tax and price.net: + line.tax_rate = price.tax / price.net + line.save() if order.shipping_method: - order.shipping_price = order.shipping_method.get_total(taxes) + order.shipping_price = calculate_order_shipping(order) order.save() recalculate_order(order) @@ -191,6 +197,8 @@ def cancel_order(user, order, restock): charge_status=ChargeStatus.FULLY_REFUNDED ) + from ..payment.utils import gateway_refund, gateway_void + for payment in payments: if payment.can_refund(): gateway_refund(payment) @@ -252,7 +260,6 @@ def add_variant_to_order( variant, quantity, discounts=None, - taxes=None, allow_overselling=False, track_inventory=True, ): @@ -271,6 +278,7 @@ def add_variant_to_order( line.quantity += quantity line.save(update_fields=["quantity"]) except OrderLine.DoesNotExist: + unit_price = variant.get_price(discounts) product_name = variant.display_product() translated_product_name = variant.display_product(translated=True) if translated_product_name == product_name: @@ -281,11 +289,17 @@ def add_variant_to_order( product_sku=variant.sku, is_shipping_required=variant.is_shipping_required(), quantity=quantity, + unit_price_net=unit_price, + unit_price_gross=unit_price, variant=variant, - unit_price=variant.get_price(discounts, taxes), - tax_rate=get_tax_rate_by_name(variant.product.tax_rate, taxes), ) + unit_price = calculate_order_line_unit(line) + line.unit_price_net = unit_price.net + line.unit_price_gross = unit_price.gross + line.tax_rate = unit_price.tax / unit_price.net + line.save(update_fields=["unit_price_net", "unit_price_gross", "tax_rate"]) + if variant.track_inventory and track_inventory: allocate_stock(variant, quantity) return line @@ -296,11 +310,11 @@ def add_gift_card_to_order(order, gift_card, total_price_left): Return a total price left after applying the gift cards. """ - if total_price_left > ZERO_MONEY: + if total_price_left > zero_money(total_price_left.currency): order.gift_cards.add(gift_card) if total_price_left < gift_card.current_balance: gift_card.current_balance = gift_card.current_balance - total_price_left - total_price_left = ZERO_MONEY + total_price_left = zero_money(total_price_left.currency) else: total_price_left = total_price_left - gift_card.current_balance gift_card.current_balance = 0 diff --git a/saleor/payment/__init__.py b/saleor/payment/__init__.py index b761f50fc1e..15fb6fbcc0f 100644 --- a/saleor/payment/__init__.py +++ b/saleor/payment/__init__.py @@ -126,9 +126,11 @@ def get_payment_gateway(gateway_name): gateway_config = settings.PAYMENT_GATEWAYS[gateway_name]["config"] config = GatewayConfig( + gateway_name=gateway_name, auto_capture=gateway_config["auto_capture"], template_path=gateway_config["template_path"], connection_params=gateway_config["connection_params"], + store_customer=gateway_config["store_card"], ) return gateway_module, config diff --git a/saleor/payment/gateways/braintree/__init__.py b/saleor/payment/gateways/braintree/__init__.py index ca3565a016a..baf59d06ec4 100644 --- a/saleor/payment/gateways/braintree/__init__.py +++ b/saleor/payment/gateways/braintree/__init__.py @@ -6,7 +6,14 @@ from django.utils.translation import pgettext_lazy from ... import TransactionKind -from ...interface import GatewayConfig, GatewayResponse, PaymentData +from ...interface import ( + CreditCardInfo, + CustomerSource, + GatewayConfig, + GatewayResponse, + PaymentData, + TokenConfig, +) from .errors import DEFAULT_ERROR_MESSAGE, BraintreeException from .forms import BraintreePaymentForm @@ -32,6 +39,7 @@ def get_customer_data(payment_information: PaymentData) -> Dict: + """Provides customer info, use only for new customer creation""" billing = payment_information.billing # DEMO: Anonymized addresses fail when sent to Braintree, so we're faking # the address here. @@ -76,16 +84,16 @@ def extract_gateway_response(braintree_result) -> Dict: {"code": error.code, "message": error.message} for error in braintree_result.errors.deep_errors ] - bt_transaction = braintree_result.transaction + if not bt_transaction: return {"errors": errors} - return { "transaction_id": getattr(bt_transaction, "id", ""), "currency": bt_transaction.currency_iso_code, "amount": bt_transaction.amount, # Decimal type "credit_card": bt_transaction.credit_card, + "customer_id": bt_transaction.customer_details.id, "errors": errors, } @@ -111,29 +119,30 @@ def get_braintree_gateway(sandbox_mode, merchant_id, public_key, private_key): return gateway -def get_client_token(config: GatewayConfig) -> str: +def get_client_token(config: GatewayConfig, token_config: TokenConfig = None) -> str: gateway = get_braintree_gateway(**config.connection_params) - client_token = gateway.client_token.generate() - return client_token + if not token_config: + return gateway.client_token.generate() + parameters = create_token_params(config, token_config) + return gateway.client_token.generate(parameters) + + +def create_token_params(config: GatewayConfig, token_config: TokenConfig) -> dict: + params = {} + customer_id = token_config.customer_id + if customer_id and config.store_customer: + params["customer_id"] = customer_id + return params def authorize( payment_information: PaymentData, config: GatewayConfig ) -> GatewayResponse: - gateway = get_braintree_gateway(**config.connection_params) - try: - result = gateway.transaction.sale( - { - "amount": str(payment_information.amount), - "payment_method_nonce": payment_information.token, - "options": { - "submit_for_settlement": config.auto_capture, - "three_d_secure": {"required": THREE_D_SECURE_REQUIRED}, - }, - **get_customer_data(payment_information), - } - ) + if not payment_information.customer_id: + result = transaction_for_new_customer(payment_information, config) + else: + result = transaction_for_existing_customer(payment_information, config) except braintree_sdk.exceptions.NotFoundError: raise BraintreeException(DEFAULT_ERROR_MESSAGE) @@ -145,6 +154,7 @@ def authorize( kind=kind, amount=gateway_response.get("amount", payment_information.amount), currency=gateway_response.get("currency", payment_information.currency), + customer_id=gateway_response.get("customer_id"), transaction_id=gateway_response.get( "transaction_id", payment_information.token ), @@ -153,6 +163,38 @@ def authorize( ) +def transaction_for_new_customer( + payment_information: PaymentData, config: GatewayConfig +): + gateway = get_braintree_gateway(**config.connection_params) + return gateway.transaction.sale( + { + "amount": str(payment_information.amount), + "payment_method_nonce": payment_information.token, + "options": { + "submit_for_settlement": config.auto_capture, + "store_in_vault_on_success": payment_information.reuse_source, + "three_d_secure": {"required": THREE_D_SECURE_REQUIRED}, + }, + **get_customer_data(payment_information), + } + ) + + +def transaction_for_existing_customer( + payment_information: PaymentData, config: GatewayConfig +): + gateway = get_braintree_gateway(**config.connection_params) + return gateway.transaction.sale( + { + "amount": str(payment_information.amount), + "customer_id": payment_information.customer_id, + "options": {"submit_for_settlement": config.auto_capture}, + **get_customer_data(payment_information), + } + ) + + def capture(payment_information: PaymentData, config: GatewayConfig) -> GatewayResponse: gateway = get_braintree_gateway(**config.connection_params) @@ -236,3 +278,29 @@ def process_payment( ) -> GatewayResponse: auth_resp = authorize(payment_information, config) return auth_resp + + +def list_client_sources( + config: GatewayConfig, customer_id: str +) -> List[CustomerSource]: + gateway = get_braintree_gateway(**config.connection_params) + customer = gateway.customer.find(customer_id) + if not customer: + return [] + return [ + extract_credit_card_data(card, "braintree") for card in customer.credit_cards + ] + + +def extract_credit_card_data(card, gateway_name): + credit_card = CreditCardInfo( + exp_year=int(card.expiration_year), + exp_month=int(card.expiration_month), + last_4=card.last_4, + name_on_card=card.cardholder_name, + ) + return CustomerSource( + id=card.unique_number_identifier, + gateway=gateway_name, + credit_card_info=credit_card, + ) diff --git a/saleor/payment/interface.py b/saleor/payment/interface.py index 807af6b3f51..bc910b8b520 100644 --- a/saleor/payment/interface.py +++ b/saleor/payment/interface.py @@ -15,6 +15,7 @@ class GatewayResponse: currency: str transaction_id: str error: Optional[str] + customer_id: Optional[str] = None raw_response: Optional[Dict[str, str]] = None @@ -39,14 +40,23 @@ class PaymentData: representation of data. It is required to communicate between Saleor and given payment gateway.""" - token: str amount: Decimal currency: str billing: Optional[AddressData] shipping: Optional[AddressData] - order_id: Optional[int] + order_id: int customer_ip_address: str customer_email: str + token: Optional[str] = None + customer_id: Optional[str] = None + reuse_source: bool = False + + +@dataclass +class TokenConfig: + """Dataclass for payment gateway token fetching customization""" + + customer_id: Optional[str] = None @dataclass @@ -55,8 +65,29 @@ class GatewayConfig: representation of config data. It is required to communicate between Saleor and given payment gateway.""" + gateway_name: str auto_capture: bool template_path: str # Each gateway has different connection data so we are not able to create # a unified structure connection_params: Dict[str, Any] + store_customer: bool = False + + +@dataclass +class CreditCardInfo: + """Uniform way to represent Credit Card information""" + + last_4: str + exp_year: int + exp_month: int + name_on_card: Optional[str] = None + + +@dataclass +class CustomerSource: + """Dataclass for storing information about stored payment sources in gateways""" + + id: str + gateway: str + credit_card_info: CreditCardInfo = None diff --git a/saleor/payment/migrations/0002_transfer_payment_to_payment_method.py b/saleor/payment/migrations/0002_transfer_payment_to_payment_method.py index 66efe93cba8..1bacc849258 100644 --- a/saleor/payment/migrations/0002_transfer_payment_to_payment_method.py +++ b/saleor/payment/migrations/0002_transfer_payment_to_payment_method.py @@ -1,10 +1,9 @@ # Generated by Django 2.1.2 on 2018-10-17 19:42 +from django.conf import settings from django.db import migrations from prices import Money -from django.conf import settings from .. import ChargeStatus, TransactionKind -from ..models import Transaction class PaymentStatus: @@ -22,9 +21,13 @@ def is_fully_refunded(payment): return total == payment.order.total_gross +def get_charge_amount(payment): + return payment.total - payment.captured_amount + + def get_charge_status(payment): if payment.status == PaymentStatus.CONFIRMED: - if payment.get_charge_amount() <= 0: + if get_charge_amount(payment) <= 0: return ChargeStatus.FULLY_CHARGED return ChargeStatus.PARTIALLY_CHARGED if payment.status == PaymentStatus.REFUNDED: diff --git a/saleor/payment/migrations/0012_transaction_customer_id.py b/saleor/payment/migrations/0012_transaction_customer_id.py new file mode 100644 index 00000000000..7861eead6f9 --- /dev/null +++ b/saleor/payment/migrations/0012_transaction_customer_id.py @@ -0,0 +1,16 @@ +# Generated by Django 2.2.2 on 2019-06-28 12:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [("payment", "0011_auto_20190516_0901")] + + operations = [ + migrations.AddField( + model_name="transaction", + name="customer_id", + field=models.CharField(max_length=256, null=True), + ) + ] diff --git a/saleor/payment/models.py b/saleor/payment/models.py index 1d6f96af63c..840ac966603 100644 --- a/saleor/payment/models.py +++ b/saleor/payment/models.py @@ -9,7 +9,7 @@ from prices import Money from ..checkout.models import Checkout -from ..core.utils.taxes import zero_money +from ..core.taxes import zero_money from ..order.models import Order from . import ( ChargeStatus, @@ -210,6 +210,7 @@ class Transaction(models.Model): max_length=256, null=True, ) + customer_id = models.CharField(max_length=256, null=True) gateway_response = JSONField(encoder=DjangoJSONEncoder) class Meta: diff --git a/saleor/payment/utils.py b/saleor/payment/utils.py index 0d247089e68..d90588a8afa 100644 --- a/saleor/payment/utils.py +++ b/saleor/payment/utils.py @@ -1,8 +1,9 @@ import json import logging + from decimal import Decimal from functools import wraps -from typing import Dict +from typing import Dict, List from django.conf import settings from django.core.serializers.json import DjangoJSONEncoder @@ -24,7 +25,8 @@ TransactionKind, get_payment_gateway, ) -from .interface import AddressData, GatewayResponse, PaymentData + +from .interface import AddressData, GatewayResponse, PaymentData, TokenConfig from .models import Payment, Transaction logger = logging.getLogger(__name__) @@ -39,6 +41,11 @@ "currency", } ALLOWED_GATEWAY_KINDS = {choices[0] for choices in TransactionKind.CHOICES} +GATEWAYS_META_LABEL = "gateways" + + +def list_enabled_gateways() -> List[str]: + return list(settings.CHECKOUT_PAYMENT_GATEWAYS.keys()) def get_gateway_operation_func(gateway, operation_type): @@ -61,6 +68,8 @@ def create_payment_information( amount: Decimal = None, billing_address: AddressData = None, shipping_address: AddressData = None, + customer_id: str = None, + store_source: bool = False, ) -> PaymentData: """Extracts order information along with payment details. @@ -81,11 +90,13 @@ def create_payment_information( token=payment_token, amount=amount or payment.total, currency=payment.currency, - billing=billing, - shipping=shipping, + billing=billing or billing_address, + shipping=shipping or shipping_address, order_id=order_id, customer_ip_address=payment.customer_ip_address, + customer_id=customer_id, customer_email=payment.billing_email, + reuse_source=store_source, ) @@ -227,17 +238,20 @@ def create_transaction( amount=gateway_response.amount, currency=gateway_response.currency, error=gateway_response.error, + customer_id=gateway_response.customer_id, gateway_response=gateway_response.raw_response or {}, ) return txn -def gateway_get_client_token(gateway_name: str): +def gateway_get_client_token(gateway_name: str, token_config: TokenConfig = None): """Gets client token, that will be used as a customer's identificator for client-side tokenization of the chosen payment method. """ + if not token_config: + token_config = TokenConfig() gateway, gateway_config = get_payment_gateway(gateway_name) - return gateway.get_client_token(config=gateway_config) + return gateway.get_client_token(config=gateway_config, token_config=token_config) def clean_capture(payment: Payment, amount: Decimal): @@ -275,9 +289,11 @@ def call_gateway(operation_type, payment, payment_token, **extra_params): gateway, gateway_config = get_payment_gateway(payment.gateway) gateway_response = None error_msg = None - + store_source = ( + extra_params.pop("store_source", False) and gateway_config.store_customer + ) payment_information = create_payment_information( - payment, payment_token, **extra_params + payment, payment_token, store_source=store_source, **extra_params ) try: @@ -495,3 +511,30 @@ def gateway_refund(payment, amount: Decimal = None) -> Transaction: _gateway_postprocess(transaction, payment) return transaction + + +def fetch_customer_id(user, gateway): + """Retrieves users customer_id stored for desired gateway""" + key = prepare_label_name(gateway) + gateway_config = user.get_private_meta(label=GATEWAYS_META_LABEL).get(key, {}) + return gateway_config.get("customer_id", None) + + +def store_customer_id(user, gateway, customer_id): + """Stores customer_id in users private meta for desired gateway""" + user.store_private_meta( + label=GATEWAYS_META_LABEL, + key=prepare_label_name(gateway), + value={"customer_id": customer_id}, + ) + user.save(update_fields=["private_meta"]) + + +def prepare_label_name(s): + return s.strip().upper() + + +def retrieve_customer_sources(gateway_name, customer_id): + """ Fetches all customer payment sources stored in gateway""" + gateway, config = get_payment_gateway(gateway_name) + return gateway.list_client_sources(config, customer_id) diff --git a/saleor/product/forms.py b/saleor/product/forms.py index 1ddb7b618c3..3f13219ea67 100644 --- a/saleor/product/forms.py +++ b/saleor/product/forms.py @@ -6,27 +6,32 @@ from django_prices.templatetags.prices_i18n import amount from ..checkout.forms import AddToCheckoutForm -from ..core.utils.taxes import display_gross_prices +from ..core.taxes import display_gross_prices +from ..core.taxes.interface import apply_taxes_to_product class VariantChoiceField(forms.ModelChoiceField): discounts = None - taxes = None + country = None display_gross = True + taxes = None def label_from_instance(self, obj): variant_label = smart_text(obj) - price = obj.get_price(self.discounts, self.taxes) + price = apply_taxes_to_product( + obj.product, obj.get_price(self.discounts), self.country, taxes=self.taxes + ) price = price.gross if self.display_gross else price.net label = pgettext_lazy( "Variant choice field label", "%(variant_label)s - %(price)s" ) % {"variant_label": variant_label, "price": amount(price)} return label - def update_field_data(self, variants, discounts, taxes): + def update_field_data(self, variants, discounts, country, taxes=None): """Initialize variant picker metadata.""" self.queryset = variants self.discounts = discounts + self.country = country self.taxes = taxes self.empty_label = None self.display_gross = display_gross_prices() @@ -46,8 +51,10 @@ class ProductForm(AddToCheckoutForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) variant_field = self.fields["variant"] + shipping_address = self.checkout.shipping_address + country = shipping_address.country if shipping_address else self.country variant_field.update_field_data( - self.product.variants.all(), self.discounts, self.taxes + self.product.variants.all(), self.discounts, country, self.taxes ) def get_variant(self, cleaned_data): diff --git a/saleor/product/migrations/0079_default_tax_rate_instead_of_empty_field.py b/saleor/product/migrations/0079_default_tax_rate_instead_of_empty_field.py index 31abb6fc5da..d1cd6116d70 100644 --- a/saleor/product/migrations/0079_default_tax_rate_instead_of_empty_field.py +++ b/saleor/product/migrations/0079_default_tax_rate_instead_of_empty_field.py @@ -2,7 +2,7 @@ from django.db import migrations, models -from ...core.utils.taxes import DEFAULT_TAX_RATE_NAME +from ...core.taxes.vatlayer import DEFAULT_TAX_RATE_NAME def add_default_tax_rate_instead_of_empty_field(apps, schema_editor): diff --git a/saleor/product/migrations/0094_auto_20190618_0430.py b/saleor/product/migrations/0094_auto_20190618_0430.py new file mode 100644 index 00000000000..d4415335010 --- /dev/null +++ b/saleor/product/migrations/0094_auto_20190618_0430.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.1 on 2019-06-18 09:30 + +import django.contrib.postgres.fields.jsonb +from django.db import migrations + +import saleor.core.utils.json_serializer + + +class Migration(migrations.Migration): + + dependencies = [("product", "0093_auto_20190521_0124")] + + operations = [ + migrations.AddField( + model_name="product", + name="meta", + field=django.contrib.postgres.fields.jsonb.JSONField( + blank=True, + default=dict, + encoder=saleor.core.utils.json_serializer.CustomJsonEncoder, + null=True, + ), + ), + migrations.AddField( + model_name="producttype", + name="meta", + field=django.contrib.postgres.fields.jsonb.JSONField( + blank=True, + default=dict, + encoder=saleor.core.utils.json_serializer.CustomJsonEncoder, + null=True, + ), + ), + ] diff --git a/saleor/product/migrations/0095_auto_20190618_0842.py b/saleor/product/migrations/0095_auto_20190618_0842.py new file mode 100644 index 00000000000..8776b011ae8 --- /dev/null +++ b/saleor/product/migrations/0095_auto_20190618_0842.py @@ -0,0 +1,42 @@ +from django.db import migrations + + +def move_tax_rate_to_meta(apps, schema_editor): + ProductType = apps.get_model("product", "ProductType") + Product = apps.get_model("product", "Product") + product_types = ProductType.objects.filter(tax_rate__isnull=False).exclude( + tax_rate="" + ) + products = Product.objects.filter(tax_rate__isnull=False).exclude(tax_rate="") + product_types_list = [] + for product_type in product_types: + if "taxes" not in product_type.meta: + product_type.meta["taxes"] = {} + product_type.meta["taxes"]["vatlayer"] = { + "code": product_type.tax_rate, + "description": product_type.tax_rate, + } + product_types_list.append(product_type) + ProductType.objects.bulk_update(product_types_list, ["meta"]) + + product_list = [] + for product in products: + if "taxes" not in product.meta: + product.meta["taxes"] = {} + product.meta["taxes"]["vatlayer"] = { + "code": product.tax_rate, + "description": product.tax_rate, + } + product_list.append(product) + Product.objects.bulk_update(product_list, ["meta"]) + + +class Migration(migrations.Migration): + + dependencies = [("product", "0094_auto_20190618_0430")] + + operations = [ + migrations.RunPython(move_tax_rate_to_meta), + migrations.RemoveField(model_name="product", name="tax_rate"), + migrations.RemoveField(model_name="producttype", name="tax_rate"), + ] diff --git a/saleor/product/models.py b/saleor/product/models.py index e3037005fa1..4b55f9abf41 100644 --- a/saleor/product/models.py +++ b/saleor/product/models.py @@ -1,4 +1,5 @@ from decimal import Decimal +from typing import Iterable from uuid import uuid4 from django.conf import settings @@ -16,18 +17,17 @@ from measurement.measures import Weight from mptt.managers import TreeManager from mptt.models import MPTTModel -from prices import TaxedMoneyRange +from prices import MoneyRange from text_unidecode import unidecode from versatileimagefield.fields import PPOIField, VersatileImageField -from saleor.core.utils import build_absolute_uri - -from ..core import TaxRateType from ..core.exceptions import InsufficientStock from ..core.models import PublishableModel, PublishedQuerySet, SortableModel -from ..core.utils.taxes import apply_tax_to_price +from ..core.utils import build_absolute_uri +from ..core.utils.json_serializer import CustomJsonEncoder from ..core.utils.translations import TranslationProxy from ..core.weight import WeightUnits, zero_weight +from ..discount import DiscountInfo from ..discount.utils import calculate_discounted_price from ..seo.models import SeoModel, SeoModelTranslation @@ -88,10 +88,10 @@ class ProductType(models.Model): has_variants = models.BooleanField(default=True) is_shipping_required = models.BooleanField(default=True) is_digital = models.BooleanField(default=False) - tax_rate = models.CharField(max_length=128, choices=TaxRateType.CHOICES) weight = MeasurementField( measurement=Weight, unit_choices=WeightUnits.CHOICES, default=zero_weight ) + meta = JSONField(blank=True, null=True, default=dict, encoder=CustomJsonEncoder) class Meta: app_label = "product" @@ -136,10 +136,10 @@ class Product(SeoModel, PublishableModel): attributes = HStoreField(default=dict, blank=True) updated_at = models.DateTimeField(auto_now=True, null=True) charge_taxes = models.BooleanField(default=True) - tax_rate = models.CharField(max_length=128, blank=True, choices=TaxRateType.CHOICES) weight = MeasurementField( measurement=Weight, unit_choices=WeightUnits.CHOICES, blank=True, null=True ) + meta = JSONField(blank=True, null=True, default=dict, encoder=CustomJsonEncoder) objects = ProductsQueryset.as_manager() translated = TranslationProxy() @@ -190,18 +190,12 @@ def get_first_image(self): images = list(self.images.all()) return images[0] if images else None - def get_price_range(self, discounts=None, taxes=None): + def get_price_range(self, discounts: Iterable[DiscountInfo] = None): if self.variants.all(): - prices = [ - variant.get_price(discounts=discounts, taxes=taxes) for variant in self - ] - return TaxedMoneyRange(min(prices), max(prices)) + prices = [variant.get_price(discounts) for variant in self] + return MoneyRange(min(prices), max(prices)) price = calculate_discounted_price(self, self.price, discounts) - if not self.charge_taxes: - taxes = None - tax_rate = self.tax_rate or self.product_type.tax_rate - price = apply_tax_to_price(taxes, tax_rate, price) - return TaxedMoneyRange(start=price, stop=price) + return MoneyRange(start=price, stop=price) class ProductTranslation(SeoModelTranslation): @@ -296,12 +290,8 @@ def base_price(self): else self.product.price ) - def get_price(self, discounts=None, taxes=None): - price = calculate_discounted_price(self.product, self.base_price, discounts) - if not self.product.charge_taxes: - taxes = None - tax_rate = self.product.tax_rate or self.product.product_type.tax_rate - return apply_tax_to_price(taxes, tax_rate, price) + def get_price(self, discounts: Iterable[DiscountInfo] = None): + return calculate_discounted_price(self.product, self.base_price, discounts) def get_weight(self): return self.weight or self.product.weight or self.product.product_type.weight @@ -340,7 +330,7 @@ def get_first_image(self): return images[0] if images else self.product.get_first_image() def get_ajax_label(self, discounts=None): - price = self.get_price(discounts).gross + price = self.get_price(discounts) return "%s, %s, %s" % ( self.sku, self.display_product(), diff --git a/saleor/product/utils/__init__.py b/saleor/product/utils/__init__.py index 2b18a275396..44e302ad72c 100644 --- a/saleor/product/utils/__init__.py +++ b/saleor/product/utils/__init__.py @@ -7,9 +7,9 @@ get_checkout_from_request, get_or_create_checkout_from_request, ) +from ...core.taxes import TaxedMoney, zero_taxed_money from ...core.utils import get_paginator_items from ...core.utils.filters import get_now_sorted_by -from ...core.utils.taxes import ZERO_TAXED_MONEY, TaxedMoney from ..forms import ProductForm from .availability import products_with_availability @@ -70,6 +70,7 @@ def handle_checkout_form(request, product, create_checkout=False): product=product, data=request.POST or None, discounts=request.discounts, + country=request.country, taxes=request.taxes, ) return form, checkout @@ -136,7 +137,11 @@ def get_product_list_context(request, filter_set): ) products_and_availability = list( products_with_availability( - products_paginated, request.discounts, request.taxes, request.currency + products_paginated, + request.discounts, + request.country, + request.currency, + request.taxes, ) ) now_sorted_by = get_now_sorted_by(filter_set) @@ -163,7 +168,7 @@ def collections_visible_to_user(user): def calculate_revenue_for_variant(variant, start_date): """Calculate total revenue generated by a product variant.""" - revenue = ZERO_TAXED_MONEY + revenue = zero_taxed_money() for order_line in variant.order_lines.all(): if order_line.order.created >= start_date: net = order_line.unit_price_net * order_line.quantity diff --git a/saleor/product/utils/availability.py b/saleor/product/utils/availability.py index b2607e37846..a62c9b45a16 100644 --- a/saleor/product/utils/availability.py +++ b/saleor/product/utils/availability.py @@ -1,13 +1,15 @@ from collections import namedtuple from decimal import Decimal -from typing import Union +from typing import Iterable, Union from prices import TaxedMoneyRange from saleor.graphql.core.types import MoneyRange from saleor.product.models import Product, ProductVariant +from ...core.taxes.interface import apply_taxes_to_product from ...core.utils import to_local_currency +from ...discount import DiscountInfo from .. import ProductAvailabilityStatus, VariantAvailabilityStatus ProductAvailability = namedtuple( @@ -37,11 +39,15 @@ ) -def products_with_availability(products, discounts, taxes, local_currency): +def products_with_availability( + products, discounts, country, local_currency, taxes=None +): for product in products: yield ( product, - get_product_availability(product, discounts, taxes, local_currency), + get_product_availability( + product, discounts, country, local_currency, taxes=taxes + ), ) @@ -92,7 +98,7 @@ def _get_total_discount( def _get_product_price_range( discounted: Union[MoneyRange, TaxedMoneyRange], undiscounted: Union[MoneyRange, TaxedMoneyRange], - local_currency=None, + local_currency: str = None, ): price_range_local = None discount_local_currency = None @@ -107,11 +113,31 @@ def _get_product_price_range( def get_product_availability( - product: Product, discounts=None, taxes=None, local_currency=None + product: Product, + discounts: Iterable[DiscountInfo] = None, + country=None, + local_currency=None, + taxes=None, ) -> ProductAvailability: - discounted = product.get_price_range(discounts=discounts, taxes=taxes) - undiscounted = product.get_price_range(taxes=taxes) + discounted_net_range = product.get_price_range(discounts=discounts) + undiscounted_net_range = product.get_price_range() + discounted = TaxedMoneyRange( + start=apply_taxes_to_product( + product, discounted_net_range.start, country, taxes=taxes + ), + stop=apply_taxes_to_product( + product, discounted_net_range.stop, country, taxes=taxes + ), + ) + undiscounted = TaxedMoneyRange( + start=apply_taxes_to_product( + product, undiscounted_net_range.start, country, taxes=taxes + ), + stop=apply_taxes_to_product( + product, undiscounted_net_range.stop, country, taxes=taxes + ), + ) discount = _get_total_discount(undiscounted, discounted) price_range_local, discount_local_currency = _get_product_price_range( @@ -132,11 +158,19 @@ def get_product_availability( def get_variant_availability( - variant: ProductVariant, discounts=None, taxes=None, local_currency=None + variant: ProductVariant, + discounts: Iterable[DiscountInfo] = None, + country=None, + local_currency=None, + taxes=None, ) -> VariantAvailability: - discounted = variant.get_price(discounts=discounts, taxes=taxes) - undiscounted = variant.get_price(taxes=taxes) + discounted = apply_taxes_to_product( + variant.product, variant.get_price(discounts=discounts), country, taxes=taxes + ) + undiscounted = apply_taxes_to_product( + variant.product, variant.get_price(), country, taxes=taxes + ) discount = _get_total_discount(undiscounted, discounted) diff --git a/saleor/product/utils/costs.py b/saleor/product/utils/costs.py index d01a49f0af9..c25b6b88d73 100644 --- a/saleor/product/utils/costs.py +++ b/saleor/product/utils/costs.py @@ -1,10 +1,11 @@ from prices import MoneyRange -from ...core.utils.taxes import ZERO_MONEY +from ...core.taxes import zero_money def get_product_costs_data(product): - purchase_costs_range = MoneyRange(start=ZERO_MONEY, stop=ZERO_MONEY) + + purchase_costs_range = MoneyRange(start=zero_money(), stop=zero_money()) margin = (0, 0) if not product.variants.exists(): @@ -49,7 +50,7 @@ def get_variant_costs_data(variant): def get_cost_price(variant): if not variant.cost_price: - return ZERO_MONEY + return zero_money() return variant.cost_price diff --git a/saleor/product/utils/variants_picker.py b/saleor/product/utils/variants_picker.py index 97d69c67e91..c89b979a703 100644 --- a/saleor/product/utils/variants_picker.py +++ b/saleor/product/utils/variants_picker.py @@ -1,15 +1,26 @@ from collections import defaultdict +from typing import Iterable from django_prices.templatetags import prices_i18n +from ...core.taxes import display_gross_prices +from ...core.taxes.interface import apply_taxes_to_product, show_taxes_on_storefront from ...core.utils import to_local_currency -from ...core.utils.taxes import display_gross_prices, get_tax_rate_by_name +from ...discount import DiscountInfo from ...seo.schema.product import variant_json_ld from .availability import get_product_availability -def get_variant_picker_data(product, discounts=None, taxes=None, local_currency=None): - availability = get_product_availability(product, discounts, taxes, local_currency) +def get_variant_picker_data( + product, + discounts: Iterable[DiscountInfo] = None, + taxes=None, + local_currency=None, + country=None, +): + availability = get_product_availability( + product, discounts, country, local_currency, taxes + ) variants = product.variants.all() data = {"variantAttributes": [], "variants": []} @@ -19,14 +30,18 @@ def get_variant_picker_data(product, discounts=None, taxes=None, local_currency= filter_available_variants = defaultdict(list) for variant in variants: - price = variant.get_price(discounts, taxes) - price_undiscounted = variant.get_price(taxes=taxes) + price = apply_taxes_to_product( + variant.product, variant.get_price(discounts), country, taxes=taxes + ) + price_undiscounted = apply_taxes_to_product( + variant.product, variant.get_price(), country, taxes=taxes + ) if local_currency: price_local_currency = to_local_currency(price, local_currency) else: price_local_currency = None in_stock = variant.is_in_stock() - schema_data = variant_json_ld(price, variant, in_stock) + schema_data = variant_json_ld(price.net, variant, in_stock) variant_data = { "id": variant.id, "availability": in_stock, @@ -63,9 +78,14 @@ def get_variant_picker_data(product, discounts=None, taxes=None, local_currency= } ) + product_price = apply_taxes_to_product(product, product.price, country, taxes=taxes) + tax_rates = 0 + if product_price.tax and product_price.net: + tax_rates = int((product_price.tax / product_price.net) * 100) + data["availability"] = { "discount": price_as_dict(availability.discount), - "taxRate": get_tax_rate_by_name(product.tax_rate, taxes), + "taxRate": tax_rates, "priceRange": price_range_as_dict(availability.price_range), "priceRangeUndiscounted": price_range_as_dict( availability.price_range_undiscounted @@ -76,7 +96,7 @@ def get_variant_picker_data(product, discounts=None, taxes=None, local_currency= } data["priceDisplay"] = { "displayGross": display_gross_prices(), - "handleTaxes": bool(taxes), + "handleTaxes": show_taxes_on_storefront(), } return data diff --git a/saleor/product/views.py b/saleor/product/views.py index 78f4ecd1aa8..456d242fdeb 100644 --- a/saleor/product/views.py +++ b/saleor/product/views.py @@ -78,12 +78,12 @@ def product_details(request, slug, product_id, form=None): availability = get_product_availability( product, discounts=request.discounts, - taxes=request.taxes, + country=request.country, local_currency=request.currency, ) product_images = get_product_images(product) variant_picker_data = get_variant_picker_data( - product, request.discounts, request.taxes, request.currency + product, request.discounts, request.taxes, request.currency, request.country ) product_attributes = get_product_attributes_data(product) # show_variant_picker determines if variant picker is used or select input diff --git a/saleor/search/views.py b/saleor/search/views.py index 2050f850846..b415672b7f7 100644 --- a/saleor/search/views.py +++ b/saleor/search/views.py @@ -23,8 +23,9 @@ def evaluate_search_query(form, request): return products_with_availability( results, discounts=request.discounts, - taxes=request.taxes, + country=request.country, local_currency=request.currency, + taxes=request.taxes, ) diff --git a/saleor/seo/schema/product.py b/saleor/seo/schema/product.py index 5e0fc8754dc..09b8e7ebe94 100644 --- a/saleor/seo/schema/product.py +++ b/saleor/seo/schema/product.py @@ -48,7 +48,7 @@ def variant_json_ld(price, variant, in_stock): "@type": "Offer", "itemCondition": "http://schema.org/NewCondition", "priceCurrency": price.currency, - "price": price.net.amount, + "price": price.amount, "sku": variant.sku, } if in_stock: diff --git a/saleor/settings.py b/saleor/settings.py index 2d9732b5e67..a1a27f291e7 100644 --- a/saleor/settings.py +++ b/saleor/settings.py @@ -76,6 +76,7 @@ def get_bool_from_env(name, default_value): ("hu", _("Hungarian")), ("hy", _("Armenian")), ("id", _("Indonesian")), + ("is", _("Icelandic")), ("it", _("Italian")), ("ja", _("Japanese")), ("ko", _("Korean")), @@ -195,22 +196,22 @@ def get_bool_from_env(name, default_value): SECRET_KEY = os.environ.get("SECRET_KEY") MIDDLEWARE = [ + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.security.SecurityMiddleware", "django.middleware.common.CommonMiddleware", - "saleor.core.middleware.django_session_middleware", - "saleor.core.middleware.django_security_middleware", - "saleor.core.middleware.django_csrf_view_middleware", - "saleor.core.middleware.django_auth_middleware", - "saleor.core.middleware.django_messages_middleware", - "saleor.core.middleware.django_locale_middleware", - "saleor.core.middleware.babel_locale_middleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.locale.LocaleMiddleware", + "django_babel.middleware.LocaleMiddleware", "saleor.core.middleware.discounts", "saleor.core.middleware.google_analytics", "saleor.core.middleware.country", "saleor.core.middleware.currency", "saleor.core.middleware.site", "saleor.core.middleware.taxes", - "saleor.core.middleware.social_auth_exception_middleware", - "saleor.core.middleware.impersonate_middleware", + "social_django.middleware.SocialAuthExceptionMiddleware", + "impersonate.middleware.ImpersonateMiddleware", "saleor.graphql.middleware.jwt_middleware", ] @@ -272,18 +273,10 @@ def get_bool_from_env(name, default_value): DEBUG_TOOLBAR_PANELS = [ # adds a request history to the debug toolbar "ddt_request_history.panels.request_history.RequestHistoryPanel", - "debug_toolbar.panels.versions.VersionsPanel", "debug_toolbar.panels.timer.TimerPanel", - "debug_toolbar.panels.settings.SettingsPanel", "debug_toolbar.panels.headers.HeadersPanel", "debug_toolbar.panels.request.RequestPanel", "debug_toolbar.panels.sql.SQLPanel", - "debug_toolbar.panels.templates.TemplatesPanel", - "debug_toolbar.panels.staticfiles.StaticFilesPanel", - "debug_toolbar.panels.cache.CachePanel", - "debug_toolbar.panels.signals.SignalsPanel", - "debug_toolbar.panels.logging.LoggingPanel", - "debug_toolbar.panels.redirects.RedirectsPanel", "debug_toolbar.panels.profiling.ProfilingPanel", ] DEBUG_TOOLBAR_CONFIG = {"RESULTS_CACHE_SIZE": 100} @@ -300,7 +293,7 @@ def get_bool_from_env(name, default_value): "formatters": { "verbose": { "format": ( - "%(levelname)s %(name)s %(message)s" " [PID:%(process)d:%(threadName)s]" + "%(levelname)s %(name)s %(message)s [PID:%(process)d:%(threadName)s]" ) }, "simple": {"format": "%(levelname)s %(message)s"}, @@ -352,6 +345,13 @@ def get_bool_from_env(name, default_value): VATLAYER_ACCESS_KEY = os.environ.get("VATLAYER_ACCESS_KEY") VATLAYER_USE_HTTPS = get_bool_from_env("VATLAYER_USE_HTTPS", False) +# Avatax supports two ways of log in - username:password or account:license +AVATAX_USERNAME_OR_ACCOUNT = os.environ.get("AVATAX_USERNAME_OR_ACCOUNT") +AVATAX_PASSWORD_OR_LICENSE = os.environ.get("AVATAX_PASSWORD_OR_LICENSE") +AVATAX_USE_SANDBOX = os.environ.get("AVATAX_USE_SANDBOX", DEBUG) +AVATAX_COMPANY_NAME = os.environ.get("AVATAX_COMPANY_NAME", "DEFAULT") +AVATAX_AUTOCOMMIT = os.environ.get("AVATAX_AUTOCOMMIT", False) + ACCOUNT_ACTIVATION_DAYS = 3 LOGIN_REDIRECT_URL = "home" @@ -602,6 +602,7 @@ def get_host(): "module": "saleor.payment.gateways.dummy", "config": { "auto_capture": True, + "store_card": False, "connection_params": {}, "template_path": "order/payment/dummy.html", }, @@ -609,7 +610,8 @@ def get_host(): BRAINTREE: { "module": "saleor.payment.gateways.braintree", "config": { - "auto_capture": True, + "auto_capture": get_bool_from_env("BRAINTREE_AUTO_CAPTURE", True), + "store_card": get_bool_from_env("BRAINTREE_STORE_CARD", False), "template_path": "order/payment/braintree.html", "connection_params": { "sandbox_mode": get_bool_from_env("BRAINTREE_SANDBOX_MODE", True), @@ -622,7 +624,8 @@ def get_host(): RAZORPAY: { "module": "saleor.payment.gateways.razorpay", "config": { - "auto_capture": None, + "store_card": get_bool_from_env("RAZORPAY_STORE_CARD", False), + "auto_capture": get_bool_from_env("RAZORPAY_AUTO_CAPTURE", None), "template_path": "order/payment/razorpay.html", "connection_params": { "public_key": os.environ.get("RAZORPAY_PUBLIC_KEY"), @@ -636,7 +639,8 @@ def get_host(): STRIPE: { "module": "saleor.payment.gateways.stripe", "config": { - "auto_capture": True, + "store_card": get_bool_from_env("STRIPE_STORE_CARD", False), + "auto_capture": get_bool_from_env("STRIPE_AUTO_CAPTURE", True), "template_path": "order/payment/stripe.html", "connection_params": { "public_key": os.environ.get("STRIPE_PUBLIC_KEY"), diff --git a/saleor/shipping/migrations/0016_shippingmethod_meta.py b/saleor/shipping/migrations/0016_shippingmethod_meta.py new file mode 100644 index 00000000000..6624431cefc --- /dev/null +++ b/saleor/shipping/migrations/0016_shippingmethod_meta.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.1 on 2019-06-11 11:49 + +import django.contrib.postgres.fields.jsonb +from django.db import migrations + +import saleor.core.utils.json_serializer + + +class Migration(migrations.Migration): + + dependencies = [("shipping", "0015_auto_20190305_0640")] + + operations = [ + migrations.AddField( + model_name="shippingmethod", + name="meta", + field=django.contrib.postgres.fields.jsonb.JSONField( + blank=True, + default=dict, + encoder=saleor.core.utils.json_serializer.CustomJsonEncoder, + ), + ) + ] diff --git a/saleor/shipping/models.py b/saleor/shipping/models.py index b7c6a6a3c99..e3d8282b933 100644 --- a/saleor/shipping/models.py +++ b/saleor/shipping/models.py @@ -1,4 +1,5 @@ from django.conf import settings +from django.contrib.postgres.fields import JSONField from django.db import models from django.utils.safestring import mark_safe from django.utils.translation import pgettext_lazy @@ -9,7 +10,7 @@ from prices import MoneyRange from ..core.utils import format_money -from ..core.utils.taxes import get_taxed_shipping_price +from ..core.utils.json_serializer import CustomJsonEncoder from ..core.utils.translations import TranslationProxy from ..core.weight import WeightUnits, zero_weight from . import ShippingMethodType @@ -49,7 +50,7 @@ def price_range(self): for shipping_method in self.shipping_methods.all() ] if prices: - return MoneyRange(min(prices).net, max(prices).net) + return MoneyRange(min(prices), max(prices)) return None class Meta: @@ -126,6 +127,7 @@ class ShippingMethod(models.Model): maximum_order_weight = MeasurementField( measurement=Weight, unit_choices=WeightUnits.CHOICES, blank=True, null=True ) + meta = JSONField(blank=True, default=dict, encoder=CustomJsonEncoder) objects = ShippingMethodQueryset.as_manager() translated = TranslationProxy() @@ -160,8 +162,8 @@ def __repr__(self): ), ) - def get_total(self, taxes=None): - return get_taxed_shipping_price(self.price, taxes) + def get_total(self): + return self.price def get_ajax_label(self): price_html = format_money(self.price) diff --git a/saleor/shipping/utils.py b/saleor/shipping/utils.py index d9dbe899291..73c19929184 100644 --- a/saleor/shipping/utils.py +++ b/saleor/shipping/utils.py @@ -2,11 +2,11 @@ from django.utils.translation import pgettext_lazy from prices import MoneyRange -from ..core.utils.taxes import get_taxed_shipping_price +from ..core.taxes import interface as tax_interface from ..core.weight import convert_weight, get_default_weight_unit -def get_shipping_price_estimate(price, weight, country_code, taxes): +def get_shipping_price_estimate(price, weight, country_code): """Returns estimated price range for shipping for given order.""" from .models import ShippingMethod @@ -17,7 +17,7 @@ def get_shipping_price_estimate(price, weight, country_code, taxes): if not shipping_methods: return prices = MoneyRange(start=min(shipping_methods), stop=max(shipping_methods)) - return get_taxed_shipping_price(prices, taxes) + return tax_interface.apply_taxes_to_shipping_price_range(prices, country_code) def applicable_weight_based_methods(weight, qs): diff --git a/saleor/site/migrations/0022_sitesettings_company_address.py b/saleor/site/migrations/0022_sitesettings_company_address.py new file mode 100644 index 00000000000..5576db421cc --- /dev/null +++ b/saleor/site/migrations/0022_sitesettings_company_address.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2.1 on 2019-06-17 13:57 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("account", "0027_customerevent"), + ("site", "0021_auto_20190326_0521"), + ] + + operations = [ + migrations.AddField( + model_name="sitesettings", + name="company_address", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="account.Address", + ), + ) + ] diff --git a/saleor/site/models.py b/saleor/site/models.py index c3b29e64069..87276e612a4 100644 --- a/saleor/site/models.py +++ b/saleor/site/models.py @@ -37,6 +37,9 @@ class SiteSettings(models.Model): automatic_fulfillment_digital_products = models.BooleanField(default=False) default_digital_max_downloads = models.IntegerField(blank=True, null=True) default_digital_url_valid_days = models.IntegerField(blank=True, null=True) + company_address = models.ForeignKey( + "account.Address", blank=True, null=True, on_delete=models.CASCADE + ) translated = TranslationProxy() class Meta: diff --git a/saleor/static/dashboard-next/Baseline.tsx b/saleor/static/dashboard-next/Baseline.tsx index 5babc7adeea..16946477136 100644 --- a/saleor/static/dashboard-next/Baseline.tsx +++ b/saleor/static/dashboard-next/Baseline.tsx @@ -1,6 +1,6 @@ import CssBaseline from "@material-ui/core/CssBaseline"; import { createStyles, withStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; const styles = createStyles({ "@global": { diff --git a/saleor/static/dashboard-next/NotFound.tsx b/saleor/static/dashboard-next/NotFound.tsx index 075e7d4d76c..8833b52b7da 100644 --- a/saleor/static/dashboard-next/NotFound.tsx +++ b/saleor/static/dashboard-next/NotFound.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import NotFoundPage from "./components/NotFoundPage"; import useNavigator from "./hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/auth/AuthProvider.tsx b/saleor/static/dashboard-next/auth/AuthProvider.tsx index 64da58a5c41..147dec6b04e 100644 --- a/saleor/static/dashboard-next/auth/AuthProvider.tsx +++ b/saleor/static/dashboard-next/auth/AuthProvider.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { getMutationProviderData } from "../misc"; import { PartialMutationProviderOutput } from "../types"; diff --git a/saleor/static/dashboard-next/auth/components/LoginLoading/LoginLoading.tsx b/saleor/static/dashboard-next/auth/components/LoginLoading/LoginLoading.tsx index 99ad30b7677..f53b921aa6f 100644 --- a/saleor/static/dashboard-next/auth/components/LoginLoading/LoginLoading.tsx +++ b/saleor/static/dashboard-next/auth/components/LoginLoading/LoginLoading.tsx @@ -1,6 +1,6 @@ import CircularProgress from "@material-ui/core/CircularProgress"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; const styles = createStyles({ root: { diff --git a/saleor/static/dashboard-next/auth/components/LoginPage/LoginPage.tsx b/saleor/static/dashboard-next/auth/components/LoginPage/LoginPage.tsx index ba5ed0f7b45..88c4800d29f 100644 --- a/saleor/static/dashboard-next/auth/components/LoginPage/LoginPage.tsx +++ b/saleor/static/dashboard-next/auth/components/LoginPage/LoginPage.tsx @@ -7,16 +7,16 @@ import { } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import SVG from "react-inlinesvg"; import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox"; import Form from "@saleor/components/Form"; import { FormSpacer } from "@saleor/components/FormSpacer"; import useTheme from "@saleor/hooks/useTheme"; -import * as backgroundArt from "../../../../images/login-background.svg"; -import * as saleorDarkLogo from "../../../../images/logo-dark.svg"; -import * as saleorLightLogo from "../../../../images/logo-light.svg"; +import backgroundArt from "../../../../images/login-background.svg"; +import saleorDarkLogo from "../../../../images/logo-dark.svg"; +import saleorLightLogo from "../../../../images/logo-light.svg"; import i18n from "../../../i18n"; export interface FormData { diff --git a/saleor/static/dashboard-next/auth/components/SectionRoute.tsx b/saleor/static/dashboard-next/auth/components/SectionRoute.tsx index c5c97d3153b..a9ec3a49350 100644 --- a/saleor/static/dashboard-next/auth/components/SectionRoute.tsx +++ b/saleor/static/dashboard-next/auth/components/SectionRoute.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Route, RouteProps } from "react-router-dom"; import AppLayout from "@saleor/components/AppLayout"; diff --git a/saleor/static/dashboard-next/auth/index.tsx b/saleor/static/dashboard-next/auth/index.tsx index a38347d308f..5af2ad33ef7 100644 --- a/saleor/static/dashboard-next/auth/index.tsx +++ b/saleor/static/dashboard-next/auth/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { User } from "./types/User"; diff --git a/saleor/static/dashboard-next/auth/views/Login.tsx b/saleor/static/dashboard-next/auth/views/Login.tsx index 508f4e8c949..5c61f126993 100644 --- a/saleor/static/dashboard-next/auth/views/Login.tsx +++ b/saleor/static/dashboard-next/auth/views/Login.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import LoginPage, { FormData } from "../components/LoginPage"; import { UserContext } from "../index"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryBackground/CategoryBackground.tsx b/saleor/static/dashboard-next/categories/components/CategoryBackground/CategoryBackground.tsx index a90674bdc7c..2dca98b19d0 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryBackground/CategoryBackground.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryBackground/CategoryBackground.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryCreatePage/CategoryCreatePage.tsx b/saleor/static/dashboard-next/categories/components/CategoryCreatePage/CategoryCreatePage.tsx index 0177f68e2b9..664d3b2b5a4 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryCreatePage/CategoryCreatePage.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryCreatePage/CategoryCreatePage.tsx @@ -1,5 +1,5 @@ import { ContentState, convertToRaw, RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import { CardSpacer } from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryDeleteDialog/CategoryDeleteDialog.tsx b/saleor/static/dashboard-next/categories/components/CategoryDeleteDialog/CategoryDeleteDialog.tsx index 0dd8a1e29e6..3fb36f4c8ab 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryDeleteDialog/CategoryDeleteDialog.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryDeleteDialog/CategoryDeleteDialog.tsx @@ -10,7 +10,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryDetailsForm/CategoryDetailsForm.tsx b/saleor/static/dashboard-next/categories/components/CategoryDetailsForm/CategoryDetailsForm.tsx index 74e41a6c3c1..cffbd95799d 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryDetailsForm/CategoryDetailsForm.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryDetailsForm/CategoryDetailsForm.tsx @@ -3,7 +3,7 @@ import CardContent from "@material-ui/core/CardContent"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import { RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import FormSpacer from "@saleor/components/FormSpacer"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryList/CategoryList.tsx b/saleor/static/dashboard-next/categories/components/CategoryList/CategoryList.tsx index 232509160ff..6b8776b8f67 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryList/CategoryList.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryList/CategoryList.tsx @@ -11,7 +11,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Checkbox from "@saleor/components/Checkbox"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryListPage/CategoryListPage.tsx b/saleor/static/dashboard-next/categories/components/CategoryListPage/CategoryListPage.tsx index 38acf31eb93..e465c255be0 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryListPage/CategoryListPage.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryListPage/CategoryListPage.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import Container from "@saleor/components/Container"; import PageHeader from "@saleor/components/PageHeader"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryProducts/CategoryProducts.tsx b/saleor/static/dashboard-next/categories/components/CategoryProducts/CategoryProducts.tsx index 5f41d6f5310..56d7ec5fe4e 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryProducts/CategoryProducts.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryProducts/CategoryProducts.tsx @@ -12,7 +12,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryProductsCard/CategoryProductsCard.tsx b/saleor/static/dashboard-next/categories/components/CategoryProductsCard/CategoryProductsCard.tsx index ca0017123f1..78f2a226304 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryProductsCard/CategoryProductsCard.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryProductsCard/CategoryProductsCard.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import ProductList from "@saleor/components/ProductList"; diff --git a/saleor/static/dashboard-next/categories/components/CategoryUpdatePage/CategoryUpdatePage.tsx b/saleor/static/dashboard-next/categories/components/CategoryUpdatePage/CategoryUpdatePage.tsx index 03d242a9f0d..2b944e30560 100644 --- a/saleor/static/dashboard-next/categories/components/CategoryUpdatePage/CategoryUpdatePage.tsx +++ b/saleor/static/dashboard-next/categories/components/CategoryUpdatePage/CategoryUpdatePage.tsx @@ -1,5 +1,5 @@ import { RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import { CardSpacer } from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/categories/index.tsx b/saleor/static/dashboard-next/categories/index.tsx index 12af20f0a92..01178b737f1 100644 --- a/saleor/static/dashboard-next/categories/index.tsx +++ b/saleor/static/dashboard-next/categories/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; import i18n from "../i18n"; diff --git a/saleor/static/dashboard-next/categories/urls.ts b/saleor/static/dashboard-next/categories/urls.ts index 09c92f9d225..6d49a8a8502 100644 --- a/saleor/static/dashboard-next/categories/urls.ts +++ b/saleor/static/dashboard-next/categories/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { ActiveTab, BulkAction, Dialog, Pagination } from "../types"; import { CategoryPageTab } from "./components/CategoryUpdatePage"; diff --git a/saleor/static/dashboard-next/categories/views/CategoryCreate.tsx b/saleor/static/dashboard-next/categories/views/CategoryCreate.tsx index 903bd705052..03f42f937f5 100644 --- a/saleor/static/dashboard-next/categories/views/CategoryCreate.tsx +++ b/saleor/static/dashboard-next/categories/views/CategoryCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/categories/views/CategoryDetails.tsx b/saleor/static/dashboard-next/categories/views/CategoryDetails.tsx index 07e927fca0b..92d1d1c6056 100644 --- a/saleor/static/dashboard-next/categories/views/CategoryDetails.tsx +++ b/saleor/static/dashboard-next/categories/views/CategoryDetails.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; diff --git a/saleor/static/dashboard-next/categories/views/CategoryList.tsx b/saleor/static/dashboard-next/categories/views/CategoryList.tsx index 9434767028e..ee0e15d6ef6 100644 --- a/saleor/static/dashboard-next/categories/views/CategoryList.tsx +++ b/saleor/static/dashboard-next/categories/views/CategoryList.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; diff --git a/saleor/static/dashboard-next/collections/components/CollectionCreatePage/CollectionCreatePage.tsx b/saleor/static/dashboard-next/collections/components/CollectionCreatePage/CollectionCreatePage.tsx index 46cc82bf0d5..78e92fa0144 100644 --- a/saleor/static/dashboard-next/collections/components/CollectionCreatePage/CollectionCreatePage.tsx +++ b/saleor/static/dashboard-next/collections/components/CollectionCreatePage/CollectionCreatePage.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { ContentState, convertToRaw, RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import { CardSpacer } from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/collections/components/CollectionDetails/CollectionDetails.tsx b/saleor/static/dashboard-next/collections/components/CollectionDetails/CollectionDetails.tsx index 180342c9fde..db44e3ccb52 100644 --- a/saleor/static/dashboard-next/collections/components/CollectionDetails/CollectionDetails.tsx +++ b/saleor/static/dashboard-next/collections/components/CollectionDetails/CollectionDetails.tsx @@ -3,7 +3,7 @@ import CardContent from "@material-ui/core/CardContent"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import { RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import FormSpacer from "@saleor/components/FormSpacer"; diff --git a/saleor/static/dashboard-next/collections/components/CollectionDetailsPage/CollectionDetailsPage.tsx b/saleor/static/dashboard-next/collections/components/CollectionDetailsPage/CollectionDetailsPage.tsx index a974ae6addc..9c97df6ead5 100644 --- a/saleor/static/dashboard-next/collections/components/CollectionDetailsPage/CollectionDetailsPage.tsx +++ b/saleor/static/dashboard-next/collections/components/CollectionDetailsPage/CollectionDetailsPage.tsx @@ -1,5 +1,5 @@ import { RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import { CardSpacer } from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/collections/components/CollectionImage/CollectionImage.tsx b/saleor/static/dashboard-next/collections/components/CollectionImage/CollectionImage.tsx index f2866483f1a..05758727c60 100644 --- a/saleor/static/dashboard-next/collections/components/CollectionImage/CollectionImage.tsx +++ b/saleor/static/dashboard-next/collections/components/CollectionImage/CollectionImage.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; diff --git a/saleor/static/dashboard-next/collections/components/CollectionList/CollectionList.tsx b/saleor/static/dashboard-next/collections/components/CollectionList/CollectionList.tsx index ce8b61550dc..6a4b24d9cac 100644 --- a/saleor/static/dashboard-next/collections/components/CollectionList/CollectionList.tsx +++ b/saleor/static/dashboard-next/collections/components/CollectionList/CollectionList.tsx @@ -10,7 +10,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/collections/components/CollectionListPage/CollectionListPage.tsx b/saleor/static/dashboard-next/collections/components/CollectionListPage/CollectionListPage.tsx index 4fd39fe3c59..d5580c66e86 100644 --- a/saleor/static/dashboard-next/collections/components/CollectionListPage/CollectionListPage.tsx +++ b/saleor/static/dashboard-next/collections/components/CollectionListPage/CollectionListPage.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import { Container } from "@saleor/components/Container"; import PageHeader from "@saleor/components/PageHeader"; diff --git a/saleor/static/dashboard-next/collections/components/CollectionProducts/CollectionProducts.tsx b/saleor/static/dashboard-next/collections/components/CollectionProducts/CollectionProducts.tsx index fc8a420df84..977c1ed454b 100644 --- a/saleor/static/dashboard-next/collections/components/CollectionProducts/CollectionProducts.tsx +++ b/saleor/static/dashboard-next/collections/components/CollectionProducts/CollectionProducts.tsx @@ -13,7 +13,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Checkbox from "@saleor/components/Checkbox"; diff --git a/saleor/static/dashboard-next/collections/containers/CollectionOperations.tsx b/saleor/static/dashboard-next/collections/containers/CollectionOperations.tsx index a9f3d8c841b..694d85915fe 100644 --- a/saleor/static/dashboard-next/collections/containers/CollectionOperations.tsx +++ b/saleor/static/dashboard-next/collections/containers/CollectionOperations.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { getMutationProviderData } from "../../misc"; import { PartialMutationProviderOutput } from "../../types"; diff --git a/saleor/static/dashboard-next/collections/index.tsx b/saleor/static/dashboard-next/collections/index.tsx index 9706de5ceaa..75a11dd04d5 100644 --- a/saleor/static/dashboard-next/collections/index.tsx +++ b/saleor/static/dashboard-next/collections/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/collections/urls.ts b/saleor/static/dashboard-next/collections/urls.ts index 305fadbee18..e6770071ec0 100644 --- a/saleor/static/dashboard-next/collections/urls.ts +++ b/saleor/static/dashboard-next/collections/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { BulkAction, Dialog, Pagination } from "../types"; diff --git a/saleor/static/dashboard-next/collections/views/CollectionCreate.tsx b/saleor/static/dashboard-next/collections/views/CollectionCreate.tsx index 24c4eb73f9a..29c1de5c600 100644 --- a/saleor/static/dashboard-next/collections/views/CollectionCreate.tsx +++ b/saleor/static/dashboard-next/collections/views/CollectionCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/collections/views/CollectionDetails.tsx b/saleor/static/dashboard-next/collections/views/CollectionDetails.tsx index f9e8c7a3cc6..1ee4f2f96cb 100644 --- a/saleor/static/dashboard-next/collections/views/CollectionDetails.tsx +++ b/saleor/static/dashboard-next/collections/views/CollectionDetails.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import AssignProductDialog from "@saleor/components/AssignProductDialog"; @@ -287,7 +287,7 @@ export const CollectionDetails: React.StatelessComponent< open={params.action === "assign"} onFetch={search} loading={result.loading} - onClose={() => navigate(collectionUrl(id), true, true)} + onClose={closeModal} onSubmit={formData => assignProduct.mutate({ ...paginationState, diff --git a/saleor/static/dashboard-next/collections/views/CollectionList.tsx b/saleor/static/dashboard-next/collections/views/CollectionList.tsx index 4914dbbaf77..008fcfb4dde 100644 --- a/saleor/static/dashboard-next/collections/views/CollectionList.tsx +++ b/saleor/static/dashboard-next/collections/views/CollectionList.tsx @@ -2,7 +2,7 @@ import Button from "@material-ui/core/Button"; import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; diff --git a/saleor/static/dashboard-next/components/ActionDialog/ActionDialog.tsx b/saleor/static/dashboard-next/components/ActionDialog/ActionDialog.tsx index ef4e4786fd1..3a5df3a4647 100644 --- a/saleor/static/dashboard-next/components/ActionDialog/ActionDialog.tsx +++ b/saleor/static/dashboard-next/components/ActionDialog/ActionDialog.tsx @@ -9,8 +9,8 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import i18n from "../../i18n"; import ConfirmButton, { diff --git a/saleor/static/dashboard-next/components/AddressEdit/AddressEdit.tsx b/saleor/static/dashboard-next/components/AddressEdit/AddressEdit.tsx index 0e93fd82376..428340604e3 100644 --- a/saleor/static/dashboard-next/components/AddressEdit/AddressEdit.tsx +++ b/saleor/static/dashboard-next/components/AddressEdit/AddressEdit.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import { AddressTypeInput } from "../../customers/types"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/AddressFormatter/AddressFormatter.tsx b/saleor/static/dashboard-next/components/AddressFormatter/AddressFormatter.tsx index db16de1a488..fa9efcc260f 100644 --- a/saleor/static/dashboard-next/components/AddressFormatter/AddressFormatter.tsx +++ b/saleor/static/dashboard-next/components/AddressFormatter/AddressFormatter.tsx @@ -1,5 +1,5 @@ import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import { AddressType } from "../../customers/types"; import Skeleton from "../Skeleton"; diff --git a/saleor/static/dashboard-next/components/AppHeader/AppHeader.tsx b/saleor/static/dashboard-next/components/AppHeader/AppHeader.tsx index 1cd32ed5a92..3c21e7f82be 100644 --- a/saleor/static/dashboard-next/components/AppHeader/AppHeader.tsx +++ b/saleor/static/dashboard-next/components/AppHeader/AppHeader.tsx @@ -7,7 +7,7 @@ import { } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import ArrowBackIcon from "@material-ui/icons/ArrowBack"; -import * as React from "react"; +import React from "react"; import AppHeaderContext from "../AppLayout/AppHeaderContext"; import Skeleton from "../Skeleton"; diff --git a/saleor/static/dashboard-next/components/AppLayout/AppActionContext.tsx b/saleor/static/dashboard-next/components/AppLayout/AppActionContext.tsx index 31e3de50dc3..6083d883b7e 100644 --- a/saleor/static/dashboard-next/components/AppLayout/AppActionContext.tsx +++ b/saleor/static/dashboard-next/components/AppLayout/AppActionContext.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; const AppActionContext = React.createContext>( undefined diff --git a/saleor/static/dashboard-next/components/AppLayout/AppHeaderContext.tsx b/saleor/static/dashboard-next/components/AppLayout/AppHeaderContext.tsx index 73255b6652e..90265549695 100644 --- a/saleor/static/dashboard-next/components/AppLayout/AppHeaderContext.tsx +++ b/saleor/static/dashboard-next/components/AppLayout/AppHeaderContext.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; const AppHeaderContext = React.createContext>( undefined diff --git a/saleor/static/dashboard-next/components/AppLayout/AppLayout.tsx b/saleor/static/dashboard-next/components/AppLayout/AppLayout.tsx index 07da007c360..9552a37644d 100644 --- a/saleor/static/dashboard-next/components/AppLayout/AppLayout.tsx +++ b/saleor/static/dashboard-next/components/AppLayout/AppLayout.tsx @@ -12,8 +12,8 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import SVG from "react-inlinesvg"; import { RouteComponentProps, withRouter } from "react-router"; @@ -21,8 +21,8 @@ import AppProgressProvider from "@saleor/components/AppProgress"; import useNavigator from "@saleor/hooks/useNavigator"; import useTheme from "@saleor/hooks/useTheme"; import useUser from "@saleor/hooks/useUser"; -import * as saleorDarkLogo from "../../../images/logo-dark.svg"; -import * as saleorLightLogo from "../../../images/logo-light.svg"; +import saleorDarkLogo from "../../../images/logo-dark.svg"; +import saleorLightLogo from "../../../images/logo-light.svg"; import i18n from "../../i18n"; import ArrowDropdown from "../../icons/ArrowDropdown"; import Container from "../Container"; diff --git a/saleor/static/dashboard-next/components/AppLayout/MenuList.tsx b/saleor/static/dashboard-next/components/AppLayout/MenuList.tsx index b875a8a9fbf..994e0225d05 100644 --- a/saleor/static/dashboard-next/components/AppLayout/MenuList.tsx +++ b/saleor/static/dashboard-next/components/AppLayout/MenuList.tsx @@ -6,7 +6,7 @@ import { } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import { matchPath } from "react-router"; import { User } from "../../auth/types/User"; diff --git a/saleor/static/dashboard-next/components/AppLayout/MenuNested.tsx b/saleor/static/dashboard-next/components/AppLayout/MenuNested.tsx index 44f69ed8855..afa63fd12d4 100644 --- a/saleor/static/dashboard-next/components/AppLayout/MenuNested.tsx +++ b/saleor/static/dashboard-next/components/AppLayout/MenuNested.tsx @@ -1,6 +1,6 @@ import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import { User } from "../../auth/types/User"; import MenuList from "./MenuList"; diff --git a/saleor/static/dashboard-next/components/AppLayout/ResponsiveDrawer.tsx b/saleor/static/dashboard-next/components/AppLayout/ResponsiveDrawer.tsx index 22414999946..49fac57c123 100644 --- a/saleor/static/dashboard-next/components/AppLayout/ResponsiveDrawer.tsx +++ b/saleor/static/dashboard-next/components/AppLayout/ResponsiveDrawer.tsx @@ -6,7 +6,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import { drawerWidth } from "./consts"; const styles = (theme: Theme) => diff --git a/saleor/static/dashboard-next/components/AppLayout/ThemeSwitch.tsx b/saleor/static/dashboard-next/components/AppLayout/ThemeSwitch.tsx index 4292f1c7329..17112caf290 100644 --- a/saleor/static/dashboard-next/components/AppLayout/ThemeSwitch.tsx +++ b/saleor/static/dashboard-next/components/AppLayout/ThemeSwitch.tsx @@ -1,6 +1,6 @@ import { Theme, withStyles } from "@material-ui/core/styles"; import Switch, { SwitchProps } from "@material-ui/core/Switch"; -import * as React from "react"; +import React from "react"; import MoonIcon from "../../icons/Moon"; import SunIcon from "../../icons/Sun"; diff --git a/saleor/static/dashboard-next/components/AppProgress/index.tsx b/saleor/static/dashboard-next/components/AppProgress/index.tsx index 7be0c21321f..27cc6f67f04 100644 --- a/saleor/static/dashboard-next/components/AppProgress/index.tsx +++ b/saleor/static/dashboard-next/components/AppProgress/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; interface IAppProgressContext { isProgress: boolean; diff --git a/saleor/static/dashboard-next/components/AssignCategoryDialog/AssignCategoryDialog.tsx b/saleor/static/dashboard-next/components/AssignCategoryDialog/AssignCategoryDialog.tsx index 656c6390531..a272a7da856 100644 --- a/saleor/static/dashboard-next/components/AssignCategoryDialog/AssignCategoryDialog.tsx +++ b/saleor/static/dashboard-next/components/AssignCategoryDialog/AssignCategoryDialog.tsx @@ -10,7 +10,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/components/AssignCollectionDialog/AssignCollectionDialog.tsx b/saleor/static/dashboard-next/components/AssignCollectionDialog/AssignCollectionDialog.tsx index bd4cd2dbd52..6d0780427b9 100644 --- a/saleor/static/dashboard-next/components/AssignCollectionDialog/AssignCollectionDialog.tsx +++ b/saleor/static/dashboard-next/components/AssignCollectionDialog/AssignCollectionDialog.tsx @@ -10,7 +10,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import { SearchCollections_collections_edges_node } from "../../containers/SearchCollections/types/SearchCollections"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/AssignProductDialog/AssignProductDialog.tsx b/saleor/static/dashboard-next/components/AssignProductDialog/AssignProductDialog.tsx index a675a6d473b..9b975d6811f 100644 --- a/saleor/static/dashboard-next/components/AssignProductDialog/AssignProductDialog.tsx +++ b/saleor/static/dashboard-next/components/AssignProductDialog/AssignProductDialog.tsx @@ -10,7 +10,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/components/AutocompleteSelectMenu/AutocompleteSelectMenu.tsx b/saleor/static/dashboard-next/components/AutocompleteSelectMenu/AutocompleteSelectMenu.tsx index d00ca186ffc..20a458e5fd4 100644 --- a/saleor/static/dashboard-next/components/AutocompleteSelectMenu/AutocompleteSelectMenu.tsx +++ b/saleor/static/dashboard-next/components/AutocompleteSelectMenu/AutocompleteSelectMenu.tsx @@ -10,7 +10,7 @@ import { import TextField from "@material-ui/core/TextField"; import ArrowBack from "@material-ui/icons/ArrowBack"; import Downshift from "downshift"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import { diff --git a/saleor/static/dashboard-next/components/CardMenu/CardMenu.tsx b/saleor/static/dashboard-next/components/CardMenu/CardMenu.tsx index 4135ce41836..1ce0e9c417d 100644 --- a/saleor/static/dashboard-next/components/CardMenu/CardMenu.tsx +++ b/saleor/static/dashboard-next/components/CardMenu/CardMenu.tsx @@ -8,7 +8,7 @@ import { WithStyles } from "@material-ui/core/styles"; import MoreVertIcon from "@material-ui/icons/MoreVert"; -import * as React from "react"; +import React from "react"; const ITEM_HEIGHT = 48; diff --git a/saleor/static/dashboard-next/components/CardSpacer.tsx b/saleor/static/dashboard-next/components/CardSpacer.tsx index 98d70f95a95..9f205b57358 100644 --- a/saleor/static/dashboard-next/components/CardSpacer.tsx +++ b/saleor/static/dashboard-next/components/CardSpacer.tsx @@ -4,7 +4,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/CardTitle/CardTitle.tsx b/saleor/static/dashboard-next/components/CardTitle/CardTitle.tsx index 92c061f0a45..8f46657deff 100644 --- a/saleor/static/dashboard-next/components/CardTitle/CardTitle.tsx +++ b/saleor/static/dashboard-next/components/CardTitle/CardTitle.tsx @@ -5,8 +5,8 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/Checkbox/Checkbox.tsx b/saleor/static/dashboard-next/components/Checkbox/Checkbox.tsx index a82a63d7c7a..2a715c8e133 100644 --- a/saleor/static/dashboard-next/components/Checkbox/Checkbox.tsx +++ b/saleor/static/dashboard-next/components/Checkbox/Checkbox.tsx @@ -8,7 +8,7 @@ import { WithStyles } from "@material-ui/core/styles"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import { stopPropagation } from "../../misc"; export type CheckboxProps = Omit< diff --git a/saleor/static/dashboard-next/components/Chip/Chip.tsx b/saleor/static/dashboard-next/components/Chip/Chip.tsx index f003b16b0a2..535861af7eb 100644 --- a/saleor/static/dashboard-next/components/Chip/Chip.tsx +++ b/saleor/static/dashboard-next/components/Chip/Chip.tsx @@ -8,7 +8,7 @@ import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import CloseIcon from "@material-ui/icons/Close"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; export interface ChipProps { className?: string; diff --git a/saleor/static/dashboard-next/components/ConfirmButton/ConfirmButton.tsx b/saleor/static/dashboard-next/components/ConfirmButton/ConfirmButton.tsx index b1a1c7b9122..07185213a0a 100644 --- a/saleor/static/dashboard-next/components/ConfirmButton/ConfirmButton.tsx +++ b/saleor/static/dashboard-next/components/ConfirmButton/ConfirmButton.tsx @@ -9,7 +9,7 @@ import { } from "@material-ui/core/styles"; import CheckIcon from "@material-ui/icons/Check"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/ConfirmFormLeaveDialog.tsx b/saleor/static/dashboard-next/components/ConfirmFormLeaveDialog.tsx deleted file mode 100644 index 41bce42b8b8..00000000000 --- a/saleor/static/dashboard-next/components/ConfirmFormLeaveDialog.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import Button from "@material-ui/core/Button"; -import Dialog from "@material-ui/core/Dialog"; -import DialogActions from "@material-ui/core/DialogActions"; -import DialogContent from "@material-ui/core/DialogContent"; -import DialogContentText from "@material-ui/core/DialogContentText"; -import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; -import * as React from "react"; -import NavigationPrompt from "react-router-navigation-prompt"; - -import i18n from "../i18n"; -import { FormContext } from "./Form"; - -const styles = (theme: Theme) => - createStyles({ - deleteButton: { - "&:hover": { - backgroundColor: theme.palette.error.main - }, - backgroundColor: theme.palette.error.main, - color: theme.palette.error.contrastText - } - }); - -export const ConfirmFormLeaveDialog = withStyles(styles, { - name: "ConfirmFormLeaveDialog" -})(({ classes }: WithStyles) => ( - - {({ hasChanged: hasFormChanged }) => ( - - {({ isActive, onCancel, onConfirm }) => ( - - {i18n.t("Unsaved changes")} - - - {i18n.t( - "If you leave this page, unsaved changes will be lost. Are you sure you want to leave?", - { - context: "form leave confirmation" - } - )} - - - - - - - - )} - - )} - -)); diff --git a/saleor/static/dashboard-next/components/Container.tsx b/saleor/static/dashboard-next/components/Container.tsx index 57d552d0132..289563bc35d 100644 --- a/saleor/static/dashboard-next/components/Container.tsx +++ b/saleor/static/dashboard-next/components/Container.tsx @@ -4,8 +4,8 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/ControlledCheckbox.tsx b/saleor/static/dashboard-next/components/ControlledCheckbox.tsx index 6e948e6f99f..8ce485c1080 100644 --- a/saleor/static/dashboard-next/components/ControlledCheckbox.tsx +++ b/saleor/static/dashboard-next/components/ControlledCheckbox.tsx @@ -1,5 +1,5 @@ import FormControlLabel from "@material-ui/core/FormControlLabel"; -import * as React from "react"; +import React from "react"; import Checkbox from "./Checkbox"; diff --git a/saleor/static/dashboard-next/components/ControlledSwitch.tsx b/saleor/static/dashboard-next/components/ControlledSwitch.tsx index 6b0b341fd0f..87b308ba27f 100644 --- a/saleor/static/dashboard-next/components/ControlledSwitch.tsx +++ b/saleor/static/dashboard-next/components/ControlledSwitch.tsx @@ -1,7 +1,7 @@ import { createStyles, Theme, withStyles, WithStyles } from "@material-ui/core"; import FormControlLabel from "@material-ui/core/FormControlLabel"; import Switch from "@material-ui/core/Switch"; -import * as React from "react"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/CountryList/CountryList.tsx b/saleor/static/dashboard-next/components/CountryList/CountryList.tsx index 014a7db66d9..ff0893a967d 100644 --- a/saleor/static/dashboard-next/components/CountryList/CountryList.tsx +++ b/saleor/static/dashboard-next/components/CountryList/CountryList.tsx @@ -15,7 +15,7 @@ import TableRow from "@material-ui/core/TableRow"; import ArrowDropDownIcon from "@material-ui/icons/ArrowDropDown"; import DeleteIcon from "@material-ui/icons/Delete"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/components/Date/Date.test.tsx b/saleor/static/dashboard-next/components/Date/Date.test.tsx index a1d233515df..77f2d412698 100644 --- a/saleor/static/dashboard-next/components/Date/Date.test.tsx +++ b/saleor/static/dashboard-next/components/Date/Date.test.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; -import * as renderer from "react-test-renderer"; +import React from "react"; +import renderer from "react-test-renderer"; import { TimezoneProvider } from "../Timezone"; import Date from "./Date"; diff --git a/saleor/static/dashboard-next/components/Date/Date.tsx b/saleor/static/dashboard-next/components/Date/Date.tsx index f72d7a3be5e..6a13ae3bb28 100644 --- a/saleor/static/dashboard-next/components/Date/Date.tsx +++ b/saleor/static/dashboard-next/components/Date/Date.tsx @@ -1,6 +1,6 @@ import Tooltip from "@material-ui/core/Tooltip"; -import * as moment from "moment-timezone"; -import * as React from "react"; +import moment from "moment-timezone"; +import React from "react"; import useDateLocalize from "@saleor/hooks/useDateLocalize"; import { LocaleConsumer } from "../Locale"; diff --git a/saleor/static/dashboard-next/components/Date/DateContext.tsx b/saleor/static/dashboard-next/components/Date/DateContext.tsx index 449f1bc13b4..5e404caa030 100644 --- a/saleor/static/dashboard-next/components/Date/DateContext.tsx +++ b/saleor/static/dashboard-next/components/Date/DateContext.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; export const DateContext = React.createContext(undefined); const { Provider, Consumer } = DateContext; diff --git a/saleor/static/dashboard-next/components/Date/DateProvider.tsx b/saleor/static/dashboard-next/components/Date/DateProvider.tsx index c54f779ce07..90226eb0f00 100644 --- a/saleor/static/dashboard-next/components/Date/DateProvider.tsx +++ b/saleor/static/dashboard-next/components/Date/DateProvider.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Provider } from "./DateContext"; diff --git a/saleor/static/dashboard-next/components/Date/DateTime.tsx b/saleor/static/dashboard-next/components/Date/DateTime.tsx index c3199ce7cc8..31af9987ee2 100644 --- a/saleor/static/dashboard-next/components/Date/DateTime.tsx +++ b/saleor/static/dashboard-next/components/Date/DateTime.tsx @@ -1,6 +1,6 @@ import Tooltip from "@material-ui/core/Tooltip"; -import * as moment from "moment-timezone"; -import * as React from "react"; +import moment from "moment-timezone"; +import React from "react"; import ReactMoment from "react-moment"; import { LocaleConsumer } from "../Locale"; diff --git a/saleor/static/dashboard-next/components/Debounce.tsx b/saleor/static/dashboard-next/components/Debounce.tsx index 533c52aba11..5d5c6757170 100644 --- a/saleor/static/dashboard-next/components/Debounce.tsx +++ b/saleor/static/dashboard-next/components/Debounce.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; export interface DebounceProps { children: ((props: (...args: T[]) => void) => React.ReactNode); diff --git a/saleor/static/dashboard-next/components/DebounceForm.tsx b/saleor/static/dashboard-next/components/DebounceForm.tsx index 0742aa50b58..7c847369541 100644 --- a/saleor/static/dashboard-next/components/DebounceForm.tsx +++ b/saleor/static/dashboard-next/components/DebounceForm.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import Debounce from "./Debounce"; export interface DebounceFormProps { diff --git a/saleor/static/dashboard-next/components/DeleteFilterTabDialog/DeleteFilterTabDialog.tsx b/saleor/static/dashboard-next/components/DeleteFilterTabDialog/DeleteFilterTabDialog.tsx index aa4fb9125d1..651304ccea2 100644 --- a/saleor/static/dashboard-next/components/DeleteFilterTabDialog/DeleteFilterTabDialog.tsx +++ b/saleor/static/dashboard-next/components/DeleteFilterTabDialog/DeleteFilterTabDialog.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import ActionDialog from "../ActionDialog"; diff --git a/saleor/static/dashboard-next/components/DraftRenderer.tsx b/saleor/static/dashboard-next/components/DraftRenderer.tsx index d6fcd508f98..67affe0338d 100644 --- a/saleor/static/dashboard-next/components/DraftRenderer.tsx +++ b/saleor/static/dashboard-next/components/DraftRenderer.tsx @@ -1,6 +1,6 @@ import { RawDraftContentState } from "draft-js"; -import * as draftToHtml from "draftjs-to-html"; -import * as React from "react"; +import draftToHtml from "draftjs-to-html"; +import React from "react"; interface DraftRendererProps { content: RawDraftContentState; diff --git a/saleor/static/dashboard-next/components/Dropzone.tsx b/saleor/static/dashboard-next/components/Dropzone.tsx index 1a8c621144b..80453243149 100644 --- a/saleor/static/dashboard-next/components/Dropzone.tsx +++ b/saleor/static/dashboard-next/components/Dropzone.tsx @@ -1,3 +1,3 @@ /* tslint:disable:no-submodule-imports */ -import * as Dropzone from "react-dropzone/dist/index"; +import Dropzone from "react-dropzone/dist/index"; export default Dropzone; diff --git a/saleor/static/dashboard-next/components/EditableTableCell/EditableTableCell.tsx b/saleor/static/dashboard-next/components/EditableTableCell/EditableTableCell.tsx index 7438e0762a9..594c244cadb 100644 --- a/saleor/static/dashboard-next/components/EditableTableCell/EditableTableCell.tsx +++ b/saleor/static/dashboard-next/components/EditableTableCell/EditableTableCell.tsx @@ -9,10 +9,10 @@ import { import TableCell from "@material-ui/core/TableCell"; import TextField, { TextFieldProps } from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; -import Form from "@saleor/components/Form"; +import useForm from "@saleor/hooks/useForm"; const styles = (theme: Theme) => createStyles({ @@ -66,48 +66,39 @@ export const EditableTableCell = withStyles(styles, { value, onConfirm }: EditableTableCellProps) => { - const [opened, setOpenStatus] = React.useState(focused); - const enable = () => setOpenStatus(true); - const disable = () => setOpenStatus(false); - const handleConfirm = (data: { value: string }) => { disable(); onConfirm(data.value); }; + const [opened, setOpenStatus] = React.useState(focused); + const { change, data } = useForm({ value }, [], handleConfirm); + const enable = () => setOpenStatus(true); + const disable = () => setOpenStatus(false); + return ( {opened &&
} -
- {({ change, data }) => ( - <> - - {value || defaultValue} - - {opened && ( -
- - - - - -
- )} - - )} -
+ + {value || defaultValue} + + {opened && ( +
+ + + + + +
+ )} ); } diff --git a/saleor/static/dashboard-next/components/ErrorMessageCard/ErrorMessageCard.tsx b/saleor/static/dashboard-next/components/ErrorMessageCard/ErrorMessageCard.tsx index ed64be6f252..f3d4ed6abe0 100644 --- a/saleor/static/dashboard-next/components/ErrorMessageCard/ErrorMessageCard.tsx +++ b/saleor/static/dashboard-next/components/ErrorMessageCard/ErrorMessageCard.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/ErrorPage/ErrorPage.tsx b/saleor/static/dashboard-next/components/ErrorPage/ErrorPage.tsx index f2a096b038c..fa45cc42595 100644 --- a/saleor/static/dashboard-next/components/ErrorPage/ErrorPage.tsx +++ b/saleor/static/dashboard-next/components/ErrorPage/ErrorPage.tsx @@ -6,10 +6,10 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import SVG from "react-inlinesvg"; -import * as notFoundImage from "../../../images/what.svg"; +import notFoundImage from "../../../images/what.svg"; import i18n from "../../i18n"; export interface ErrorPageProps extends WithStyles { diff --git a/saleor/static/dashboard-next/components/ExtendedPageHeader/ExtendedPageHeader.tsx b/saleor/static/dashboard-next/components/ExtendedPageHeader/ExtendedPageHeader.tsx index 52affe67fe9..7a71d6375f2 100644 --- a/saleor/static/dashboard-next/components/ExtendedPageHeader/ExtendedPageHeader.tsx +++ b/saleor/static/dashboard-next/components/ExtendedPageHeader/ExtendedPageHeader.tsx @@ -4,8 +4,8 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/ExternalLink/ExternalLink.tsx b/saleor/static/dashboard-next/components/ExternalLink/ExternalLink.tsx index d3b64db1ddc..3255f54eab2 100644 --- a/saleor/static/dashboard-next/components/ExternalLink/ExternalLink.tsx +++ b/saleor/static/dashboard-next/components/ExternalLink/ExternalLink.tsx @@ -1,6 +1,6 @@ import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import Typography, { TypographyProps } from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; const styles = createStyles({ link: { diff --git a/saleor/static/dashboard-next/components/FileUpload/FileUpload.tsx b/saleor/static/dashboard-next/components/FileUpload/FileUpload.tsx index ecccddd38da..6d07f8fa4e3 100644 --- a/saleor/static/dashboard-next/components/FileUpload/FileUpload.tsx +++ b/saleor/static/dashboard-next/components/FileUpload/FileUpload.tsx @@ -1,7 +1,7 @@ import Button from "@material-ui/core/Button"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; const styles = createStyles({ diff --git a/saleor/static/dashboard-next/components/Filter/Filter.tsx b/saleor/static/dashboard-next/components/Filter/Filter.tsx index 8e31b8ea479..fa32d49ae4e 100644 --- a/saleor/static/dashboard-next/components/Filter/Filter.tsx +++ b/saleor/static/dashboard-next/components/Filter/Filter.tsx @@ -11,8 +11,8 @@ import { import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import ArrowDropDownIcon from "@material-ui/icons/ArrowDropDown"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import { FilterContent } from "."; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/Filter/FilterContent.tsx b/saleor/static/dashboard-next/components/Filter/FilterContent.tsx index 3822d8cdb02..7df9ce86c66 100644 --- a/saleor/static/dashboard-next/components/Filter/FilterContent.tsx +++ b/saleor/static/dashboard-next/components/Filter/FilterContent.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import { makeStyles } from "@material-ui/styles"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/Filter/FilterElement.tsx b/saleor/static/dashboard-next/components/Filter/FilterElement.tsx index 590ebffff89..202aab160d5 100644 --- a/saleor/static/dashboard-next/components/Filter/FilterElement.tsx +++ b/saleor/static/dashboard-next/components/Filter/FilterElement.tsx @@ -1,7 +1,7 @@ import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import { makeStyles } from "@material-ui/styles"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import Calendar from "../../icons/Calendar"; diff --git a/saleor/static/dashboard-next/components/FilterBar/FilterBar.tsx b/saleor/static/dashboard-next/components/FilterBar/FilterBar.tsx index e8a75a22990..f5adc696d9a 100644 --- a/saleor/static/dashboard-next/components/FilterBar/FilterBar.tsx +++ b/saleor/static/dashboard-next/components/FilterBar/FilterBar.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import { FilterProps } from "../../types"; @@ -41,6 +41,7 @@ const FilterBar: React.FC = ({ onTabChange(tabIndex + 1)} label={tab.name} + key={tabIndex} /> ))} {isCustom && ( diff --git a/saleor/static/dashboard-next/components/FilterCard/FilterCard.tsx b/saleor/static/dashboard-next/components/FilterCard/FilterCard.tsx index 2a03d0fa828..30d18c6a82c 100644 --- a/saleor/static/dashboard-next/components/FilterCard/FilterCard.tsx +++ b/saleor/static/dashboard-next/components/FilterCard/FilterCard.tsx @@ -3,7 +3,7 @@ import CardContent from "@material-ui/core/CardContent"; import CardHeader from "@material-ui/core/CardHeader"; import IconButton from "@material-ui/core/IconButton"; import RefreshIcon from "@material-ui/icons/Refresh"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/Form/Form.tsx b/saleor/static/dashboard-next/components/Form/Form.tsx index 7b19a244b4a..25512cf5734 100644 --- a/saleor/static/dashboard-next/components/Form/Form.tsx +++ b/saleor/static/dashboard-next/components/Form/Form.tsx @@ -1,170 +1,42 @@ -import * as React from "react"; -import { UserError } from "../../types"; +import React from "react"; -export interface FormProps { - children: (props: { - data: T; - hasChanged: boolean; - errors: { [key: string]: string }; - change(event: React.ChangeEvent, cb?: () => void); - reset(); - submit(event?: React.FormEvent); - }) => React.ReactElement; +import useForm, { UseFormResult } from "@saleor/hooks/useForm"; +import { UserError } from "@saleor/types"; + +export interface FormProps { + children: (props: UseFormResult) => React.ReactNode; + confirmLeave?: boolean; errors?: UserError[]; initial?: T; - confirmLeave?: boolean; - useForm?: boolean; resetOnSubmit?: boolean; - onSubmit?(data: T); -} - -interface FormComponentProps extends FormProps { - hasChanged: boolean; - toggleFormChangeState: () => void; -} - -interface FormState { - initial: T; - fields: T; - hasChanged: boolean; + onSubmit?: (data: T) => void; } -class FormComponent extends React.Component< - FormComponentProps, - FormState -> { - static getDerivedStateFromProps( - nextProps: FormComponentProps, - prevState: FormState - ): FormState { - const changedFields = Object.keys(nextProps.initial).filter( - nextFieldName => - JSON.stringify(nextProps.initial[nextFieldName]) !== - JSON.stringify(prevState.initial[nextFieldName]) - ); - if (changedFields.length > 0) { - const swapFields = changedFields.reduce((prev, curr) => { - prev[curr] = nextProps.initial[curr]; - return prev; - }, {}); - - return { - fields: { - ...(prevState.fields as any), - ...swapFields - }, - hasChanged: false, - initial: { - ...(prevState.initial as any), - ...swapFields - } - }; - } - return null; - } - - state: FormState = { - fields: this.props.initial, - hasChanged: false, - initial: this.props.initial - }; - - componentDidUpdate() { - const { hasChanged, confirmLeave, toggleFormChangeState } = this.props; - if (this.state.hasChanged !== hasChanged && confirmLeave) { - toggleFormChangeState(); - } - } +function Form(props: FormProps) { + const { children, errors, initial, resetOnSubmit, onSubmit } = props; + const renderProps = useForm(initial, errors, onSubmit); - componentDidMount() { - const { hasChanged, confirmLeave, toggleFormChangeState } = this.props; - if (this.state.hasChanged !== hasChanged && confirmLeave) { - toggleFormChangeState(); - } - } + function handleSubmit(event?: React.FormEvent, cb?: () => void) { + const { reset, submit } = renderProps; - componentWillUnmount() { - const { hasChanged, confirmLeave, toggleFormChangeState } = this.props; - if (hasChanged && confirmLeave) { - toggleFormChangeState(); - } - } - - handleChange = (event: React.ChangeEvent, cb?: () => void) => { - const { target } = event; - if (!(target.name in this.state.fields)) { - console.error(`Unknown form field: ${target.name}`); - return; - } - - this.setState( - { - fields: { - ...(this.state.fields as any), - [target.name]: target.value - }, - hasChanged: true - }, - typeof cb === "function" ? cb : undefined - ); - }; - - handleKeyDown = (event: React.KeyboardEvent) => { - switch (event.keyCode) { - // Enter - case 13: - this.props.onSubmit(this.state.fields); - break; - } - }; - - handleSubmit = (event?: React.FormEvent, cb?: () => void) => { - const { resetOnSubmit, onSubmit } = this.props; if (event) { event.stopPropagation(); event.preventDefault(); } - if (onSubmit !== undefined) { - onSubmit(this.state.fields); - } + if (cb) { cb(); } + if (resetOnSubmit) { - this.setState({ - fields: this.state.initial - }); + reset(); } - }; - - render() { - const { children, errors, useForm = true } = this.props; - const contents = children({ - change: this.handleChange, - data: this.state.fields, - errors: errors - ? errors.reduce( - (prev, curr) => ({ - ...prev, - [curr.field.split(":")[0]]: curr.message - }), - {} - ) - : {}, - hasChanged: this.state.hasChanged, - reset: () => - this.setState({ - fields: this.state.initial - }), - submit: this.handleSubmit - }); - - return useForm ? ( -
{contents}
- ) : ( -
{contents}
- ); + submit(); } + + return
{children(renderProps)}
; } -export default FormComponent; +Form.displayName = "Form"; + +export default Form; diff --git a/saleor/static/dashboard-next/components/Form/FormActions.tsx b/saleor/static/dashboard-next/components/Form/FormActions.tsx index 3a1a49a6f37..a6a26bf5392 100644 --- a/saleor/static/dashboard-next/components/Form/FormActions.tsx +++ b/saleor/static/dashboard-next/components/Form/FormActions.tsx @@ -1,7 +1,7 @@ import Button from "@material-ui/core/Button"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import Toolbar from "@material-ui/core/Toolbar"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/Form/FormContext.tsx b/saleor/static/dashboard-next/components/Form/FormContext.tsx deleted file mode 100644 index b8d73029cb3..00000000000 --- a/saleor/static/dashboard-next/components/Form/FormContext.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import * as React from "react"; - -import FormComponent, { FormProps } from "./Form"; - -interface IFormContext { - hasChanged: boolean; - toggle: () => void; -} - -export const FormContext = React.createContext(undefined); - -interface FormProviderState { - hasChanged: boolean; -} - -export class FormProvider extends React.Component<{}, FormProviderState> { - state: FormProviderState = { - hasChanged: false - }; - - toggle = () => - this.setState(prevState => ({ - hasChanged: !prevState.hasChanged - })); - - render() { - return ( - - {this.props.children} - - ); - } -} - -export function Form(props: FormProps) { - return ( - - {({ hasChanged, toggle }) => ( - - )} - - ); -} - -export default Form; diff --git a/saleor/static/dashboard-next/components/Form/index.ts b/saleor/static/dashboard-next/components/Form/index.ts index 1f0b7dda49b..98ebc8cc61b 100644 --- a/saleor/static/dashboard-next/components/Form/index.ts +++ b/saleor/static/dashboard-next/components/Form/index.ts @@ -1,5 +1,4 @@ export * from "./Form"; +export { default } from "./Form"; export { default as FormActions } from "./FormActions"; export * from "./FormActions"; -export * from "./FormContext"; -export { default } from "./FormContext"; diff --git a/saleor/static/dashboard-next/components/FormSpacer.tsx b/saleor/static/dashboard-next/components/FormSpacer.tsx index 3401eb6cf29..0ab94843dee 100644 --- a/saleor/static/dashboard-next/components/FormSpacer.tsx +++ b/saleor/static/dashboard-next/components/FormSpacer.tsx @@ -4,7 +4,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/Grid/Grid.tsx b/saleor/static/dashboard-next/components/Grid/Grid.tsx index b5cc6664c00..31a58cd477a 100644 --- a/saleor/static/dashboard-next/components/Grid/Grid.tsx +++ b/saleor/static/dashboard-next/components/Grid/Grid.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; export type GridVariant = "default" | "inverted" | "uniform"; export interface GridProps extends WithStyles { diff --git a/saleor/static/dashboard-next/components/Hr.tsx b/saleor/static/dashboard-next/components/Hr.tsx index 4584340057f..63694a14b6d 100644 --- a/saleor/static/dashboard-next/components/Hr.tsx +++ b/saleor/static/dashboard-next/components/Hr.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; interface HrProps { className?: string; diff --git a/saleor/static/dashboard-next/components/IconButtonTableCell/IconButtonTableCell.tsx b/saleor/static/dashboard-next/components/IconButtonTableCell/IconButtonTableCell.tsx index 558891746a8..25bf1fed279 100644 --- a/saleor/static/dashboard-next/components/IconButtonTableCell/IconButtonTableCell.tsx +++ b/saleor/static/dashboard-next/components/IconButtonTableCell/IconButtonTableCell.tsx @@ -6,7 +6,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TableCell from "@material-ui/core/TableCell"; -import * as React from "react"; +import React from "react"; import { stopPropagation } from "../../misc"; import { ICONBUTTON_SIZE } from "../../theme"; diff --git a/saleor/static/dashboard-next/components/ImageTile/ImageTile.tsx b/saleor/static/dashboard-next/components/ImageTile/ImageTile.tsx index deb2c8f93dc..e1f320b4ee9 100644 --- a/saleor/static/dashboard-next/components/ImageTile/ImageTile.tsx +++ b/saleor/static/dashboard-next/components/ImageTile/ImageTile.tsx @@ -4,7 +4,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; diff --git a/saleor/static/dashboard-next/components/ImageUpload/ImageUpload.tsx b/saleor/static/dashboard-next/components/ImageUpload/ImageUpload.tsx index f6d75eb4dcc..92ae6571769 100644 --- a/saleor/static/dashboard-next/components/ImageUpload/ImageUpload.tsx +++ b/saleor/static/dashboard-next/components/ImageUpload/ImageUpload.tsx @@ -7,7 +7,7 @@ import { import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import ImageIcon from "../../icons/Image"; diff --git a/saleor/static/dashboard-next/components/LanguageSwitch/LanguageSwitch.tsx b/saleor/static/dashboard-next/components/LanguageSwitch/LanguageSwitch.tsx index 1ec7e5a5bae..c0aa61af23e 100644 --- a/saleor/static/dashboard-next/components/LanguageSwitch/LanguageSwitch.tsx +++ b/saleor/static/dashboard-next/components/LanguageSwitch/LanguageSwitch.tsx @@ -14,7 +14,7 @@ import { import Typography from "@material-ui/core/Typography"; import ArrowDropDown from "@material-ui/icons/ArrowDropDown"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import { LanguageCodeEnum } from "../../types/globalTypes"; diff --git a/saleor/static/dashboard-next/components/Link.tsx b/saleor/static/dashboard-next/components/Link.tsx index 6ee63d19295..762cd74a86d 100644 --- a/saleor/static/dashboard-next/components/Link.tsx +++ b/saleor/static/dashboard-next/components/Link.tsx @@ -5,8 +5,8 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography, { TypographyProps } from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/ListField/ListField.tsx b/saleor/static/dashboard-next/components/ListField/ListField.tsx index 67ffc58c9ff..ff05b84b65f 100644 --- a/saleor/static/dashboard-next/components/ListField/ListField.tsx +++ b/saleor/static/dashboard-next/components/ListField/ListField.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField, { StandardTextFieldProps } from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import Chip from "../Chip"; diff --git a/saleor/static/dashboard-next/components/Locale/Locale.tsx b/saleor/static/dashboard-next/components/Locale/Locale.tsx index 05c19a5133d..d1d4fd023b8 100644 --- a/saleor/static/dashboard-next/components/Locale/Locale.tsx +++ b/saleor/static/dashboard-next/components/Locale/Locale.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; export const LocaleContext = React.createContext("en"); diff --git a/saleor/static/dashboard-next/components/MenuToggle.tsx b/saleor/static/dashboard-next/components/MenuToggle.tsx index 54ed5548e27..dc27ecccfc2 100644 --- a/saleor/static/dashboard-next/components/MenuToggle.tsx +++ b/saleor/static/dashboard-next/components/MenuToggle.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; interface MenuToggleProps { ariaOwns?: string; diff --git a/saleor/static/dashboard-next/components/Money/Money.tsx b/saleor/static/dashboard-next/components/Money/Money.tsx index 62ba7aaaaeb..164a34af9ad 100644 --- a/saleor/static/dashboard-next/components/Money/Money.tsx +++ b/saleor/static/dashboard-next/components/Money/Money.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { LocaleConsumer } from "../Locale"; diff --git a/saleor/static/dashboard-next/components/MoneyRange/MoneyRange.tsx b/saleor/static/dashboard-next/components/MoneyRange/MoneyRange.tsx index c2d1ac1038c..afcb8a564d2 100644 --- a/saleor/static/dashboard-next/components/MoneyRange/MoneyRange.tsx +++ b/saleor/static/dashboard-next/components/MoneyRange/MoneyRange.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import { LocaleConsumer } from "../Locale"; diff --git a/saleor/static/dashboard-next/components/MultiAutocompleteSelectField/MultiAutocompleteSelectField.tsx b/saleor/static/dashboard-next/components/MultiAutocompleteSelectField/MultiAutocompleteSelectField.tsx index ed8d7452f7b..0c177fc5ea5 100644 --- a/saleor/static/dashboard-next/components/MultiAutocompleteSelectField/MultiAutocompleteSelectField.tsx +++ b/saleor/static/dashboard-next/components/MultiAutocompleteSelectField/MultiAutocompleteSelectField.tsx @@ -9,7 +9,7 @@ import { } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Downshift, { ControllerStateAndHelpers } from "downshift"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import ArrowDropdownIcon from "../../icons/ArrowDropdown"; diff --git a/saleor/static/dashboard-next/components/MultiSelectField/MultiSelectField.tsx b/saleor/static/dashboard-next/components/MultiSelectField/MultiSelectField.tsx index 4d11946b706..5fdda787cb4 100644 --- a/saleor/static/dashboard-next/components/MultiSelectField/MultiSelectField.tsx +++ b/saleor/static/dashboard-next/components/MultiSelectField/MultiSelectField.tsx @@ -10,7 +10,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import Checkbox from "../Checkbox"; diff --git a/saleor/static/dashboard-next/components/NotFoundPage/NotFoundPage.tsx b/saleor/static/dashboard-next/components/NotFoundPage/NotFoundPage.tsx index 7b981e08679..143290c4445 100644 --- a/saleor/static/dashboard-next/components/NotFoundPage/NotFoundPage.tsx +++ b/saleor/static/dashboard-next/components/NotFoundPage/NotFoundPage.tsx @@ -6,10 +6,10 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import SVG from "react-inlinesvg"; -import * as notFoundImage from "../../../images/not-found-404.svg"; +import notFoundImage from "../../../images/not-found-404.svg"; import i18n from "../../i18n"; const styles = (theme: Theme) => diff --git a/saleor/static/dashboard-next/components/PageHeader/PageHeader.tsx b/saleor/static/dashboard-next/components/PageHeader/PageHeader.tsx index 8c20e8186c2..1fc53ec1c37 100644 --- a/saleor/static/dashboard-next/components/PageHeader/PageHeader.tsx +++ b/saleor/static/dashboard-next/components/PageHeader/PageHeader.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import ExtendedPageHeader from "../ExtendedPageHeader"; import Skeleton from "../Skeleton"; diff --git a/saleor/static/dashboard-next/components/Percent/Percent.tsx b/saleor/static/dashboard-next/components/Percent/Percent.tsx index dc34ff8a96f..ee6ed35e365 100644 --- a/saleor/static/dashboard-next/components/Percent/Percent.tsx +++ b/saleor/static/dashboard-next/components/Percent/Percent.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { LocaleConsumer } from "../Locale"; diff --git a/saleor/static/dashboard-next/components/PhoneField/PhoneField.tsx b/saleor/static/dashboard-next/components/PhoneField/PhoneField.tsx index 800b8affb2c..0c026786421 100644 --- a/saleor/static/dashboard-next/components/PhoneField/PhoneField.tsx +++ b/saleor/static/dashboard-next/components/PhoneField/PhoneField.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import SingleSelectField from "@saleor/components/SingleSelectField"; diff --git a/saleor/static/dashboard-next/components/PriceField/PriceField.tsx b/saleor/static/dashboard-next/components/PriceField/PriceField.tsx index 684da90e246..847ac055d10 100644 --- a/saleor/static/dashboard-next/components/PriceField/PriceField.tsx +++ b/saleor/static/dashboard-next/components/PriceField/PriceField.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/ProductList/ProductList.tsx b/saleor/static/dashboard-next/components/ProductList/ProductList.tsx index 4b760b0d568..ccbe45ffef1 100644 --- a/saleor/static/dashboard-next/components/ProductList/ProductList.tsx +++ b/saleor/static/dashboard-next/components/ProductList/ProductList.tsx @@ -9,7 +9,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import TableCellAvatar from "@saleor/components/TableCellAvatar"; import { CategoryDetails_category_products_edges_node } from "../../categories/types/CategoryDetails"; diff --git a/saleor/static/dashboard-next/components/RadioGroupField/RadioGroupField.tsx b/saleor/static/dashboard-next/components/RadioGroupField/RadioGroupField.tsx new file mode 100644 index 00000000000..b87ecda29b1 --- /dev/null +++ b/saleor/static/dashboard-next/components/RadioGroupField/RadioGroupField.tsx @@ -0,0 +1,95 @@ +import FormControl from "@material-ui/core/FormControl"; +import FormControlLabel from "@material-ui/core/FormControlLabel"; +import FormHelperText from "@material-ui/core/FormHelperText"; +import FormLabel from "@material-ui/core/FormLabel"; +import MenuItem from "@material-ui/core/MenuItem"; +import Radio from "@material-ui/core/Radio"; +import RadioGroup from "@material-ui/core/RadioGroup"; +import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import classNames from "classnames"; +import * as React from "react"; + +import i18n from "../../i18n"; + +const styles = createStyles({ + formControl: { + padding: "0 15px", + width: "100%" + }, + formLabel: { + marginLeft: "-5px", + paddingBottom: "10px" + }, + radioLabel: { + "& > span": { + padding: "6px" + } + } +}); + +interface RadioGroupFieldProps extends WithStyles { + choices: Array<{ + value: string; + label: string | React.ReactNode; + }>; + className?: string; + disabled?: boolean; + error?: boolean; + hint?: string; + label?: string; + name?: string; + value?: string; + onChange: (event: React.ChangeEvent) => void; +} + +export const RadioGroupField = withStyles(styles, { + name: "RadioGroupField" +})( + ({ + className, + classes, + disabled, + error, + label, + choices, + value, + onChange, + name, + hint + }: RadioGroupFieldProps) => { + return ( + + {label ? ( + {label} + ) : null} + + {choices.length > 0 ? ( + choices.map(choice => ( + } + label={choice.label} + key={choice.value} + /> + )) + ) : ( + {i18n.t("No results found")} + )} + + {hint && {hint}} + + ); + } +); +RadioGroupField.displayName = "RadioGroupField"; +export default RadioGroupField; diff --git a/saleor/static/dashboard-next/components/RadioGroupField/index.ts b/saleor/static/dashboard-next/components/RadioGroupField/index.ts new file mode 100644 index 00000000000..58ebd26ab1d --- /dev/null +++ b/saleor/static/dashboard-next/components/RadioGroupField/index.ts @@ -0,0 +1,2 @@ +export { default } from "./RadioGroupField"; +export * from "./RadioGroupField"; diff --git a/saleor/static/dashboard-next/components/RichTextEditor/ImageEntity.tsx b/saleor/static/dashboard-next/components/RichTextEditor/ImageEntity.tsx index b676114a55b..4bf9721c011 100644 --- a/saleor/static/dashboard-next/components/RichTextEditor/ImageEntity.tsx +++ b/saleor/static/dashboard-next/components/RichTextEditor/ImageEntity.tsx @@ -12,7 +12,7 @@ import { } from "@material-ui/core/styles"; import DeleteIcon from "@material-ui/icons/Delete"; import { ContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/RichTextEditor/ImageSource.tsx b/saleor/static/dashboard-next/components/RichTextEditor/ImageSource.tsx index 698c846ab2b..d238bc09f63 100644 --- a/saleor/static/dashboard-next/components/RichTextEditor/ImageSource.tsx +++ b/saleor/static/dashboard-next/components/RichTextEditor/ImageSource.tsx @@ -5,7 +5,7 @@ import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; import { AtomicBlockUtils, EditorState, EntityInstance } from "draft-js"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import Form from "../Form"; diff --git a/saleor/static/dashboard-next/components/RichTextEditor/LinkEntity.tsx b/saleor/static/dashboard-next/components/RichTextEditor/LinkEntity.tsx index a056af2c908..ac8080b43ba 100644 --- a/saleor/static/dashboard-next/components/RichTextEditor/LinkEntity.tsx +++ b/saleor/static/dashboard-next/components/RichTextEditor/LinkEntity.tsx @@ -13,7 +13,7 @@ import { import Typography from "@material-ui/core/Typography"; import DeleteIcon from "@material-ui/icons/Delete"; import { ContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import Link from "../Link"; @@ -38,6 +38,9 @@ const styles = (theme: Theme) => inline: { display: "inline-block" }, + popover: { + zIndex: 1 + }, root: { alignItems: "center", display: "flex", @@ -76,6 +79,7 @@ const LinkEntity = withStyles(styles, { <>
- {contentState.getEntity(entityKey).getData().href} + {contentState.getEntity(entityKey).getData().url}
{children} diff --git a/saleor/static/dashboard-next/components/RichTextEditor/LinkSource.tsx b/saleor/static/dashboard-next/components/RichTextEditor/LinkSource.tsx index 562f8faefc8..bbf17eda0f1 100644 --- a/saleor/static/dashboard-next/components/RichTextEditor/LinkSource.tsx +++ b/saleor/static/dashboard-next/components/RichTextEditor/LinkSource.tsx @@ -5,7 +5,7 @@ import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; import { EditorState, EntityInstance, RichUtils } from "draft-js"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import Form from "../Form"; @@ -21,15 +21,15 @@ interface LinkSourceProps { } class LinkSource extends React.Component { - submit = (href: string) => { + submit = (url: string) => { const { editorState, entityType, onComplete } = this.props; - if (href) { + if (url) { const content = editorState.getCurrentContent(); const contentWithEntity = content.createEntity( entityType.type, "MUTABLE", - { href } + { url } ); const entityKey = contentWithEntity.getLastCreatedEntityKey(); const newEditorState = EditorState.set(editorState, { @@ -49,23 +49,23 @@ class LinkSource extends React.Component { render() { const { entity, onClose } = this.props; - const initial = entity ? entity.getData().href : ""; + const initial = entity ? entity.getData().url : ""; return (
this.submit(href)} + initial={{ url: initial }} + onSubmit={({ url }) => this.submit(url)} > {({ data, change, submit }) => ( <> {i18n.t("Add or Edit Link")} diff --git a/saleor/static/dashboard-next/components/RichTextEditor/RichTextEditor.tsx b/saleor/static/dashboard-next/components/RichTextEditor/RichTextEditor.tsx index 3118e083b93..2e2b39bdbd5 100644 --- a/saleor/static/dashboard-next/components/RichTextEditor/RichTextEditor.tsx +++ b/saleor/static/dashboard-next/components/RichTextEditor/RichTextEditor.tsx @@ -6,7 +6,7 @@ import { } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; -import * as classNames from "classnames"; +import classNames from "classnames"; import { RawDraftContentState } from "draft-js"; import { BLOCK_TYPE, @@ -14,7 +14,7 @@ import { ENTITY_TYPE, INLINE_STYLE } from "draftail"; -import * as React from "react"; +import React from "react"; import BoldIcon from "../../icons/BoldIcon"; import HeaderOne from "../../icons/HeaderOne"; @@ -188,7 +188,11 @@ const styles = (theme: Theme) => background: theme.palette.background.default, border: `1px ${theme.overrides.MuiCard.root.borderColor} solid`, display: "inline-flex", - marginBottom: theme.spacing.unit + flexWrap: "wrap", + marginBottom: theme.spacing.unit, + [theme.breakpoints.down(460)]: { + width: "min-content" + } }, "&-block": { "&--blockquote": { @@ -302,7 +306,7 @@ const RichTextEditor = withStyles(styles, { name: "RichTextEditor" })( enableLineBreak entityTypes={[ { - attributes: ["href"], + attributes: ["url"], decorator: LinkEntity, icon: , source: LinkSource, diff --git a/saleor/static/dashboard-next/components/SaveButtonBar/SaveButtonBar.tsx b/saleor/static/dashboard-next/components/SaveButtonBar/SaveButtonBar.tsx index 4fb7a8bfc4a..8ed381f208c 100644 --- a/saleor/static/dashboard-next/components/SaveButtonBar/SaveButtonBar.tsx +++ b/saleor/static/dashboard-next/components/SaveButtonBar/SaveButtonBar.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import useScroll from "@saleor/hooks/useScroll"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/SaveFilterTabDialog/SaveFilterTabDialog.tsx b/saleor/static/dashboard-next/components/SaveFilterTabDialog/SaveFilterTabDialog.tsx index 4980a9540cb..5b26158f34d 100644 --- a/saleor/static/dashboard-next/components/SaveFilterTabDialog/SaveFilterTabDialog.tsx +++ b/saleor/static/dashboard-next/components/SaveFilterTabDialog/SaveFilterTabDialog.tsx @@ -4,7 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import ConfirmButton, { ConfirmButtonTransitionState } from "../ConfirmButton"; @@ -30,44 +30,58 @@ const SaveFilterTabDialog: React.FC = ({ onClose, onSubmit, open -}) => ( - - - {i18n.t("Save Custom Search", { - context: "save filter tab" - })} - - - {({ change, data, submit }) => ( - <> - - - - - - - {i18n.t("Save")} - - - - )} - - -); +}) => { + const [errors, setErrors] = React.useState(false); + const handleErrors = data => { + if (data.name.length) { + onSubmit(data); + setErrors(false); + } else { + setErrors(true); + } + }; + + return ( + + + {i18n.t("Save Custom Search", { + context: "save filter tab" + })} + +
+ {({ change, data, submit }) => ( + <> + + + + + + + {i18n.t("Save")} + + + + )} +
+
+ ); +}; SaveFilterTabDialog.displayName = "SaveFilterTabDialog"; export default SaveFilterTabDialog; diff --git a/saleor/static/dashboard-next/components/SeoForm/SeoForm.tsx b/saleor/static/dashboard-next/components/SeoForm/SeoForm.tsx index c4af34cdc74..25d56ae28fd 100644 --- a/saleor/static/dashboard-next/components/SeoForm/SeoForm.tsx +++ b/saleor/static/dashboard-next/components/SeoForm/SeoForm.tsx @@ -9,8 +9,8 @@ import { } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import i18n from "../../i18n"; import CardTitle from "../CardTitle"; diff --git a/saleor/static/dashboard-next/components/Shop/index.tsx b/saleor/static/dashboard-next/components/Shop/index.tsx index 1c3a017c28a..5c9e5979938 100644 --- a/saleor/static/dashboard-next/components/Shop/index.tsx +++ b/saleor/static/dashboard-next/components/Shop/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { TypedShopInfoQuery } from "./query"; import { ShopInfo_shop } from "./types/ShopInfo"; diff --git a/saleor/static/dashboard-next/components/SingleAutocompleteSelectField/SingleAutocompleteSelectField.tsx b/saleor/static/dashboard-next/components/SingleAutocompleteSelectField/SingleAutocompleteSelectField.tsx index 3d798cf65d5..74c47c9db07 100644 --- a/saleor/static/dashboard-next/components/SingleAutocompleteSelectField/SingleAutocompleteSelectField.tsx +++ b/saleor/static/dashboard-next/components/SingleAutocompleteSelectField/SingleAutocompleteSelectField.tsx @@ -10,7 +10,7 @@ import { } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Downshift from "downshift"; -import * as React from "react"; +import React from "react"; import { compareTwoStrings } from "string-similarity"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/SingleSelectField/SingleSelectField.tsx b/saleor/static/dashboard-next/components/SingleSelectField/SingleSelectField.tsx index 695c297840b..22ee50c970b 100644 --- a/saleor/static/dashboard-next/components/SingleSelectField/SingleSelectField.tsx +++ b/saleor/static/dashboard-next/components/SingleSelectField/SingleSelectField.tsx @@ -6,7 +6,7 @@ import MenuItem from "@material-ui/core/MenuItem"; import Select, { SelectProps } from "@material-ui/core/Select"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; diff --git a/saleor/static/dashboard-next/components/Skeleton.tsx b/saleor/static/dashboard-next/components/Skeleton.tsx index ef5d8b7ecd9..5bcefc19414 100644 --- a/saleor/static/dashboard-next/components/Skeleton.tsx +++ b/saleor/static/dashboard-next/components/Skeleton.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/StatusLabel/StatusLabel.tsx b/saleor/static/dashboard-next/components/StatusLabel/StatusLabel.tsx index f3be842dac3..267dcb89b8d 100644 --- a/saleor/static/dashboard-next/components/StatusLabel/StatusLabel.tsx +++ b/saleor/static/dashboard-next/components/StatusLabel/StatusLabel.tsx @@ -6,8 +6,8 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography, { TypographyProps } from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; const styles = (theme: Theme) => { const dot = { diff --git a/saleor/static/dashboard-next/components/Tab/Tab.tsx b/saleor/static/dashboard-next/components/Tab/Tab.tsx index 1b74444e591..595845b1c96 100644 --- a/saleor/static/dashboard-next/components/Tab/Tab.tsx +++ b/saleor/static/dashboard-next/components/Tab/Tab.tsx @@ -5,8 +5,8 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/Tab/TabContainer.tsx b/saleor/static/dashboard-next/components/Tab/TabContainer.tsx index b266e8929e9..e7562069f83 100644 --- a/saleor/static/dashboard-next/components/Tab/TabContainer.tsx +++ b/saleor/static/dashboard-next/components/Tab/TabContainer.tsx @@ -4,7 +4,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; export interface TabContainerProps { children: React.ReactNode | React.ReactNodeArray; diff --git a/saleor/static/dashboard-next/components/Tab/Tabs.tsx b/saleor/static/dashboard-next/components/Tab/Tabs.tsx index 5eb09a3ff64..4295530192d 100644 --- a/saleor/static/dashboard-next/components/Tab/Tabs.tsx +++ b/saleor/static/dashboard-next/components/Tab/Tabs.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; export interface TabsProps { children: ( diff --git a/saleor/static/dashboard-next/components/TableCellAvatar/TableCellAvatar.tsx b/saleor/static/dashboard-next/components/TableCellAvatar/TableCellAvatar.tsx index 369694ff993..7a4bdee9d87 100644 --- a/saleor/static/dashboard-next/components/TableCellAvatar/TableCellAvatar.tsx +++ b/saleor/static/dashboard-next/components/TableCellAvatar/TableCellAvatar.tsx @@ -7,8 +7,8 @@ import { } from "@material-ui/core/styles"; import TableCell from "@material-ui/core/TableCell"; import Cached from "@material-ui/icons/Cached"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import Image from "../../icons/Image"; diff --git a/saleor/static/dashboard-next/components/TableFilter/FilterChips.tsx b/saleor/static/dashboard-next/components/TableFilter/FilterChips.tsx index a5101de022d..f75a77d83e8 100644 --- a/saleor/static/dashboard-next/components/TableFilter/FilterChips.tsx +++ b/saleor/static/dashboard-next/components/TableFilter/FilterChips.tsx @@ -5,7 +5,7 @@ import TextField, { TextFieldProps } from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import ClearIcon from "@material-ui/icons/Clear"; import { createStyles, makeStyles, useTheme } from "@material-ui/styles"; -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import Filter, { FilterContentSubmitData, IFilter } from "../Filter"; diff --git a/saleor/static/dashboard-next/components/TableFilter/FilterTab.tsx b/saleor/static/dashboard-next/components/TableFilter/FilterTab.tsx index e56e77fc5a6..462baf47892 100644 --- a/saleor/static/dashboard-next/components/TableFilter/FilterTab.tsx +++ b/saleor/static/dashboard-next/components/TableFilter/FilterTab.tsx @@ -6,7 +6,7 @@ import { } from "@material-ui/core/styles"; import Tab from "@material-ui/core/Tab"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/TableFilter/FilterTabs.tsx b/saleor/static/dashboard-next/components/TableFilter/FilterTabs.tsx index 380f6ca8fbb..ca89529ec76 100644 --- a/saleor/static/dashboard-next/components/TableFilter/FilterTabs.tsx +++ b/saleor/static/dashboard-next/components/TableFilter/FilterTabs.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Tabs from "@material-ui/core/Tabs"; -import * as React from "react"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/TableHead/TableHead.tsx b/saleor/static/dashboard-next/components/TableHead/TableHead.tsx index 5e65c6a5d59..6b0a22be70c 100644 --- a/saleor/static/dashboard-next/components/TableHead/TableHead.tsx +++ b/saleor/static/dashboard-next/components/TableHead/TableHead.tsx @@ -11,8 +11,8 @@ import MuiTableHead, { } from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import { Node } from "../../types"; diff --git a/saleor/static/dashboard-next/components/TablePagination/TablePagination.tsx b/saleor/static/dashboard-next/components/TablePagination/TablePagination.tsx index 93d149baadb..b5e9553f35d 100644 --- a/saleor/static/dashboard-next/components/TablePagination/TablePagination.tsx +++ b/saleor/static/dashboard-next/components/TablePagination/TablePagination.tsx @@ -9,7 +9,7 @@ import { } from "@material-ui/core/styles"; import TableCell from "@material-ui/core/TableCell"; import Toolbar from "@material-ui/core/Toolbar"; -import * as React from "react"; +import React from "react"; import TablePaginationActions from "./TablePaginationActions"; diff --git a/saleor/static/dashboard-next/components/TablePagination/TablePaginationActions.tsx b/saleor/static/dashboard-next/components/TablePagination/TablePaginationActions.tsx index a6ca7371564..d60a971744d 100644 --- a/saleor/static/dashboard-next/components/TablePagination/TablePaginationActions.tsx +++ b/saleor/static/dashboard-next/components/TablePagination/TablePaginationActions.tsx @@ -9,8 +9,8 @@ import { fade } from "@material-ui/core/styles/colorManipulator"; import ArrowLeft from "@material-ui/icons/ArrowLeft"; import ArrowRight from "@material-ui/icons/ArrowRight"; import useTheme from "@saleor/hooks/useTheme"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/components/TextFieldWithChoice/TextFieldWithChoice.tsx b/saleor/static/dashboard-next/components/TextFieldWithChoice/TextFieldWithChoice.tsx index 07b311710a2..2bf8c64083b 100644 --- a/saleor/static/dashboard-next/components/TextFieldWithChoice/TextFieldWithChoice.tsx +++ b/saleor/static/dashboard-next/components/TextFieldWithChoice/TextFieldWithChoice.tsx @@ -8,7 +8,7 @@ import { createStyles, WithStyles, withStyles } from "@material-ui/core/styles"; import TextField, { TextFieldProps } from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import DropdownIcon from "@material-ui/icons/ArrowDropDown"; -import * as React from "react"; +import React from "react"; import MenuToggle from "../MenuToggle"; @@ -78,7 +78,7 @@ const TextFieldWithChoice = withStyles(styles, { {ChoiceProps.label} - + {ChoiceProps.values ? : null}
(undefined); const { diff --git a/saleor/static/dashboard-next/components/VisibilityCard/VisibilityCard.tsx b/saleor/static/dashboard-next/components/VisibilityCard/VisibilityCard.tsx index 5600ff2d3df..6cb01c85342 100644 --- a/saleor/static/dashboard-next/components/VisibilityCard/VisibilityCard.tsx +++ b/saleor/static/dashboard-next/components/VisibilityCard/VisibilityCard.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import ControlledSwitch from "@saleor/components/ControlledSwitch"; diff --git a/saleor/static/dashboard-next/components/Weight/Weight.tsx b/saleor/static/dashboard-next/components/Weight/Weight.tsx index 35defbf0b5d..02988b911c8 100644 --- a/saleor/static/dashboard-next/components/Weight/Weight.tsx +++ b/saleor/static/dashboard-next/components/Weight/Weight.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; export interface Weight { diff --git a/saleor/static/dashboard-next/components/WeightRange/WeightRange.tsx b/saleor/static/dashboard-next/components/WeightRange/WeightRange.tsx index 2552fae6886..c7a789527a0 100644 --- a/saleor/static/dashboard-next/components/WeightRange/WeightRange.tsx +++ b/saleor/static/dashboard-next/components/WeightRange/WeightRange.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import i18n from "../../i18n"; import { Weight } from "../Weight"; diff --git a/saleor/static/dashboard-next/components/WindowTitle/index.tsx b/saleor/static/dashboard-next/components/WindowTitle/index.tsx index 63c99f54ba4..a06c2cd183d 100644 --- a/saleor/static/dashboard-next/components/WindowTitle/index.tsx +++ b/saleor/static/dashboard-next/components/WindowTitle/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import useShop from "@saleor/hooks/useShop"; diff --git a/saleor/static/dashboard-next/components/messages/MessageManager.tsx b/saleor/static/dashboard-next/components/messages/MessageManager.tsx index b698d0dc3e5..12bce2e46fe 100644 --- a/saleor/static/dashboard-next/components/messages/MessageManager.tsx +++ b/saleor/static/dashboard-next/components/messages/MessageManager.tsx @@ -2,7 +2,7 @@ import Button from "@material-ui/core/Button"; import IconButton from "@material-ui/core/IconButton"; import Snackbar from "@material-ui/core/Snackbar"; import CloseIcon from "@material-ui/icons/Close"; -import * as React from "react"; +import React from "react"; import { IMessage, MessageContext } from "./"; diff --git a/saleor/static/dashboard-next/configuration/ConfigurationPage.tsx b/saleor/static/dashboard-next/configuration/ConfigurationPage.tsx index 8466c11c0e4..48463ae22d4 100644 --- a/saleor/static/dashboard-next/configuration/ConfigurationPage.tsx +++ b/saleor/static/dashboard-next/configuration/ConfigurationPage.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import { IconProps } from "@material-ui/core/Icon"; import { User } from "../auth/types/User"; diff --git a/saleor/static/dashboard-next/configuration/index.tsx b/saleor/static/dashboard-next/configuration/index.tsx index 78a406ee2dc..9eeeb747e26 100644 --- a/saleor/static/dashboard-next/configuration/index.tsx +++ b/saleor/static/dashboard-next/configuration/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import useNavigator from "@saleor/hooks/useNavigator"; import useUser from "@saleor/hooks/useUser"; diff --git a/saleor/static/dashboard-next/containers/BaseSearch.tsx b/saleor/static/dashboard-next/containers/BaseSearch.tsx index 920d542d78b..0742edbc1ce 100644 --- a/saleor/static/dashboard-next/containers/BaseSearch.tsx +++ b/saleor/static/dashboard-next/containers/BaseSearch.tsx @@ -1,5 +1,5 @@ import { DocumentNode } from "graphql"; -import * as React from "react"; +import React from "react"; import Debounce from "../components/Debounce"; import { TypedQuery, TypedQueryResult } from "../queries"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerAddress/CustomerAddress.tsx b/saleor/static/dashboard-next/customers/components/CustomerAddress/CustomerAddress.tsx index a54e1557599..3cd7fbaec38 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerAddress/CustomerAddress.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerAddress/CustomerAddress.tsx @@ -4,7 +4,7 @@ import CardActions from "@material-ui/core/CardActions"; import CardContent from "@material-ui/core/CardContent"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import AddressFormatter from "@saleor/components/AddressFormatter"; import CardMenu from "@saleor/components/CardMenu"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerAddressDialog/CustomerAddressDialog.tsx b/saleor/static/dashboard-next/customers/components/CustomerAddressDialog/CustomerAddressDialog.tsx index b7dca9f12fa..dd2d77d809e 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerAddressDialog/CustomerAddressDialog.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerAddressDialog/CustomerAddressDialog.tsx @@ -5,7 +5,7 @@ import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import AddressEdit from "@saleor/components/AddressEdit"; import ConfirmButton, { diff --git a/saleor/static/dashboard-next/customers/components/CustomerAddressListPage/CustomerAddressListPage.tsx b/saleor/static/dashboard-next/customers/components/CustomerAddressListPage/CustomerAddressListPage.tsx index e6df42c582b..16817416a68 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerAddressListPage/CustomerAddressListPage.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerAddressListPage/CustomerAddressListPage.tsx @@ -7,7 +7,7 @@ import { } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import Container from "@saleor/components/Container"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerAddresses/CustomerAddresses.tsx b/saleor/static/dashboard-next/customers/components/CustomerAddresses/CustomerAddresses.tsx index ddc0ef85f17..54e1a28bf3a 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerAddresses/CustomerAddresses.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerAddresses/CustomerAddresses.tsx @@ -8,7 +8,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import AddressFormatter from "@saleor/components/AddressFormatter"; import CardTitle from "@saleor/components/CardTitle"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerCreateAddress/CustomerCreateAddress.tsx b/saleor/static/dashboard-next/customers/components/CustomerCreateAddress/CustomerCreateAddress.tsx index c5ce829bdbc..eb4e13fc7a3 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerCreateAddress/CustomerCreateAddress.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerCreateAddress/CustomerCreateAddress.tsx @@ -2,7 +2,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { createStyles, WithStyles, withStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import AddressEdit from "@saleor/components/AddressEdit"; import CardTitle from "@saleor/components/CardTitle"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerCreateDetails/CustomerCreateDetails.tsx b/saleor/static/dashboard-next/customers/components/CustomerCreateDetails/CustomerCreateDetails.tsx index e57113dc57f..db1ffec62c9 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerCreateDetails/CustomerCreateDetails.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerCreateDetails/CustomerCreateDetails.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerCreateNote/CustomerCreateNote.tsx b/saleor/static/dashboard-next/customers/components/CustomerCreateNote/CustomerCreateNote.tsx index f90e27cb691..e40d3bd48bd 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerCreateNote/CustomerCreateNote.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerCreateNote/CustomerCreateNote.tsx @@ -2,7 +2,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { FormSpacer } from "@saleor/components/FormSpacer"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerCreatePage/CustomerCreatePage.tsx b/saleor/static/dashboard-next/customers/components/CustomerCreatePage/CustomerCreatePage.tsx index 54e31600203..1894148a616 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerCreatePage/CustomerCreatePage.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerCreatePage/CustomerCreatePage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import { CardSpacer } from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerDetails/CustomerDetails.tsx b/saleor/static/dashboard-next/customers/components/CustomerDetails/CustomerDetails.tsx index d6f7693e07e..c564a56fef6 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerDetails/CustomerDetails.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerDetails/CustomerDetails.tsx @@ -8,8 +8,8 @@ import { } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import * as moment from "moment-timezone"; -import * as React from "react"; +import moment from "moment-timezone"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerDetailsPage/CustomerDetailsPage.tsx b/saleor/static/dashboard-next/customers/components/CustomerDetailsPage/CustomerDetailsPage.tsx index 041c0fe50bd..1e417f960b4 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerDetailsPage/CustomerDetailsPage.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerDetailsPage/CustomerDetailsPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import { CardSpacer } from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerList/CustomerList.tsx b/saleor/static/dashboard-next/customers/components/CustomerList/CustomerList.tsx index 2dfb3502183..8e2b1f17f1e 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerList/CustomerList.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerList/CustomerList.tsx @@ -10,7 +10,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerListPage/CustomerListPage.tsx b/saleor/static/dashboard-next/customers/components/CustomerListPage/CustomerListPage.tsx index d240eec3446..74e5aa6f3f3 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerListPage/CustomerListPage.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerListPage/CustomerListPage.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import Container from "@saleor/components/Container"; import PageHeader from "@saleor/components/PageHeader"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerOrders/CustomerOrders.tsx b/saleor/static/dashboard-next/customers/components/CustomerOrders/CustomerOrders.tsx index 25c22bbd174..f6883ca348d 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerOrders/CustomerOrders.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerOrders/CustomerOrders.tsx @@ -6,7 +6,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { DateTime } from "@saleor/components/Date"; diff --git a/saleor/static/dashboard-next/customers/components/CustomerStats/CustomerStats.tsx b/saleor/static/dashboard-next/customers/components/CustomerStats/CustomerStats.tsx index 58ca6d18f8a..1a2a0b4a63e 100644 --- a/saleor/static/dashboard-next/customers/components/CustomerStats/CustomerStats.tsx +++ b/saleor/static/dashboard-next/customers/components/CustomerStats/CustomerStats.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { DateTime } from "@saleor/components/Date"; diff --git a/saleor/static/dashboard-next/customers/index.tsx b/saleor/static/dashboard-next/customers/index.tsx index b06576887b6..7ea77efdab4 100644 --- a/saleor/static/dashboard-next/customers/index.tsx +++ b/saleor/static/dashboard-next/customers/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/customers/urls.ts b/saleor/static/dashboard-next/customers/urls.ts index 53662c0f5bc..baab66be7d5 100644 --- a/saleor/static/dashboard-next/customers/urls.ts +++ b/saleor/static/dashboard-next/customers/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { BulkAction, Dialog, Pagination, SingleAction } from "../types"; diff --git a/saleor/static/dashboard-next/customers/views/CustomerAddresses.tsx b/saleor/static/dashboard-next/customers/views/CustomerAddresses.tsx index 5e968036b0a..bbb4fb0dc5d 100644 --- a/saleor/static/dashboard-next/customers/views/CustomerAddresses.tsx +++ b/saleor/static/dashboard-next/customers/views/CustomerAddresses.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; diff --git a/saleor/static/dashboard-next/customers/views/CustomerCreate.tsx b/saleor/static/dashboard-next/customers/views/CustomerCreate.tsx index 62d83e07da1..f89a867d68b 100644 --- a/saleor/static/dashboard-next/customers/views/CustomerCreate.tsx +++ b/saleor/static/dashboard-next/customers/views/CustomerCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/customers/views/CustomerDetails.tsx b/saleor/static/dashboard-next/customers/views/CustomerDetails.tsx index e6e9ab6aa1e..d1e1b57b56f 100644 --- a/saleor/static/dashboard-next/customers/views/CustomerDetails.tsx +++ b/saleor/static/dashboard-next/customers/views/CustomerDetails.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; diff --git a/saleor/static/dashboard-next/customers/views/CustomerList.tsx b/saleor/static/dashboard-next/customers/views/CustomerList.tsx index 6961261af17..443dc1e9cec 100644 --- a/saleor/static/dashboard-next/customers/views/CustomerList.tsx +++ b/saleor/static/dashboard-next/customers/views/CustomerList.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; diff --git a/saleor/static/dashboard-next/discounts/components/DiscountCategories/DiscountCategories.tsx b/saleor/static/dashboard-next/discounts/components/DiscountCategories/DiscountCategories.tsx index a608481f516..b329a034cdb 100644 --- a/saleor/static/dashboard-next/discounts/components/DiscountCategories/DiscountCategories.tsx +++ b/saleor/static/dashboard-next/discounts/components/DiscountCategories/DiscountCategories.tsx @@ -13,7 +13,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Checkbox from "@saleor/components/Checkbox"; @@ -71,9 +71,7 @@ const DiscountCategories = withStyles(styles, { }: DiscountCategoriesProps & WithStyles) => ( sale.name) - })} + title={i18n.t("Eligible Categories")} toolbar={
; + onChange: (event: React.ChangeEvent) => void; +} + +const VoucherDates = ({ + data, + disabled, + errors, + onChange +}: VoucherDatesProps) => { + return ( + + + + + + + + + {data.hasEndDate && ( + + + + + )} + + + ); +}; +export default VoucherDates; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherDates/index.ts b/saleor/static/dashboard-next/discounts/components/VoucherDates/index.ts new file mode 100644 index 00000000000..da24480b60b --- /dev/null +++ b/saleor/static/dashboard-next/discounts/components/VoucherDates/index.ts @@ -0,0 +1,2 @@ +export { default } from "./VoucherDates"; +export * from "./VoucherDates"; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherDetailsPage/VoucherDetailsPage.tsx b/saleor/static/dashboard-next/discounts/components/VoucherDetailsPage/VoucherDetailsPage.tsx index fec9980d762..039e341036e 100644 --- a/saleor/static/dashboard-next/discounts/components/VoucherDetailsPage/VoucherDetailsPage.tsx +++ b/saleor/static/dashboard-next/discounts/components/VoucherDetailsPage/VoucherDetailsPage.tsx @@ -1,5 +1,5 @@ import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; @@ -12,19 +12,23 @@ import PageHeader from "@saleor/components/PageHeader"; import SaveButtonBar from "@saleor/components/SaveButtonBar"; import { Tab, TabContainer } from "@saleor/components/Tab"; import i18n from "../../../i18n"; -import { maybe } from "../../../misc"; +import { maybe, splitDateTime } from "../../../misc"; import { ListProps, TabListActions, UserError } from "../../../types"; import { - VoucherDiscountValueType, - VoucherType + DiscountValueTypeEnum, + VoucherTypeEnum } from "../../../types/globalTypes"; import { VoucherDetails_voucher } from "../../types/VoucherDetails"; import DiscountCategories from "../DiscountCategories"; import DiscountCollections from "../DiscountCollections"; import DiscountProducts from "../DiscountProducts"; +import VoucherDates from "../VoucherDates"; import VoucherInfo from "../VoucherInfo"; -import VoucherOptions from "../VoucherOptions"; +import VoucherLimits from "../VoucherLimits"; +import VoucherRequirements from "../VoucherRequirements"; import VoucherSummary from "../VoucherSummary"; +import VoucherTypes from "../VoucherTypes"; +import VoucherValue from "../VoucherValue"; export enum VoucherDetailsPageTab { categories = "categories", @@ -42,12 +46,15 @@ export function voucherDetailsPageTab(tab: string): VoucherDetailsPageTab { export interface FormData { applyOncePerOrder: boolean; code: string; - discountType: VoucherDiscountValueType; + discountType: DiscountValueTypeEnum; endDate: string; + endTime: string; + hasEndDate: boolean; + hasUsageLimit: boolean; minAmountSpent: number; - name: string; startDate: string; - type: VoucherType; + startTime: string; + type: VoucherTypeEnum; usageLimit: number; value: number; } @@ -121,13 +128,16 @@ const VoucherDetailsPage: React.StatelessComponent = ({ code: maybe(() => voucher.code, ""), discountType: maybe( () => voucher.discountValueType, - VoucherDiscountValueType.FIXED + DiscountValueTypeEnum.FIXED ), - endDate: maybe(() => voucher.endDate, ""), + endDate: splitDateTime(maybe(() => voucher.endDate, "")).date, + endTime: splitDateTime(maybe(() => voucher.endDate, "")).time, + hasEndDate: maybe(() => !!voucher.endDate), + hasUsageLimit: maybe(() => !!voucher.usageLimit), minAmountSpent: maybe(() => voucher.minAmountSpent.amount, 0), - name: maybe(() => voucher.name, ""), - startDate: maybe(() => voucher.startDate, ""), - type: maybe(() => voucher.type, VoucherType.VALUE), + startDate: splitDateTime(maybe(() => voucher.startDate, "")).date, + startTime: splitDateTime(maybe(() => voucher.startDate, "")).time, + type: maybe(() => voucher.type, VoucherTypeEnum.ENTIRE_ORDER), usageLimit: maybe(() => voucher.usageLimit || 0, 0), value: maybe(() => voucher.discountValue, 0) }; @@ -137,28 +147,37 @@ const VoucherDetailsPage: React.StatelessComponent = ({ {({ change, data, errors: formErrors, hasChanged, submit }) => ( {i18n.t("Vouchers")} - voucher.name)} /> + voucher.code)} />
- - {data.type === VoucherType.CATEGORY || - data.type === VoucherType.COLLECTION || - data.type === VoucherType.PRODUCT ? ( + {data.discountType.toString() !== "SHIPPING" ? ( + + ) : null} + + {data.type === VoucherTypeEnum.SPECIFIC_PRODUCT && + data.discountType.toString() !== "SHIPPING" ? ( <> = ({ /> )} - ) : data.type === VoucherType.SHIPPING ? ( + ) : null} + + {data.discountType.toString() === "SHIPPING" ? ( voucher.countries)} disabled={disabled} emptyText={i18n.t("Voucher applies to all countries")} title={ <> - {i18n.t("Countries assigned to {{ voucherName }}", { - voucherName: maybe(() => voucher.name) - })} + {i18n.t("Countries")} {i18n.t("Vouchers limited to these countries")} @@ -265,6 +284,30 @@ const VoucherDetailsPage: React.StatelessComponent = ({ onCountryUnassign={onCountryUnassign} /> ) : null} + + + + + +
; + errors: FormErrors<"code">; disabled: boolean; variant: "create" | "update"; - onChange: (event: React.ChangeEvent) => void; + onChange: (event: any) => void; } -const styles = (theme: Theme) => - createStyles({ - nameInput: { - gridColumnEnd: "span 2" - }, - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridTemplateColumns: "1fr 1fr" - } - }); +const VoucherInfo = ({ + data, + disabled, + errors, + variant, + onChange +}: VoucherInfoProps) => { + const onGenerateCode = () => + onChange({ + target: { + name: "code", + value: generateCode(10) + } + }); -const VoucherInfo = withStyles(styles, { - name: "VoucherInfo" -})( - ({ - classes, - data, - disabled, - errors, - variant, - onChange - }: VoucherInfoProps & WithStyles) => { - const translatedVoucherTypes = translateVoucherTypes(); - const voucherTypeChoices = Object.values(VoucherType).map(type => ({ - label: translatedVoucherTypes[type], - value: type - })); - - return ( - - - - - -
- - -
-
-
- ); - } -); + return ( + + + {i18n.t("Generate Code")} + + ) + } + /> + + + + + ); +}; export default VoucherInfo; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherLimits/VoucherLimits.tsx b/saleor/static/dashboard-next/discounts/components/VoucherLimits/VoucherLimits.tsx new file mode 100644 index 00000000000..efebc93d25a --- /dev/null +++ b/saleor/static/dashboard-next/discounts/components/VoucherLimits/VoucherLimits.tsx @@ -0,0 +1,58 @@ +import Card from "@material-ui/core/Card"; +import CardContent from "@material-ui/core/CardContent"; +import TextField from "@material-ui/core/TextField"; +import * as React from "react"; + +import CardTitle from "@saleor/components/CardTitle"; +import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox"; +import i18n from "../../../i18n"; +import { FormErrors } from "../../../types"; +import { FormData } from "../VoucherDetailsPage"; + +interface VoucherLimitsProps { + data: FormData; + defaultCurrency: string; + disabled: boolean; + errors: FormErrors<"usageLimit">; + onChange: (event: React.ChangeEvent) => void; +} + +const VoucherLimits = ({ + data, + disabled, + errors, + onChange +}: VoucherLimitsProps) => { + return ( + + + + + {data.hasUsageLimit && ( + + )} + + + ); +}; +export default VoucherLimits; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherLimits/index.ts b/saleor/static/dashboard-next/discounts/components/VoucherLimits/index.ts new file mode 100644 index 00000000000..5bb995ee4f9 --- /dev/null +++ b/saleor/static/dashboard-next/discounts/components/VoucherLimits/index.ts @@ -0,0 +1,2 @@ +export { default } from "./VoucherLimits"; +export * from "./VoucherLimits"; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherList/VoucherList.tsx b/saleor/static/dashboard-next/discounts/components/VoucherList/VoucherList.tsx index f18df8d5a2d..d1c4633f62f 100644 --- a/saleor/static/dashboard-next/discounts/components/VoucherList/VoucherList.tsx +++ b/saleor/static/dashboard-next/discounts/components/VoucherList/VoucherList.tsx @@ -10,7 +10,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import Date from "@saleor/components/Date"; @@ -22,7 +22,7 @@ import TablePagination from "@saleor/components/TablePagination"; import i18n from "../../../i18n"; import { maybe, renderCollection } from "../../../misc"; import { ListActions, ListProps } from "../../../types"; -import { VoucherDiscountValueType } from "../../../types/globalTypes"; +import { DiscountValueTypeEnum } from "../../../types/globalTypes"; import { VoucherList_vouchers_edges_node } from "../../types/VoucherList"; export interface VoucherListProps extends ListProps, ListActions { @@ -102,7 +102,7 @@ const VoucherList = withStyles(styles, { toolbar={toolbar} > - {i18n.t("Name", { + {i18n.t("Code", { context: "voucher list table header" })} @@ -167,7 +167,7 @@ const VoucherList = withStyles(styles, { /> - {maybe(() => voucher.name, )} + {maybe(() => voucher.code, )} {voucher && voucher.minAmountSpent ? ( @@ -202,7 +202,7 @@ const VoucherList = withStyles(styles, { voucher.discountValueType && voucher.discountValue ? ( voucher.discountValueType === - VoucherDiscountValueType.FIXED ? ( + DiscountValueTypeEnum.FIXED ? ( ; - onChange: (event: React.ChangeEvent) => void; -} - -const styles = (theme: Theme) => - createStyles({ - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridTemplateColumns: "1fr 1fr" - } - }); - -const VoucherOptions = withStyles(styles, { - name: "VoucherOptions" -})( - ({ - classes, - data, - defaultCurrency, - disabled, - errors, - onChange - }: VoucherOptionsProps & WithStyles) => ( - - - - - - -
- - - {i18n.t("Discount Specific Information")} - - -
- -
- - - {i18n.t("Only once per order", { - context: "voucher application" - })} - - {i18n.t( - "If this option is disabled, discount will be counted for every eligible product" - )} - - - } - onChange={onChange} - name={"applyOncePerOrder" as keyof FormData} - disabled={disabled} - /> -
-
- - {i18n.t("Time Frame")} - -
- - -
-
-
- ) -); -export default VoucherOptions; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherOptions/index.ts b/saleor/static/dashboard-next/discounts/components/VoucherOptions/index.ts deleted file mode 100644 index 3b2411d3509..00000000000 --- a/saleor/static/dashboard-next/discounts/components/VoucherOptions/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default } from "./VoucherOptions"; -export * from "./VoucherOptions"; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherRequirements/VoucherRequirements.tsx b/saleor/static/dashboard-next/discounts/components/VoucherRequirements/VoucherRequirements.tsx new file mode 100644 index 00000000000..c1ba4527712 --- /dev/null +++ b/saleor/static/dashboard-next/discounts/components/VoucherRequirements/VoucherRequirements.tsx @@ -0,0 +1,43 @@ +import Card from "@material-ui/core/Card"; +import CardContent from "@material-ui/core/CardContent"; +import TextField from "@material-ui/core/TextField"; +import * as React from "react"; + +import CardTitle from "@saleor/components/CardTitle"; +import i18n from "../../../i18n"; +import { FormErrors } from "../../../types"; +import { FormData } from "../VoucherDetailsPage"; + +interface VoucherRequirementsProps { + data: FormData; + defaultCurrency: string; + disabled: boolean; + errors: FormErrors<"minAmountSpent">; + onChange: (event: React.ChangeEvent) => void; +} + +const VoucherRequirements = ({ + data, + disabled, + errors, + onChange +}: VoucherRequirementsProps) => { + return ( + + + + + + + ); +}; +export default VoucherRequirements; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherRequirements/index.ts b/saleor/static/dashboard-next/discounts/components/VoucherRequirements/index.ts new file mode 100644 index 00000000000..4f8ff6ff3a6 --- /dev/null +++ b/saleor/static/dashboard-next/discounts/components/VoucherRequirements/index.ts @@ -0,0 +1,2 @@ +export { default } from "./VoucherRequirements"; +export * from "./VoucherRequirements"; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherSummary/VoucherSummary.tsx b/saleor/static/dashboard-next/discounts/components/VoucherSummary/VoucherSummary.tsx index e3035f126e0..fca29dbf1f4 100644 --- a/saleor/static/dashboard-next/discounts/components/VoucherSummary/VoucherSummary.tsx +++ b/saleor/static/dashboard-next/discounts/components/VoucherSummary/VoucherSummary.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardSpacer from "@saleor/components/CardSpacer"; import CardTitle from "@saleor/components/CardTitle"; @@ -13,7 +13,7 @@ import Percent from "@saleor/components/Percent"; import Skeleton from "@saleor/components/Skeleton"; import i18n from "../../../i18n"; import { maybe } from "../../../misc"; -import { VoucherDiscountValueType } from "../../../types/globalTypes"; +import { DiscountValueTypeEnum } from "../../../types/globalTypes"; import { translateVoucherTypes } from "../../translations"; import { VoucherDetails_voucher } from "../../types/VoucherDetails"; @@ -32,9 +32,9 @@ const VoucherSummary: React.StatelessComponent = ({ - {i18n.t("Name")} + {i18n.t("Code")} - {maybe(() => voucher.name, )} + {maybe(() => voucher.code, )} @@ -51,7 +51,7 @@ const VoucherSummary: React.StatelessComponent = ({ {maybe( () => - voucher.discountValueType === VoucherDiscountValueType.FIXED ? ( + voucher.discountValueType === DiscountValueTypeEnum.FIXED ? ( ; + disabled: boolean; + onChange: (event: React.ChangeEvent) => void; +} + +const VoucherTypes = ({ + data, + disabled, + errors, + onChange +}: VoucherTypesProps) => { + const voucherTypeChoices = [ + { + label: i18n.t("Fixed Amount"), + value: DiscountValueTypeEnum.FIXED + }, + { + label: i18n.t("Percentage"), + value: DiscountValueTypeEnum.PERCENTAGE + }, + { + label: i18n.t("Free Shipping"), + value: "SHIPPING" + } + ]; + + return ( + + + + + + + + + ); +}; +export default VoucherTypes; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherTypes/index.ts b/saleor/static/dashboard-next/discounts/components/VoucherTypes/index.ts new file mode 100644 index 00000000000..89168c9e73e --- /dev/null +++ b/saleor/static/dashboard-next/discounts/components/VoucherTypes/index.ts @@ -0,0 +1,2 @@ +export { default } from "./VoucherTypes"; +export * from "./VoucherTypes"; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherValue/VoucherValue.tsx b/saleor/static/dashboard-next/discounts/components/VoucherValue/VoucherValue.tsx new file mode 100644 index 00000000000..8529ef79a89 --- /dev/null +++ b/saleor/static/dashboard-next/discounts/components/VoucherValue/VoucherValue.tsx @@ -0,0 +1,112 @@ +import Card from "@material-ui/core/Card"; +import CardContent from "@material-ui/core/CardContent"; +import Typography from "@material-ui/core/Typography"; +import React from "react"; + +import CardTitle from "@saleor/components/CardTitle"; +import ControlledSwitch from "@saleor/components/ControlledSwitch"; +import { FormSpacer } from "@saleor/components/FormSpacer"; +import Hr from "@saleor/components/Hr"; +import RadioGroupField from "@saleor/components/RadioGroupField"; +import TextFieldWithChoice from "@saleor/components/TextFieldWithChoice"; +import i18n from "../../../i18n"; +import { FormErrors } from "../../../types"; +import { DiscountValueTypeEnum } from "../../../types/globalTypes"; +import { translateVoucherTypes } from "../../translations"; +import { FormData } from "../VoucherDetailsPage"; + +interface VoucherValueProps { + data: FormData; + defaultCurrency: string; + errors: FormErrors<"discountValue" | "type">; + disabled: boolean; + variant: string; + onChange: (event: React.ChangeEvent) => void; +} + +export enum VoucherType { + ENTIRE_ORDER = "ENTIRE_ORDER", + SPECIFIC_PRODUCT = "SPECIFIC_PRODUCT" +} + +const VoucherValue = ({ + data, + defaultCurrency, + disabled, + errors, + variant, + onChange +}: VoucherValueProps) => { + const translatedVoucherTypes = translateVoucherTypes(); + const voucherTypeChoices = Object.values(VoucherType).map(type => ({ + label: translatedVoucherTypes[type], + value: type + })); + + return ( + + + + + + {variant === "update" && ( + <> + + + + )} +
+ + + {i18n.t("Only once per order", { + context: "voucher application" + })} + + {i18n.t( + "If this option is disabled, discount will be counted for every eligible product" + )} + + + } + onChange={onChange} + name={"applyOncePerOrder" as keyof FormData} + disabled={disabled} + /> +
+
+ ); +}; +export default VoucherValue; diff --git a/saleor/static/dashboard-next/discounts/components/VoucherValue/index.ts b/saleor/static/dashboard-next/discounts/components/VoucherValue/index.ts new file mode 100644 index 00000000000..d8107f9b3e1 --- /dev/null +++ b/saleor/static/dashboard-next/discounts/components/VoucherValue/index.ts @@ -0,0 +1,2 @@ +export { default } from "./VoucherValue"; +export * from "./VoucherValue"; diff --git a/saleor/static/dashboard-next/discounts/fixtures.ts b/saleor/static/dashboard-next/discounts/fixtures.ts index baeae66f852..bc75b0ab6a5 100644 --- a/saleor/static/dashboard-next/discounts/fixtures.ts +++ b/saleor/static/dashboard-next/discounts/fixtures.ts @@ -1,8 +1,8 @@ -import * as placeholderImage from "../../images/placeholder60x60.png"; +import placeholderImage from "../../images/placeholder60x60.png"; import { + DiscountValueTypeEnum, SaleType, - VoucherDiscountValueType, - VoucherType + VoucherTypeEnum } from "../types/globalTypes"; import { SaleDetails_sale } from "./types/SaleDetails"; import { SaleList_sales_edges_node } from "./types/SaleList"; @@ -60,6 +60,7 @@ export const saleList: SaleList_sales_edges_node[] = [ export const voucherList: VoucherList_vouchers_edges_node[] = [ { __typename: "Voucher" as "Voucher", + code: "FREE2019", countries: [ { __typename: "CountryDisplay", @@ -68,19 +69,19 @@ export const voucherList: VoucherList_vouchers_edges_node[] = [ } ], discountValue: 100, - discountValueType: "PERCENTAGE" as VoucherDiscountValueType, + discountValueType: "PERCENTAGE" as DiscountValueTypeEnum, endDate: null, id: "Vm91Y2hlcjox", minAmountSpent: null, - name: "Free shipping", startDate: "2019-01-03", usageLimit: null }, { __typename: "Voucher" as "Voucher", + code: "FREE2020", countries: [], discountValue: 25, - discountValueType: "FIXED" as VoucherDiscountValueType, + discountValueType: "FIXED" as DiscountValueTypeEnum, endDate: null, id: "Vm91Y2hlcjoy", minAmountSpent: { @@ -88,7 +89,6 @@ export const voucherList: VoucherList_vouchers_edges_node[] = [ amount: 200, currency: "USD" }, - name: "Big order discount", startDate: "2019-01-03", usageLimit: 150 } @@ -275,7 +275,7 @@ export const voucherDetails: VoucherDetails_voucher = { } ], discountValue: 25, - discountValueType: VoucherDiscountValueType.FIXED, + discountValueType: DiscountValueTypeEnum.FIXED, endDate: null, id: "Vm91Y2hlcjoy", minAmountSpent: { @@ -283,7 +283,6 @@ export const voucherDetails: VoucherDetails_voucher = { amount: 200, currency: "USD" }, - name: "Big order discount", products: { __typename: "ProductCountableConnection", edges: [], @@ -297,7 +296,7 @@ export const voucherDetails: VoucherDetails_voucher = { totalCount: 0 }, startDate: "2018-11-27", - type: VoucherType.VALUE, + type: VoucherTypeEnum.ENTIRE_ORDER, usageLimit: null, used: 0 }; diff --git a/saleor/static/dashboard-next/discounts/index.tsx b/saleor/static/dashboard-next/discounts/index.tsx index 40d4ba0b8a7..81d336ff441 100644 --- a/saleor/static/dashboard-next/discounts/index.tsx +++ b/saleor/static/dashboard-next/discounts/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/discounts/queries.ts b/saleor/static/dashboard-next/discounts/queries.ts index e5905952b77..a20f3cfd0b4 100644 --- a/saleor/static/dashboard-next/discounts/queries.ts +++ b/saleor/static/dashboard-next/discounts/queries.ts @@ -81,7 +81,7 @@ export const saleDetailsFragment = gql` export const voucherFragment = gql` fragment VoucherFragment on Voucher { id - name + code startDate endDate usageLimit diff --git a/saleor/static/dashboard-next/discounts/translations.ts b/saleor/static/dashboard-next/discounts/translations.ts index b6f6af8e522..5d1b91f4e03 100644 --- a/saleor/static/dashboard-next/discounts/translations.ts +++ b/saleor/static/dashboard-next/discounts/translations.ts @@ -1,10 +1,8 @@ import i18n from "../i18n"; -import { VoucherType } from "../types/globalTypes"; +import { VoucherTypeEnum } from "../types/globalTypes"; export const translateVoucherTypes = () => ({ - [VoucherType.CATEGORY]: i18n.t("Selected Categories"), - [VoucherType.COLLECTION]: i18n.t("Selected Collections"), - [VoucherType.PRODUCT]: i18n.t("Selected Products"), - [VoucherType.SHIPPING]: i18n.t("Shipment"), - [VoucherType.VALUE]: i18n.t("All Products") + [VoucherTypeEnum.SHIPPING]: i18n.t("Shipment"), + [VoucherTypeEnum.ENTIRE_ORDER]: i18n.t("Entire order"), + [VoucherTypeEnum.SPECIFIC_PRODUCT]: i18n.t("Specific Products") }); diff --git a/saleor/static/dashboard-next/discounts/types/VoucherCataloguesAdd.ts b/saleor/static/dashboard-next/discounts/types/VoucherCataloguesAdd.ts index f005d2e194c..9f7fb3ae1ca 100644 --- a/saleor/static/dashboard-next/discounts/types/VoucherCataloguesAdd.ts +++ b/saleor/static/dashboard-next/discounts/types/VoucherCataloguesAdd.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { CatalogueInput, VoucherDiscountValueType, VoucherType } from "./../../types/globalTypes"; +import { CatalogueInput, DiscountValueTypeEnum, VoucherTypeEnum } from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: VoucherCataloguesAdd @@ -133,16 +133,15 @@ export interface VoucherCataloguesAdd_voucherCataloguesAdd_voucher_categories { export interface VoucherCataloguesAdd_voucherCataloguesAdd_voucher { __typename: "Voucher"; id: string; - name: string | null; + code: string; startDate: any; endDate: any | null; usageLimit: number | null; - discountValueType: VoucherDiscountValueType; + discountValueType: DiscountValueTypeEnum; discountValue: number; countries: (VoucherCataloguesAdd_voucherCataloguesAdd_voucher_countries | null)[] | null; minAmountSpent: VoucherCataloguesAdd_voucherCataloguesAdd_voucher_minAmountSpent | null; - type: VoucherType; - code: string; + type: VoucherTypeEnum; used: number; applyOncePerOrder: boolean; products: VoucherCataloguesAdd_voucherCataloguesAdd_voucher_products | null; diff --git a/saleor/static/dashboard-next/discounts/types/VoucherCataloguesRemove.ts b/saleor/static/dashboard-next/discounts/types/VoucherCataloguesRemove.ts index 417934c699b..44ddef4c7d4 100644 --- a/saleor/static/dashboard-next/discounts/types/VoucherCataloguesRemove.ts +++ b/saleor/static/dashboard-next/discounts/types/VoucherCataloguesRemove.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { CatalogueInput, VoucherDiscountValueType, VoucherType } from "./../../types/globalTypes"; +import { CatalogueInput, DiscountValueTypeEnum, VoucherTypeEnum } from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: VoucherCataloguesRemove @@ -133,16 +133,15 @@ export interface VoucherCataloguesRemove_voucherCataloguesRemove_voucher_categor export interface VoucherCataloguesRemove_voucherCataloguesRemove_voucher { __typename: "Voucher"; id: string; - name: string | null; + code: string; startDate: any; endDate: any | null; usageLimit: number | null; - discountValueType: VoucherDiscountValueType; + discountValueType: DiscountValueTypeEnum; discountValue: number; countries: (VoucherCataloguesRemove_voucherCataloguesRemove_voucher_countries | null)[] | null; minAmountSpent: VoucherCataloguesRemove_voucherCataloguesRemove_voucher_minAmountSpent | null; - type: VoucherType; - code: string; + type: VoucherTypeEnum; used: number; applyOncePerOrder: boolean; products: VoucherCataloguesRemove_voucherCataloguesRemove_voucher_products | null; diff --git a/saleor/static/dashboard-next/discounts/types/VoucherCreate.ts b/saleor/static/dashboard-next/discounts/types/VoucherCreate.ts index eca02664f58..1d14c392eff 100644 --- a/saleor/static/dashboard-next/discounts/types/VoucherCreate.ts +++ b/saleor/static/dashboard-next/discounts/types/VoucherCreate.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { VoucherInput, VoucherDiscountValueType } from "./../../types/globalTypes"; +import { VoucherInput, DiscountValueTypeEnum } from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: VoucherCreate @@ -29,11 +29,11 @@ export interface VoucherCreate_voucherCreate_voucher_minAmountSpent { export interface VoucherCreate_voucherCreate_voucher { __typename: "Voucher"; id: string; - name: string | null; + code: string; startDate: any; endDate: any | null; usageLimit: number | null; - discountValueType: VoucherDiscountValueType; + discountValueType: DiscountValueTypeEnum; discountValue: number; countries: (VoucherCreate_voucherCreate_voucher_countries | null)[] | null; minAmountSpent: VoucherCreate_voucherCreate_voucher_minAmountSpent | null; diff --git a/saleor/static/dashboard-next/discounts/types/VoucherDetails.ts b/saleor/static/dashboard-next/discounts/types/VoucherDetails.ts index dae5f8b1ad8..ed2e089fb30 100644 --- a/saleor/static/dashboard-next/discounts/types/VoucherDetails.ts +++ b/saleor/static/dashboard-next/discounts/types/VoucherDetails.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { VoucherDiscountValueType, VoucherType } from "./../../types/globalTypes"; +import { DiscountValueTypeEnum, VoucherTypeEnum } from "./../../types/globalTypes"; // ==================================================== // GraphQL query operation: VoucherDetails @@ -127,16 +127,15 @@ export interface VoucherDetails_voucher_categories { export interface VoucherDetails_voucher { __typename: "Voucher"; id: string; - name: string | null; + code: string; startDate: any; endDate: any | null; usageLimit: number | null; - discountValueType: VoucherDiscountValueType; + discountValueType: DiscountValueTypeEnum; discountValue: number; countries: (VoucherDetails_voucher_countries | null)[] | null; minAmountSpent: VoucherDetails_voucher_minAmountSpent | null; - type: VoucherType; - code: string; + type: VoucherTypeEnum; used: number; applyOncePerOrder: boolean; products: VoucherDetails_voucher_products | null; diff --git a/saleor/static/dashboard-next/discounts/types/VoucherDetailsFragment.ts b/saleor/static/dashboard-next/discounts/types/VoucherDetailsFragment.ts index b34b7d79371..7234bf69e20 100644 --- a/saleor/static/dashboard-next/discounts/types/VoucherDetailsFragment.ts +++ b/saleor/static/dashboard-next/discounts/types/VoucherDetailsFragment.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { VoucherDiscountValueType, VoucherType } from "./../../types/globalTypes"; +import { DiscountValueTypeEnum, VoucherTypeEnum } from "./../../types/globalTypes"; // ==================================================== // GraphQL fragment: VoucherDetailsFragment @@ -127,16 +127,15 @@ export interface VoucherDetailsFragment_categories { export interface VoucherDetailsFragment { __typename: "Voucher"; id: string; - name: string | null; + code: string; startDate: any; endDate: any | null; usageLimit: number | null; - discountValueType: VoucherDiscountValueType; + discountValueType: DiscountValueTypeEnum; discountValue: number; countries: (VoucherDetailsFragment_countries | null)[] | null; minAmountSpent: VoucherDetailsFragment_minAmountSpent | null; - type: VoucherType; - code: string; + type: VoucherTypeEnum; used: number; applyOncePerOrder: boolean; products: VoucherDetailsFragment_products | null; diff --git a/saleor/static/dashboard-next/discounts/types/VoucherFragment.ts b/saleor/static/dashboard-next/discounts/types/VoucherFragment.ts index c8d8aab479e..dac9ef3cda8 100644 --- a/saleor/static/dashboard-next/discounts/types/VoucherFragment.ts +++ b/saleor/static/dashboard-next/discounts/types/VoucherFragment.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { VoucherDiscountValueType } from "./../../types/globalTypes"; +import { DiscountValueTypeEnum } from "./../../types/globalTypes"; // ==================================================== // GraphQL fragment: VoucherFragment @@ -23,11 +23,11 @@ export interface VoucherFragment_minAmountSpent { export interface VoucherFragment { __typename: "Voucher"; id: string; - name: string | null; + code: string; startDate: any; endDate: any | null; usageLimit: number | null; - discountValueType: VoucherDiscountValueType; + discountValueType: DiscountValueTypeEnum; discountValue: number; countries: (VoucherFragment_countries | null)[] | null; minAmountSpent: VoucherFragment_minAmountSpent | null; diff --git a/saleor/static/dashboard-next/discounts/types/VoucherList.ts b/saleor/static/dashboard-next/discounts/types/VoucherList.ts index cce0df721da..e85387accc3 100644 --- a/saleor/static/dashboard-next/discounts/types/VoucherList.ts +++ b/saleor/static/dashboard-next/discounts/types/VoucherList.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { VoucherDiscountValueType } from "./../../types/globalTypes"; +import { DiscountValueTypeEnum } from "./../../types/globalTypes"; // ==================================================== // GraphQL query operation: VoucherList @@ -23,11 +23,11 @@ export interface VoucherList_vouchers_edges_node_minAmountSpent { export interface VoucherList_vouchers_edges_node { __typename: "Voucher"; id: string; - name: string | null; + code: string; startDate: any; endDate: any | null; usageLimit: number | null; - discountValueType: VoucherDiscountValueType; + discountValueType: DiscountValueTypeEnum; discountValue: number; countries: (VoucherList_vouchers_edges_node_countries | null)[] | null; minAmountSpent: VoucherList_vouchers_edges_node_minAmountSpent | null; diff --git a/saleor/static/dashboard-next/discounts/types/VoucherUpdate.ts b/saleor/static/dashboard-next/discounts/types/VoucherUpdate.ts index 2dd2521b21a..61614b5b341 100644 --- a/saleor/static/dashboard-next/discounts/types/VoucherUpdate.ts +++ b/saleor/static/dashboard-next/discounts/types/VoucherUpdate.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { VoucherInput, VoucherDiscountValueType } from "./../../types/globalTypes"; +import { VoucherInput, DiscountValueTypeEnum } from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: VoucherUpdate @@ -29,11 +29,11 @@ export interface VoucherUpdate_voucherUpdate_voucher_minAmountSpent { export interface VoucherUpdate_voucherUpdate_voucher { __typename: "Voucher"; id: string; - name: string | null; + code: string; startDate: any; endDate: any | null; usageLimit: number | null; - discountValueType: VoucherDiscountValueType; + discountValueType: DiscountValueTypeEnum; discountValue: number; countries: (VoucherUpdate_voucherUpdate_voucher_countries | null)[] | null; minAmountSpent: VoucherUpdate_voucherUpdate_voucher_minAmountSpent | null; diff --git a/saleor/static/dashboard-next/discounts/urls.ts b/saleor/static/dashboard-next/discounts/urls.ts index a33556ed886..0e3833d99e5 100644 --- a/saleor/static/dashboard-next/discounts/urls.ts +++ b/saleor/static/dashboard-next/discounts/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { ActiveTab, BulkAction, Dialog, Pagination } from "../types"; import { SaleDetailsPageTab } from "./components/SaleDetailsPage"; diff --git a/saleor/static/dashboard-next/discounts/views/SaleCreate.tsx b/saleor/static/dashboard-next/discounts/views/SaleCreate.tsx index eb5a55f801b..445a07bbc2e 100644 --- a/saleor/static/dashboard-next/discounts/views/SaleCreate.tsx +++ b/saleor/static/dashboard-next/discounts/views/SaleCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/discounts/views/SaleDetails.tsx b/saleor/static/dashboard-next/discounts/views/SaleDetails.tsx index b0a3c473fda..cc50292edad 100644 --- a/saleor/static/dashboard-next/discounts/views/SaleDetails.tsx +++ b/saleor/static/dashboard-next/discounts/views/SaleDetails.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import AssignCategoriesDialog from "@saleor/components/AssignCategoryDialog"; diff --git a/saleor/static/dashboard-next/discounts/views/SaleList.tsx b/saleor/static/dashboard-next/discounts/views/SaleList.tsx index 97e1a302e49..b51ba16f925 100644 --- a/saleor/static/dashboard-next/discounts/views/SaleList.tsx +++ b/saleor/static/dashboard-next/discounts/views/SaleList.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; diff --git a/saleor/static/dashboard-next/discounts/views/VoucherCreate.tsx b/saleor/static/dashboard-next/discounts/views/VoucherCreate.tsx index 00efa121009..caa3d563fe5 100644 --- a/saleor/static/dashboard-next/discounts/views/VoucherCreate.tsx +++ b/saleor/static/dashboard-next/discounts/views/VoucherCreate.tsx @@ -1,14 +1,13 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; import useShop from "@saleor/hooks/useShop"; import i18n from "../../i18n"; -import { decimal, getMutationState, maybe } from "../../misc"; +import { decimal, getMutationState, joinDateTime, maybe } from "../../misc"; import { DiscountValueTypeEnum, - VoucherDiscountValueType, VoucherTypeEnum } from "../../types/globalTypes"; import VoucherCreatePage from "../components/VoucherCreatePage"; @@ -16,14 +15,6 @@ import { TypedVoucherCreate } from "../mutations"; import { VoucherCreate } from "../types/VoucherCreate"; import { voucherListUrl, voucherUrl } from "../urls"; -function discountValueTypeEnum( - type: VoucherDiscountValueType -): DiscountValueTypeEnum { - return type.toString() === DiscountValueTypeEnum.FIXED - ? DiscountValueTypeEnum.FIXED - : DiscountValueTypeEnum.PERCENTAGE; -} - export const VoucherDetails: React.StatelessComponent = () => { const navigate = useNavigator(); const notify = useNotifier(); @@ -61,18 +52,27 @@ export const VoucherDetails: React.StatelessComponent = () => { voucherCreate({ variables: { input: { + applyOncePerOrder: formData.applyOncePerOrder, code: formData.code, - discountValue: decimal(formData.value), - discountValueType: discountValueTypeEnum( - formData.discountType - ), - endDate: - formData.endDate === "" ? null : formData.endDate, + discountValue: + formData.discountType.toString() === "SHIPPING" + ? 100 + : decimal(formData.value), + discountValueType: + formData.discountType.toString() === "SHIPPING" + ? DiscountValueTypeEnum.PERCENTAGE + : formData.discountType, + endDate: joinDateTime(formData.endDate, formData.endTime), minAmountSpent: formData.minAmountSpent, - name: formData.name, - startDate: - formData.startDate === "" ? null : formData.startDate, - type: VoucherTypeEnum[formData.type] + startDate: joinDateTime( + formData.startDate, + formData.startTime + ), + type: + formData.discountType.toString() === "SHIPPING" + ? VoucherTypeEnum.ENTIRE_ORDER + : formData.type, + usageLimit: formData.usageLimit } } }) diff --git a/saleor/static/dashboard-next/discounts/views/VoucherDetails.tsx b/saleor/static/dashboard-next/discounts/views/VoucherDetails.tsx index b3ef7ec5e75..680d0cc36c7 100644 --- a/saleor/static/dashboard-next/discounts/views/VoucherDetails.tsx +++ b/saleor/static/dashboard-next/discounts/views/VoucherDetails.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import AssignCategoriesDialog from "@saleor/components/AssignCategoryDialog"; @@ -21,11 +21,11 @@ import SearchCategories from "../../containers/SearchCategories"; import SearchCollections from "../../containers/SearchCollections"; import SearchProducts from "../../containers/SearchProducts"; import i18n from "../../i18n"; -import { decimal, getMutationState, maybe } from "../../misc"; +import { decimal, getMutationState, joinDateTime, maybe } from "../../misc"; import { productUrl } from "../../products/urls"; import { DiscountValueTypeEnum, - VoucherDiscountValueType + VoucherTypeEnum } from "../../types/globalTypes"; import DiscountCountrySelectDialog from "../components/DiscountCountrySelectDialog"; import VoucherDetailsPage, { @@ -54,14 +54,6 @@ interface VoucherDetailsProps { params: VoucherUrlQueryParams; } -function discountValueTypeEnum( - type: VoucherDiscountValueType -): DiscountValueTypeEnum { - return type.toString() === DiscountValueTypeEnum.FIXED - ? DiscountValueTypeEnum.FIXED - : DiscountValueTypeEnum.PERCENTAGE; -} - export const VoucherDetails: React.StatelessComponent = ({ id, params @@ -323,19 +315,33 @@ export const VoucherDetails: React.StatelessComponent = ({ variables: { id, input: { - discountValue: decimal(formData.value), - discountValueType: discountValueTypeEnum( - formData.discountType + applyOncePerOrder: + formData.applyOncePerOrder, + discountValue: + formData.discountType.toString() === + "SHIPPING" + ? 100 + : decimal(formData.value), + discountValueType: + formData.discountType.toString() === + "SHIPPING" + ? DiscountValueTypeEnum.PERCENTAGE + : formData.discountType, + endDate: joinDateTime( + formData.endDate, + formData.endTime + ), + minAmountSpent: formData.minAmountSpent, + startDate: joinDateTime( + formData.startDate, + formData.startTime ), - endDate: - formData.endDate === "" - ? null - : formData.endDate, - name: formData.name, - startDate: - formData.startDate === "" - ? null - : formData.startDate + type: + formData.discountType.toString() === + "SHIPPING" + ? VoucherTypeEnum.SHIPPING + : formData.type, + usageLimit: formData.usageLimit } } }) @@ -597,10 +603,10 @@ export const VoucherDetails: React.StatelessComponent = ({ {{ voucherName }}?", + "Are you sure you want to remove {{ voucherCode }}?", { - voucherName: maybe( - () => data.voucher.name, + voucherCode: maybe( + () => data.voucher.code, "..." ) } diff --git a/saleor/static/dashboard-next/discounts/views/VoucherList.tsx b/saleor/static/dashboard-next/discounts/views/VoucherList.tsx index e8ca0d4048e..8d5949a3027 100644 --- a/saleor/static/dashboard-next/discounts/views/VoucherList.tsx +++ b/saleor/static/dashboard-next/discounts/views/VoucherList.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; diff --git a/saleor/static/dashboard-next/home/components/HomeActivityCard/HomeActivityCard.tsx b/saleor/static/dashboard-next/home/components/HomeActivityCard/HomeActivityCard.tsx index f28f72deda0..6062878edab 100644 --- a/saleor/static/dashboard-next/home/components/HomeActivityCard/HomeActivityCard.tsx +++ b/saleor/static/dashboard-next/home/components/HomeActivityCard/HomeActivityCard.tsx @@ -4,7 +4,7 @@ import ListItem from "@material-ui/core/ListItem"; import ListItemText from "@material-ui/core/ListItemText"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { DateTime } from "@saleor/components/Date"; diff --git a/saleor/static/dashboard-next/home/components/HomeAnalyticsCard/HomeAnalyticsCard.tsx b/saleor/static/dashboard-next/home/components/HomeAnalyticsCard/HomeAnalyticsCard.tsx index faafc0a2e7f..3d509b5a3bd 100644 --- a/saleor/static/dashboard-next/home/components/HomeAnalyticsCard/HomeAnalyticsCard.tsx +++ b/saleor/static/dashboard-next/home/components/HomeAnalyticsCard/HomeAnalyticsCard.tsx @@ -8,7 +8,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/home/components/HomeHeader/HomeHeader.tsx b/saleor/static/dashboard-next/home/components/HomeHeader/HomeHeader.tsx index ff692eb2ac4..30c746f1b45 100644 --- a/saleor/static/dashboard-next/home/components/HomeHeader/HomeHeader.tsx +++ b/saleor/static/dashboard-next/home/components/HomeHeader/HomeHeader.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import Skeleton from "@saleor/components/Skeleton"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/home/components/HomeNotificationTable/HomeNotificationTable.tsx b/saleor/static/dashboard-next/home/components/HomeNotificationTable/HomeNotificationTable.tsx index 752ca3032eb..cca7c0886aa 100644 --- a/saleor/static/dashboard-next/home/components/HomeNotificationTable/HomeNotificationTable.tsx +++ b/saleor/static/dashboard-next/home/components/HomeNotificationTable/HomeNotificationTable.tsx @@ -11,7 +11,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; import KeyboardArrowRight from "@material-ui/icons/KeyboardArrowRight"; -import * as React from "react"; +import React from "react"; import Skeleton from "@saleor/components/Skeleton"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/home/components/HomePage/HomePage.tsx b/saleor/static/dashboard-next/home/components/HomePage/HomePage.tsx index af26fe46f0b..1607ee20faf 100644 --- a/saleor/static/dashboard-next/home/components/HomePage/HomePage.tsx +++ b/saleor/static/dashboard-next/home/components/HomePage/HomePage.tsx @@ -4,7 +4,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import CardSpacer from "@saleor/components/CardSpacer"; import Container from "@saleor/components/Container"; diff --git a/saleor/static/dashboard-next/home/components/HomeProductListCard/HomeProductListCard.tsx b/saleor/static/dashboard-next/home/components/HomeProductListCard/HomeProductListCard.tsx index d6783210a86..3cd4bdd6a4f 100644 --- a/saleor/static/dashboard-next/home/components/HomeProductListCard/HomeProductListCard.tsx +++ b/saleor/static/dashboard-next/home/components/HomeProductListCard/HomeProductListCard.tsx @@ -10,8 +10,8 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Money from "@saleor/components/Money"; diff --git a/saleor/static/dashboard-next/home/components/HomeScreen.tsx b/saleor/static/dashboard-next/home/components/HomeScreen.tsx index 9c30edce077..06a801b2cef 100644 --- a/saleor/static/dashboard-next/home/components/HomeScreen.tsx +++ b/saleor/static/dashboard-next/home/components/HomeScreen.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Container from "@saleor/components/Container"; diff --git a/saleor/static/dashboard-next/home/index.tsx b/saleor/static/dashboard-next/home/index.tsx index e7520f23f5b..df012335c14 100644 --- a/saleor/static/dashboard-next/home/index.tsx +++ b/saleor/static/dashboard-next/home/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import HomePage from "./views"; diff --git a/saleor/static/dashboard-next/home/views/index.tsx b/saleor/static/dashboard-next/home/views/index.tsx index b0a06a884be..116175d7c54 100644 --- a/saleor/static/dashboard-next/home/views/index.tsx +++ b/saleor/static/dashboard-next/home/views/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import useNavigator from "@saleor/hooks/useNavigator"; import useUser from "@saleor/hooks/useUser"; diff --git a/saleor/static/dashboard-next/hooks/useDateLocalize.ts b/saleor/static/dashboard-next/hooks/useDateLocalize.ts index 88426f52007..3ef7cb9eff2 100644 --- a/saleor/static/dashboard-next/hooks/useDateLocalize.ts +++ b/saleor/static/dashboard-next/hooks/useDateLocalize.ts @@ -1,4 +1,4 @@ -import * as moment from "moment-timezone"; +import moment from "moment-timezone"; import { useContext } from "react"; import { LocaleContext } from "@saleor/components/Locale"; diff --git a/saleor/static/dashboard-next/hooks/useForm.ts b/saleor/static/dashboard-next/hooks/useForm.ts new file mode 100644 index 00000000000..c921ac51ef5 --- /dev/null +++ b/saleor/static/dashboard-next/hooks/useForm.ts @@ -0,0 +1,102 @@ +import isEqual from "lodash-es/isEqual"; +import { useState } from "react"; + +import { UserError } from "@saleor/types"; +import { toggle } from "@saleor/utils/lists"; +import useStateFromProps from "./useStateFromProps"; + +export interface ChangeEvent { + target: { + name: keyof TName | string; + value: TData; + }; +} + +export interface UseFormResult { + change: (event: ChangeEvent, cb?: () => void) => void; + data: T; + errors: Record; + hasChanged: boolean; + reset: () => void; + set: (data: T) => void; + submit: () => void; + toggleValue: (event: ChangeEvent) => void; +} + +function parseErrors(errors: UserError[]): Record { + return errors + ? errors.reduce( + (prev, curr) => ({ + ...prev, + [curr.field.split(":")[0]]: curr.message + }), + {} + ) + : {}; +} + +function useForm>( + initial: T, + errors: UserError[], + onSubmit: (data: T) => void +): UseFormResult { + const [data, setData] = useStateFromProps(initial); + const [hasChanged, setChanged] = useState(false); + + function toggleValue(event: ChangeEvent) { + const { name, value } = event.target; + const field = data[name as keyof T]; + + if (Array.isArray(field)) { + setData({ + ...data, + [name]: toggle(value, field, isEqual) + }); + } + } + + function change(event: ChangeEvent) { + const { name, value } = event.target; + + if (!(name in data)) { + console.error(`Unknown form field: ${name}`); + return; + } + + if (!hasChanged) { + setChanged(true); + } + setData({ + ...data, + [name]: value + }); + } + + function reset() { + setData(initial); + } + + function set(newData: Partial) { + setData({ + ...data, + ...newData + }); + } + + function submit() { + return onSubmit(data); + } + + return { + change, + data, + errors: parseErrors(errors), + hasChanged, + reset, + set, + submit, + toggleValue + }; +} + +export default useForm; diff --git a/saleor/static/dashboard-next/hooks/useScroll.ts b/saleor/static/dashboard-next/hooks/useScroll.ts index 355ae5e5e84..6e871b8c234 100644 --- a/saleor/static/dashboard-next/hooks/useScroll.ts +++ b/saleor/static/dashboard-next/hooks/useScroll.ts @@ -1,5 +1,4 @@ -// tslint:disable:no-submodule-imports -import * as throttle from "lodash/throttle"; +import throttle from "lodash-es/throttle"; import { useEffect, useState } from "react"; function getPosition() { diff --git a/saleor/static/dashboard-next/hooks/useStateFromProps.ts b/saleor/static/dashboard-next/hooks/useStateFromProps.ts new file mode 100644 index 00000000000..c78e0c8f142 --- /dev/null +++ b/saleor/static/dashboard-next/hooks/useStateFromProps.ts @@ -0,0 +1,16 @@ +import isEqual from "lodash-es/isEqual"; +import { Dispatch, SetStateAction, useState } from "react"; + +function useStateFromProps(data: T): [T, Dispatch>] { + const [state, setState] = useState(data); + const [prevState, setPrevState] = useState(data); + + if (!isEqual(prevState, data)) { + setState(data); + setPrevState(data); + } + + return [state, setState]; +} + +export default useStateFromProps; diff --git a/saleor/static/dashboard-next/i18n.ts b/saleor/static/dashboard-next/i18n.ts index d15b0883bff..91d59c28c02 100644 --- a/saleor/static/dashboard-next/i18n.ts +++ b/saleor/static/dashboard-next/i18n.ts @@ -1,6 +1,6 @@ -import * as i18n from "i18next"; -import * as LanguageDetector from "i18next-browser-languagedetector"; -import * as XHR from "i18next-xhr-backend"; +import i18n from "i18next"; +import LanguageDetector from "i18next-browser-languagedetector"; +import XHR from "i18next-xhr-backend"; i18n.use(XHR); i18n.use(LanguageDetector); diff --git a/saleor/static/dashboard-next/icons/AccountCircle.tsx b/saleor/static/dashboard-next/icons/AccountCircle.tsx index 49eae5c1efd..efe95777ef2 100644 --- a/saleor/static/dashboard-next/icons/AccountCircle.tsx +++ b/saleor/static/dashboard-next/icons/AccountCircle.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const AccountCircle = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/ArrowDropdown.tsx b/saleor/static/dashboard-next/icons/ArrowDropdown.tsx index e8f324da364..a072df49590 100644 --- a/saleor/static/dashboard-next/icons/ArrowDropdown.tsx +++ b/saleor/static/dashboard-next/icons/ArrowDropdown.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const NoPhoto = createSvgIcon( diff --git a/saleor/static/dashboard-next/icons/Ballot.tsx b/saleor/static/dashboard-next/icons/Ballot.tsx index d5dfb8afe62..587c3379ce8 100644 --- a/saleor/static/dashboard-next/icons/Ballot.tsx +++ b/saleor/static/dashboard-next/icons/Ballot.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Ballot = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/BoldIcon.tsx b/saleor/static/dashboard-next/icons/BoldIcon.tsx index ae22592b2b2..56a480e568b 100644 --- a/saleor/static/dashboard-next/icons/BoldIcon.tsx +++ b/saleor/static/dashboard-next/icons/BoldIcon.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const BoldIcon = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Calendar.tsx b/saleor/static/dashboard-next/icons/Calendar.tsx index a67c5e60e5b..c7250b42dc2 100644 --- a/saleor/static/dashboard-next/icons/Calendar.tsx +++ b/saleor/static/dashboard-next/icons/Calendar.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Calendar = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Draggable.tsx b/saleor/static/dashboard-next/icons/Draggable.tsx index 948ef738edb..cdaad7d5e9d 100644 --- a/saleor/static/dashboard-next/icons/Draggable.tsx +++ b/saleor/static/dashboard-next/icons/Draggable.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Draggable = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Folder.tsx b/saleor/static/dashboard-next/icons/Folder.tsx index f9e6bdb5de6..74a16ed95fa 100644 --- a/saleor/static/dashboard-next/icons/Folder.tsx +++ b/saleor/static/dashboard-next/icons/Folder.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Folder = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/HeaderOne.tsx b/saleor/static/dashboard-next/icons/HeaderOne.tsx index 31409752fe6..0d0d9eb0731 100644 --- a/saleor/static/dashboard-next/icons/HeaderOne.tsx +++ b/saleor/static/dashboard-next/icons/HeaderOne.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const HeaderOne = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/HeaderThree.tsx b/saleor/static/dashboard-next/icons/HeaderThree.tsx index 8544d68ec44..f3349527453 100644 --- a/saleor/static/dashboard-next/icons/HeaderThree.tsx +++ b/saleor/static/dashboard-next/icons/HeaderThree.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const HeaderThree = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/HeaderTwo.tsx b/saleor/static/dashboard-next/icons/HeaderTwo.tsx index 8a9b4d28939..f2775da8f8c 100644 --- a/saleor/static/dashboard-next/icons/HeaderTwo.tsx +++ b/saleor/static/dashboard-next/icons/HeaderTwo.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const HeaderTwo = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Home.tsx b/saleor/static/dashboard-next/icons/Home.tsx index 1e574e556de..91b1fd8a7d9 100644 --- a/saleor/static/dashboard-next/icons/Home.tsx +++ b/saleor/static/dashboard-next/icons/Home.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Home = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Image.tsx b/saleor/static/dashboard-next/icons/Image.tsx index 3ff31d96227..458cbc3c96d 100644 --- a/saleor/static/dashboard-next/icons/Image.tsx +++ b/saleor/static/dashboard-next/icons/Image.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Image = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/ItalicIcon.tsx b/saleor/static/dashboard-next/icons/ItalicIcon.tsx index ced567f0291..eb750528a75 100644 --- a/saleor/static/dashboard-next/icons/ItalicIcon.tsx +++ b/saleor/static/dashboard-next/icons/ItalicIcon.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const ItalicIcon = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/LinkIcon.tsx b/saleor/static/dashboard-next/icons/LinkIcon.tsx index adfd37b6fe1..0865ae2a0fa 100644 --- a/saleor/static/dashboard-next/icons/LinkIcon.tsx +++ b/saleor/static/dashboard-next/icons/LinkIcon.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const LinkIcon = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/LocalShipping.tsx b/saleor/static/dashboard-next/icons/LocalShipping.tsx index b0440c68ebe..6eab76ef382 100644 --- a/saleor/static/dashboard-next/icons/LocalShipping.tsx +++ b/saleor/static/dashboard-next/icons/LocalShipping.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const LocalShipping = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Monetization.tsx b/saleor/static/dashboard-next/icons/Monetization.tsx index 1dd34af6706..b315a839d47 100644 --- a/saleor/static/dashboard-next/icons/Monetization.tsx +++ b/saleor/static/dashboard-next/icons/Monetization.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Monetization = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Moon.tsx b/saleor/static/dashboard-next/icons/Moon.tsx index 88df92b0fad..acbd52ee2af 100644 --- a/saleor/static/dashboard-next/icons/Moon.tsx +++ b/saleor/static/dashboard-next/icons/Moon.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Moon = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Navigation.tsx b/saleor/static/dashboard-next/icons/Navigation.tsx index 57b83ec11fb..c7c7d29a9c3 100644 --- a/saleor/static/dashboard-next/icons/Navigation.tsx +++ b/saleor/static/dashboard-next/icons/Navigation.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Navigation = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/NoPhoto.tsx b/saleor/static/dashboard-next/icons/NoPhoto.tsx index 60f61c2abda..c83d77a73e0 100644 --- a/saleor/static/dashboard-next/icons/NoPhoto.tsx +++ b/saleor/static/dashboard-next/icons/NoPhoto.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const NoPhoto = createSvgIcon( diff --git a/saleor/static/dashboard-next/icons/OrderedListIcon.tsx b/saleor/static/dashboard-next/icons/OrderedListIcon.tsx index e203dc79426..95a76af2217 100644 --- a/saleor/static/dashboard-next/icons/OrderedListIcon.tsx +++ b/saleor/static/dashboard-next/icons/OrderedListIcon.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const OrderedListIcon = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Orders.tsx b/saleor/static/dashboard-next/icons/Orders.tsx index 264a652f3c1..7026b704af9 100644 --- a/saleor/static/dashboard-next/icons/Orders.tsx +++ b/saleor/static/dashboard-next/icons/Orders.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Orders = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Pages.tsx b/saleor/static/dashboard-next/icons/Pages.tsx index cf4be3c2914..6aa43bc3233 100644 --- a/saleor/static/dashboard-next/icons/Pages.tsx +++ b/saleor/static/dashboard-next/icons/Pages.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Pages = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/ProductTypes.tsx b/saleor/static/dashboard-next/icons/ProductTypes.tsx index 57d3b88f744..c86899204ce 100644 --- a/saleor/static/dashboard-next/icons/ProductTypes.tsx +++ b/saleor/static/dashboard-next/icons/ProductTypes.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const ProductTypes = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/QuotationIcon.tsx b/saleor/static/dashboard-next/icons/QuotationIcon.tsx index 16e855053cb..0d49f21b41c 100644 --- a/saleor/static/dashboard-next/icons/QuotationIcon.tsx +++ b/saleor/static/dashboard-next/icons/QuotationIcon.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const QuotationIcon = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Sales.tsx b/saleor/static/dashboard-next/icons/Sales.tsx index dc85268a7ed..dae31094fcd 100644 --- a/saleor/static/dashboard-next/icons/Sales.tsx +++ b/saleor/static/dashboard-next/icons/Sales.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Sales = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/ShippingMethods.tsx b/saleor/static/dashboard-next/icons/ShippingMethods.tsx index b695a80d6f4..0c4c90d0374 100644 --- a/saleor/static/dashboard-next/icons/ShippingMethods.tsx +++ b/saleor/static/dashboard-next/icons/ShippingMethods.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const ShippingMethods = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Shop.tsx b/saleor/static/dashboard-next/icons/Shop.tsx index 397a6941034..1cc474bfb6d 100644 --- a/saleor/static/dashboard-next/icons/Shop.tsx +++ b/saleor/static/dashboard-next/icons/Shop.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Shop = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/SiteSettings.tsx b/saleor/static/dashboard-next/icons/SiteSettings.tsx index fc7d50bad29..38829145dce 100644 --- a/saleor/static/dashboard-next/icons/SiteSettings.tsx +++ b/saleor/static/dashboard-next/icons/SiteSettings.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const SiteSettings = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/StaffMembers.tsx b/saleor/static/dashboard-next/icons/StaffMembers.tsx index 1a3072e0dfc..bf1c4516276 100644 --- a/saleor/static/dashboard-next/icons/StaffMembers.tsx +++ b/saleor/static/dashboard-next/icons/StaffMembers.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const StaffMembers = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/StoreMall.tsx b/saleor/static/dashboard-next/icons/StoreMall.tsx index bec5a200ce3..753ba2d15db 100644 --- a/saleor/static/dashboard-next/icons/StoreMall.tsx +++ b/saleor/static/dashboard-next/icons/StoreMall.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const StoreMall = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/StrikethroughIcon.tsx b/saleor/static/dashboard-next/icons/StrikethroughIcon.tsx index 93f8286fc32..accad0a5fe0 100644 --- a/saleor/static/dashboard-next/icons/StrikethroughIcon.tsx +++ b/saleor/static/dashboard-next/icons/StrikethroughIcon.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const HeaderOne = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Sun.tsx b/saleor/static/dashboard-next/icons/Sun.tsx index ff870b2f928..310ee190754 100644 --- a/saleor/static/dashboard-next/icons/Sun.tsx +++ b/saleor/static/dashboard-next/icons/Sun.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Sun = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Taxes.tsx b/saleor/static/dashboard-next/icons/Taxes.tsx index bfc3ce334ee..ae62d42069e 100644 --- a/saleor/static/dashboard-next/icons/Taxes.tsx +++ b/saleor/static/dashboard-next/icons/Taxes.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Taxes = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Truck.tsx b/saleor/static/dashboard-next/icons/Truck.tsx index edfe088ed02..f90abaa5bde 100644 --- a/saleor/static/dashboard-next/icons/Truck.tsx +++ b/saleor/static/dashboard-next/icons/Truck.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Truck = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/UnorderedListIcon.tsx b/saleor/static/dashboard-next/icons/UnorderedListIcon.tsx index f62a439d323..d92de9a2b17 100644 --- a/saleor/static/dashboard-next/icons/UnorderedListIcon.tsx +++ b/saleor/static/dashboard-next/icons/UnorderedListIcon.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const UnorderedListIcon = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/icons/Unstyled.tsx b/saleor/static/dashboard-next/icons/Unstyled.tsx index c5993628ae5..0fc19f44a1e 100644 --- a/saleor/static/dashboard-next/icons/Unstyled.tsx +++ b/saleor/static/dashboard-next/icons/Unstyled.tsx @@ -1,5 +1,5 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; -import * as React from "react"; +import React from "react"; export const Unstyled = createSvgIcon( <> diff --git a/saleor/static/dashboard-next/index.tsx b/saleor/static/dashboard-next/index.tsx index ab330329d16..f587f43082d 100644 --- a/saleor/static/dashboard-next/index.tsx +++ b/saleor/static/dashboard-next/index.tsx @@ -5,11 +5,10 @@ import { BatchHttpLink } from "apollo-link-batch-http"; import { setContext } from "apollo-link-context"; import { ErrorResponse, onError } from "apollo-link-error"; import { createUploadLink } from "apollo-upload-client"; -import * as React from "react"; +import React from "react"; import { ApolloProvider } from "react-apollo"; import { render } from "react-dom"; import { BrowserRouter, Route, Switch } from "react-router-dom"; -import * as Cookies from "universal-cookie"; import { getAuthToken, removeAuthToken } from "./auth"; import AuthProvider from "./auth/AuthProvider"; @@ -20,9 +19,7 @@ import Login from "./auth/views/Login"; import CategorySection from "./categories"; import CollectionSection from "./collections"; import { AppProgressProvider } from "./components/AppProgress"; -// import { ConfirmFormLeaveDialog } from "./components/ConfirmFormLeaveDialog"; import { DateProvider } from "./components/Date"; -import { FormProvider } from "./components/Form"; import { LocaleProvider } from "./components/Locale"; import { MessageManager } from "./components/messages"; import { ShopProvider } from "./components/Shop"; @@ -48,8 +45,6 @@ import TaxesSection from "./taxes"; import TranslationsSection from "./translations"; import { PermissionEnum } from "./types/globalTypes"; -const cookies = new Cookies(); - interface ResponseError extends ErrorResponse { networkError?: Error & { statusCode?: number; @@ -74,11 +69,10 @@ const authLink = setContext((_, context) => { }; }); +// DON'T TOUCH THIS +// These are separate clients and do not share configs between themselves +// so we need to explicitly set them const linkOptions = { - credentials: "same-origin", - headers: { - "X-CSRFToken": cookies.get("csrftoken") - }, uri: API_URI }; const uploadLink = createUploadLink(linkOptions); @@ -108,134 +102,124 @@ const App: React.FC = () => { const isDark = localStorage.getItem("theme") === "true"; return ( - - - - - - - - - - - {/* FIXME: #3424 */} - {/* */} - - {({ - hasToken, - isAuthenticated, - tokenAuthLoading, - tokenVerifyLoading, - user - }) => { - return isAuthenticated && - !tokenAuthLoading && - !tokenVerifyLoading ? ( - + + + + + + + + + + + {({ + hasToken, + isAuthenticated, + tokenAuthLoading, + tokenVerifyLoading, + user + }) => { + return isAuthenticated && + !tokenAuthLoading && + !tokenVerifyLoading ? ( + + + + + + + + + + + + + + + + + {configurationMenu.filter(menuItem => + hasPermission(menuItem.permission, user) + ).length > 0 && ( - - - - - - - - - - - - - - - {configurationMenu.filter(menuItem => - hasPermission(menuItem.permission, user) - ).length > 0 && ( - - )} - - - ) : hasToken && tokenVerifyLoading ? ( - - ) : ( - - ); - }} - - - - - - - - - - + )} + + + ) : hasToken && tokenVerifyLoading ? ( + + ) : ( + + ); + }} + + + + + + + + + ); }; diff --git a/saleor/static/dashboard-next/misc.ts b/saleor/static/dashboard-next/misc.ts index c41a3b0e764..c89827576f7 100644 --- a/saleor/static/dashboard-next/misc.ts +++ b/saleor/static/dashboard-next/misc.ts @@ -1,6 +1,6 @@ -import * as urlJoin from "url-join"; - +import moment from "moment-timezone"; import { MutationFn, MutationResult } from "react-apollo"; +import urlJoin from "url-join"; import { ConfirmButtonTransitionState } from "./components/ConfirmButton/ConfirmButton"; import { APP_MOUNT_URI } from "./config"; import { AddressType } from "./customers/types"; @@ -236,3 +236,38 @@ export function stopPropagation(cb: () => void) { cb(); }; } + +export function joinDateTime(date: string, time?: string) { + if (!date) { + return null; + } + const setTime = time || "00:00"; + const dateTime = moment(date + " " + setTime).format(); + return dateTime; +} + +export function splitDateTime(dateTime: string) { + if (!dateTime) { + return { + date: "", + time: "" + }; + } + // Default html input format YYYY-MM-DD HH:mm + const splitDateTime = moment(dateTime) + .format("YYYY-MM-DD HH:mm") + .split(" "); + return { + date: splitDateTime[0], + time: splitDateTime[1] + }; +} + +export function generateCode(charNum: number) { + let result = ""; + const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + for (let i = 0; i < charNum; i++) { + result += characters.charAt(Math.floor(Math.random() * characters.length)); + } + return result; +} diff --git a/saleor/static/dashboard-next/mutations.tsx b/saleor/static/dashboard-next/mutations.tsx index b4689bfeabb..f7f27665b2e 100644 --- a/saleor/static/dashboard-next/mutations.tsx +++ b/saleor/static/dashboard-next/mutations.tsx @@ -1,6 +1,6 @@ import { ApolloError } from "apollo-client"; import { DocumentNode } from "graphql"; -import * as React from "react"; +import React from "react"; import { Mutation, MutationFn, diff --git a/saleor/static/dashboard-next/navigation/components/MenuCreateDialog/MenuCreateDialog.tsx b/saleor/static/dashboard-next/navigation/components/MenuCreateDialog/MenuCreateDialog.tsx index 1620b5b199e..fd06ad788a2 100644 --- a/saleor/static/dashboard-next/navigation/components/MenuCreateDialog/MenuCreateDialog.tsx +++ b/saleor/static/dashboard-next/navigation/components/MenuCreateDialog/MenuCreateDialog.tsx @@ -4,7 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/navigation/components/MenuDetailsPage/MenuDetailsPage.tsx b/saleor/static/dashboard-next/navigation/components/MenuDetailsPage/MenuDetailsPage.tsx index 4ce143bb4b8..6c22f0d0da5 100644 --- a/saleor/static/dashboard-next/navigation/components/MenuDetailsPage/MenuDetailsPage.tsx +++ b/saleor/static/dashboard-next/navigation/components/MenuDetailsPage/MenuDetailsPage.tsx @@ -1,5 +1,5 @@ import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/navigation/components/MenuItemDialog/MenuItemDialog.tsx b/saleor/static/dashboard-next/navigation/components/MenuItemDialog/MenuItemDialog.tsx index 6cb3f59ec51..e2991190309 100644 --- a/saleor/static/dashboard-next/navigation/components/MenuItemDialog/MenuItemDialog.tsx +++ b/saleor/static/dashboard-next/navigation/components/MenuItemDialog/MenuItemDialog.tsx @@ -4,8 +4,8 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; -import * as isUrl from "is-url"; -import * as React from "react"; +import isUrl from "is-url"; +import React from "react"; import AutocompleteSelectMenu from "@saleor/components/AutocompleteSelectMenu"; import ConfirmButton, { diff --git a/saleor/static/dashboard-next/navigation/components/MenuItems/MenuItems.tsx b/saleor/static/dashboard-next/navigation/components/MenuItems/MenuItems.tsx index 715e29e6508..ef17ab78a26 100644 --- a/saleor/static/dashboard-next/navigation/components/MenuItems/MenuItems.tsx +++ b/saleor/static/dashboard-next/navigation/components/MenuItems/MenuItems.tsx @@ -13,7 +13,7 @@ import Typography from "@material-ui/core/Typography"; import DeleteIcon from "@material-ui/icons/Delete"; import EditIcon from "@material-ui/icons/Edit"; import classNames from "classnames"; -import * as React from "react"; +import React from "react"; import SortableTree, { NodeRendererProps, TreeItem } from "react-sortable-tree"; import CardTitle from "@saleor/components/CardTitle"; diff --git a/saleor/static/dashboard-next/navigation/components/MenuList/MenuList.tsx b/saleor/static/dashboard-next/navigation/components/MenuList/MenuList.tsx index 2fb39843dd3..12d802106aa 100644 --- a/saleor/static/dashboard-next/navigation/components/MenuList/MenuList.tsx +++ b/saleor/static/dashboard-next/navigation/components/MenuList/MenuList.tsx @@ -11,7 +11,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import IconButtonTableCell from "@saleor/components/IconButtonTableCell"; diff --git a/saleor/static/dashboard-next/navigation/components/MenuListPage/MenuListPage.tsx b/saleor/static/dashboard-next/navigation/components/MenuListPage/MenuListPage.tsx index 49c3df93036..8e6b98d56e4 100644 --- a/saleor/static/dashboard-next/navigation/components/MenuListPage/MenuListPage.tsx +++ b/saleor/static/dashboard-next/navigation/components/MenuListPage/MenuListPage.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import Container from "@saleor/components/Container"; diff --git a/saleor/static/dashboard-next/navigation/components/MenuProperties/MenuProperties.tsx b/saleor/static/dashboard-next/navigation/components/MenuProperties/MenuProperties.tsx index 15436c793a5..a0379b149e9 100644 --- a/saleor/static/dashboard-next/navigation/components/MenuProperties/MenuProperties.tsx +++ b/saleor/static/dashboard-next/navigation/components/MenuProperties/MenuProperties.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/navigation/index.tsx b/saleor/static/dashboard-next/navigation/index.tsx index 46ea8411cbb..70e3663fcbd 100644 --- a/saleor/static/dashboard-next/navigation/index.tsx +++ b/saleor/static/dashboard-next/navigation/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { menuListPath, menuPath } from "./urls"; diff --git a/saleor/static/dashboard-next/navigation/urls.ts b/saleor/static/dashboard-next/navigation/urls.ts index 2481f46d413..0d70cf49171 100644 --- a/saleor/static/dashboard-next/navigation/urls.ts +++ b/saleor/static/dashboard-next/navigation/urls.ts @@ -1,5 +1,6 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; + import { BulkAction, Dialog, Pagination, SingleAction } from "../types"; export const navigationSection = "/navigation"; diff --git a/saleor/static/dashboard-next/navigation/views/MenuDetails/index.tsx b/saleor/static/dashboard-next/navigation/views/MenuDetails/index.tsx index c5ad9d9d127..c26d393439f 100644 --- a/saleor/static/dashboard-next/navigation/views/MenuDetails/index.tsx +++ b/saleor/static/dashboard-next/navigation/views/MenuDetails/index.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/navigation/views/MenuList.tsx b/saleor/static/dashboard-next/navigation/views/MenuList.tsx index 7e9f0a56186..35f05d79c9a 100644 --- a/saleor/static/dashboard-next/navigation/views/MenuList.tsx +++ b/saleor/static/dashboard-next/navigation/views/MenuList.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; diff --git a/saleor/static/dashboard-next/orders/components/OrderAddressEditDialog/OrderAddressEditDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderAddressEditDialog/OrderAddressEditDialog.tsx index 81687a3e4eb..fa5eb177fba 100644 --- a/saleor/static/dashboard-next/orders/components/OrderAddressEditDialog/OrderAddressEditDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderAddressEditDialog/OrderAddressEditDialog.tsx @@ -4,7 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import AddressEdit from "@saleor/components/AddressEdit"; import ConfirmButton, { diff --git a/saleor/static/dashboard-next/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.tsx index f9029dd82ff..0c25ddeb07c 100644 --- a/saleor/static/dashboard-next/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; diff --git a/saleor/static/dashboard-next/orders/components/OrderCancelDialog/OrderCancelDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderCancelDialog/OrderCancelDialog.tsx index ee8b1575815..51eb429aac9 100644 --- a/saleor/static/dashboard-next/orders/components/OrderCancelDialog/OrderCancelDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderCancelDialog/OrderCancelDialog.tsx @@ -10,7 +10,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/orders/components/OrderCustomer/OrderCustomer.tsx b/saleor/static/dashboard-next/orders/components/OrderCustomer/OrderCustomer.tsx index 92970c79cf0..ea42bf8f78c 100644 --- a/saleor/static/dashboard-next/orders/components/OrderCustomer/OrderCustomer.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderCustomer/OrderCustomer.tsx @@ -8,7 +8,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import ExternalLink from "@saleor/components/ExternalLink"; diff --git a/saleor/static/dashboard-next/orders/components/OrderCustomerEditDialog/OrderCustomerEditDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderCustomerEditDialog/OrderCustomerEditDialog.tsx index 2c7b1f2713f..3cd9804bb94 100644 --- a/saleor/static/dashboard-next/orders/components/OrderCustomerEditDialog/OrderCustomerEditDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderCustomerEditDialog/OrderCustomerEditDialog.tsx @@ -9,7 +9,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/orders/components/OrderCustomerNote/OrderCustomerNote.tsx b/saleor/static/dashboard-next/orders/components/OrderCustomerNote/OrderCustomerNote.tsx index 331473340ad..4a3b075fffb 100644 --- a/saleor/static/dashboard-next/orders/components/OrderCustomerNote/OrderCustomerNote.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderCustomerNote/OrderCustomerNote.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDetailsPage/OrderDetailsPage.tsx b/saleor/static/dashboard-next/orders/components/OrderDetailsPage/OrderDetailsPage.tsx index a1d3d7f3a0d..b20a70e1017 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDetailsPage/OrderDetailsPage.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDetailsPage/OrderDetailsPage.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardMenu from "@saleor/components/CardMenu"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDraftCancelDialog/OrderDraftCancelDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderDraftCancelDialog/OrderDraftCancelDialog.tsx index 61704b1935f..95866ae352c 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDraftCancelDialog/OrderDraftCancelDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDraftCancelDialog/OrderDraftCancelDialog.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDraftDetails/OrderDraftDetails.tsx b/saleor/static/dashboard-next/orders/components/OrderDraftDetails/OrderDraftDetails.tsx index 17f1e478cdb..3eeb932e7ba 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDraftDetails/OrderDraftDetails.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDraftDetails/OrderDraftDetails.tsx @@ -1,7 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDraftDetailsProducts/OrderDraftDetailsProducts.tsx b/saleor/static/dashboard-next/orders/components/OrderDraftDetailsProducts/OrderDraftDetailsProducts.tsx index 1ba483fe359..09b0cd8cca0 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDraftDetailsProducts/OrderDraftDetailsProducts.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDraftDetailsProducts/OrderDraftDetailsProducts.tsx @@ -13,7 +13,7 @@ import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import { DebounceForm } from "@saleor/components/DebounceForm"; import Form from "@saleor/components/Form"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDraftDetailsSummary/OrderDraftDetailsSummary.tsx b/saleor/static/dashboard-next/orders/components/OrderDraftDetailsSummary/OrderDraftDetailsSummary.tsx index 70eebafd158..1ca1898c628 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDraftDetailsSummary/OrderDraftDetailsSummary.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDraftDetailsSummary/OrderDraftDetailsSummary.tsx @@ -4,7 +4,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import Link from "@saleor/components/Link"; import Money from "@saleor/components/Money"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.tsx index 4238d299e71..f8b72cb60e6 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDraftList/OrderDraftList.tsx b/saleor/static/dashboard-next/orders/components/OrderDraftList/OrderDraftList.tsx index b0c25797da9..e6ab22d0b8d 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDraftList/OrderDraftList.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDraftList/OrderDraftList.tsx @@ -9,7 +9,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import { DateTime } from "@saleor/components/Date"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDraftListPage/OrderDraftListPage.tsx b/saleor/static/dashboard-next/orders/components/OrderDraftListPage/OrderDraftListPage.tsx index 9e9d2235c25..09b7063c2a0 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDraftListPage/OrderDraftListPage.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDraftListPage/OrderDraftListPage.tsx @@ -1,7 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import Container from "@saleor/components/Container"; import PageHeader from "@saleor/components/PageHeader"; diff --git a/saleor/static/dashboard-next/orders/components/OrderDraftPage/OrderDraftPage.tsx b/saleor/static/dashboard-next/orders/components/OrderDraftPage/OrderDraftPage.tsx index 074d3a65d67..7e357f5477d 100644 --- a/saleor/static/dashboard-next/orders/components/OrderDraftPage/OrderDraftPage.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderDraftPage/OrderDraftPage.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardMenu from "@saleor/components/CardMenu"; diff --git a/saleor/static/dashboard-next/orders/components/OrderFulfillment/OrderFulfillment.tsx b/saleor/static/dashboard-next/orders/components/OrderFulfillment/OrderFulfillment.tsx index 2672675e2bf..ee4d4241da4 100644 --- a/saleor/static/dashboard-next/orders/components/OrderFulfillment/OrderFulfillment.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderFulfillment/OrderFulfillment.tsx @@ -13,7 +13,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardMenu from "@saleor/components/CardMenu"; import CardTitle from "@saleor/components/CardTitle"; diff --git a/saleor/static/dashboard-next/orders/components/OrderFulfillmentCancelDialog/OrderFulfillmentCancelDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderFulfillmentCancelDialog/OrderFulfillmentCancelDialog.tsx index 992db9000d4..8db36146498 100644 --- a/saleor/static/dashboard-next/orders/components/OrderFulfillmentCancelDialog/OrderFulfillmentCancelDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderFulfillmentCancelDialog/OrderFulfillmentCancelDialog.tsx @@ -10,7 +10,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/orders/components/OrderFulfillmentDialog/OrderFulfillmentDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderFulfillmentDialog/OrderFulfillmentDialog.tsx index 23370da00ed..92657cdb875 100644 --- a/saleor/static/dashboard-next/orders/components/OrderFulfillmentDialog/OrderFulfillmentDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderFulfillmentDialog/OrderFulfillmentDialog.tsx @@ -15,7 +15,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/orders/components/OrderFulfillmentTrackingDialog/OrderFulfillmentTrackingDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderFulfillmentTrackingDialog/OrderFulfillmentTrackingDialog.tsx index 0f6c9e9c3ea..df3df08fe72 100644 --- a/saleor/static/dashboard-next/orders/components/OrderFulfillmentTrackingDialog/OrderFulfillmentTrackingDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderFulfillmentTrackingDialog/OrderFulfillmentTrackingDialog.tsx @@ -4,7 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/orders/components/OrderHistory/OrderHistory.tsx b/saleor/static/dashboard-next/orders/components/OrderHistory/OrderHistory.tsx index 93dda34e44b..e04b7e20409 100644 --- a/saleor/static/dashboard-next/orders/components/OrderHistory/OrderHistory.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderHistory/OrderHistory.tsx @@ -5,7 +5,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import Form from "@saleor/components/Form"; import Hr from "@saleor/components/Hr"; diff --git a/saleor/static/dashboard-next/orders/components/OrderList/OrderList.tsx b/saleor/static/dashboard-next/orders/components/OrderList/OrderList.tsx index 67b0e01b51c..b64b8c87256 100644 --- a/saleor/static/dashboard-next/orders/components/OrderList/OrderList.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderList/OrderList.tsx @@ -9,7 +9,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import { DateTime } from "@saleor/components/Date"; diff --git a/saleor/static/dashboard-next/orders/components/OrderListFilter/OrderListFilter.tsx b/saleor/static/dashboard-next/orders/components/OrderListFilter/OrderListFilter.tsx index 6fe3b547df6..a76489479e7 100644 --- a/saleor/static/dashboard-next/orders/components/OrderListFilter/OrderListFilter.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderListFilter/OrderListFilter.tsx @@ -1,5 +1,5 @@ -import * as moment from "moment-timezone"; -import * as React from "react"; +import moment from "moment-timezone"; +import React from "react"; import { DateContext } from "@saleor/components/Date/DateContext"; import { FieldType, IFilter } from "@saleor/components/Filter"; diff --git a/saleor/static/dashboard-next/orders/components/OrderListPage/OrderListPage.tsx b/saleor/static/dashboard-next/orders/components/OrderListPage/OrderListPage.tsx index 9b20884cf87..96d25ba14da 100644 --- a/saleor/static/dashboard-next/orders/components/OrderListPage/OrderListPage.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderListPage/OrderListPage.tsx @@ -1,7 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import Container from "@saleor/components/Container"; import PageHeader from "@saleor/components/PageHeader"; diff --git a/saleor/static/dashboard-next/orders/components/OrderMarkAsPaidDialog/OrderMarkAsPaidDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderMarkAsPaidDialog/OrderMarkAsPaidDialog.tsx index dc32a3be7a3..19e83e459d8 100644 --- a/saleor/static/dashboard-next/orders/components/OrderMarkAsPaidDialog/OrderMarkAsPaidDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderMarkAsPaidDialog/OrderMarkAsPaidDialog.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; diff --git a/saleor/static/dashboard-next/orders/components/OrderPayment/OrderPayment.tsx b/saleor/static/dashboard-next/orders/components/OrderPayment/OrderPayment.tsx index 31638a022a6..2701e0c81b6 100644 --- a/saleor/static/dashboard-next/orders/components/OrderPayment/OrderPayment.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderPayment/OrderPayment.tsx @@ -8,7 +8,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { Hr } from "@saleor/components/Hr"; diff --git a/saleor/static/dashboard-next/orders/components/OrderPaymentDialog/OrderPaymentDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderPaymentDialog/OrderPaymentDialog.tsx index 89a87c0fe49..5e9f8b06814 100644 --- a/saleor/static/dashboard-next/orders/components/OrderPaymentDialog/OrderPaymentDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderPaymentDialog/OrderPaymentDialog.tsx @@ -4,7 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState @@ -72,9 +72,9 @@ const OrderPaymentDialog: React.StatelessComponent = ({ transitionState={confirmButtonState} color="primary" variant="contained" - onClick={data => { + onClick={() => { onClose(); - submit(data); + submit(); }} > {i18n.t("Confirm", { context: "button" })} diff --git a/saleor/static/dashboard-next/orders/components/OrderPaymentVoidDialog/OrderPaymentVoidDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderPaymentVoidDialog/OrderPaymentVoidDialog.tsx index 06a36d9b328..28ae4a09366 100644 --- a/saleor/static/dashboard-next/orders/components/OrderPaymentVoidDialog/OrderPaymentVoidDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderPaymentVoidDialog/OrderPaymentVoidDialog.tsx @@ -4,7 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogContentText from "@material-ui/core/DialogContentText"; import DialogTitle from "@material-ui/core/DialogTitle"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/orders/components/OrderProductAddDialog/OrderProductAddDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderProductAddDialog/OrderProductAddDialog.tsx index 38df75cbe2f..178f61edc63 100644 --- a/saleor/static/dashboard-next/orders/components/OrderProductAddDialog/OrderProductAddDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderProductAddDialog/OrderProductAddDialog.tsx @@ -15,8 +15,8 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; -import * as InfiniteScroll from "react-infinite-scroller"; +import React from "react"; +import InfiniteScroll from "react-infinite-scroller"; import Checkbox from "@saleor/components/Checkbox"; import ConfirmButton, { diff --git a/saleor/static/dashboard-next/orders/components/OrderShippingMethodEditDialog/OrderShippingMethodEditDialog.tsx b/saleor/static/dashboard-next/orders/components/OrderShippingMethodEditDialog/OrderShippingMethodEditDialog.tsx index 66803c788ad..d290f5f032f 100644 --- a/saleor/static/dashboard-next/orders/components/OrderShippingMethodEditDialog/OrderShippingMethodEditDialog.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderShippingMethodEditDialog/OrderShippingMethodEditDialog.tsx @@ -9,7 +9,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/orders/components/OrderUnfulfilledItems/OrderUnfulfilledItems.tsx b/saleor/static/dashboard-next/orders/components/OrderUnfulfilledItems/OrderUnfulfilledItems.tsx index 19949f23f6f..7a20e34b012 100644 --- a/saleor/static/dashboard-next/orders/components/OrderUnfulfilledItems/OrderUnfulfilledItems.tsx +++ b/saleor/static/dashboard-next/orders/components/OrderUnfulfilledItems/OrderUnfulfilledItems.tsx @@ -7,7 +7,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Money from "@saleor/components/Money"; diff --git a/saleor/static/dashboard-next/orders/containers/OrderOperations.tsx b/saleor/static/dashboard-next/orders/containers/OrderOperations.tsx index 2a9297fcd36..f41eeb3c2ce 100644 --- a/saleor/static/dashboard-next/orders/containers/OrderOperations.tsx +++ b/saleor/static/dashboard-next/orders/containers/OrderOperations.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { getMutationProviderData } from "../../misc"; import { PartialMutationProviderOutput } from "../../types"; diff --git a/saleor/static/dashboard-next/orders/index.tsx b/saleor/static/dashboard-next/orders/index.tsx index 09490bb350b..7dad19c21ad 100644 --- a/saleor/static/dashboard-next/orders/index.tsx +++ b/saleor/static/dashboard-next/orders/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/orders/urls.ts b/saleor/static/dashboard-next/orders/urls.ts index 5edbbd758ba..c54540c6cbf 100644 --- a/saleor/static/dashboard-next/orders/urls.ts +++ b/saleor/static/dashboard-next/orders/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { ActiveTab, diff --git a/saleor/static/dashboard-next/orders/views/OrderDetails/OrderDetailsMessages.tsx b/saleor/static/dashboard-next/orders/views/OrderDetails/OrderDetailsMessages.tsx index e4383c10724..d24d7f741e0 100644 --- a/saleor/static/dashboard-next/orders/views/OrderDetails/OrderDetailsMessages.tsx +++ b/saleor/static/dashboard-next/orders/views/OrderDetails/OrderDetailsMessages.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; diff --git a/saleor/static/dashboard-next/orders/views/OrderDetails/index.tsx b/saleor/static/dashboard-next/orders/views/OrderDetails/index.tsx index 1afec5dcdaf..a1cb7017884 100644 --- a/saleor/static/dashboard-next/orders/views/OrderDetails/index.tsx +++ b/saleor/static/dashboard-next/orders/views/OrderDetails/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/orders/views/OrderDraftList.tsx b/saleor/static/dashboard-next/orders/views/OrderDraftList.tsx index e73c966b892..17e9ebf2acb 100644 --- a/saleor/static/dashboard-next/orders/views/OrderDraftList.tsx +++ b/saleor/static/dashboard-next/orders/views/OrderDraftList.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; diff --git a/saleor/static/dashboard-next/orders/views/OrderList/OrderList.tsx b/saleor/static/dashboard-next/orders/views/OrderList/OrderList.tsx index f0b19205e75..7c40ef42022 100644 --- a/saleor/static/dashboard-next/orders/views/OrderList/OrderList.tsx +++ b/saleor/static/dashboard-next/orders/views/OrderList/OrderList.tsx @@ -1,5 +1,5 @@ import Button from "@material-ui/core/Button"; -import * as React from "react"; +import React from "react"; import DeleteFilterTabDialog from "@saleor/components/DeleteFilterTabDialog"; import SaveFilterTabDialog, { diff --git a/saleor/static/dashboard-next/pages/components/PageDetailsPage/PageDetailsPage.tsx b/saleor/static/dashboard-next/pages/components/PageDetailsPage/PageDetailsPage.tsx index 18cbd54b985..d55ad79e864 100644 --- a/saleor/static/dashboard-next/pages/components/PageDetailsPage/PageDetailsPage.tsx +++ b/saleor/static/dashboard-next/pages/components/PageDetailsPage/PageDetailsPage.tsx @@ -4,7 +4,7 @@ import { convertToRaw, RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/pages/components/PageInfo/PageInfo.tsx b/saleor/static/dashboard-next/pages/components/PageInfo/PageInfo.tsx index 3d7d5de9e50..db53dcb7e77 100644 --- a/saleor/static/dashboard-next/pages/components/PageInfo/PageInfo.tsx +++ b/saleor/static/dashboard-next/pages/components/PageInfo/PageInfo.tsx @@ -2,7 +2,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import FormSpacer from "@saleor/components/FormSpacer"; diff --git a/saleor/static/dashboard-next/pages/components/PageList/PageList.tsx b/saleor/static/dashboard-next/pages/components/PageList/PageList.tsx index ad77e8d68ca..a02195c8478 100644 --- a/saleor/static/dashboard-next/pages/components/PageList/PageList.tsx +++ b/saleor/static/dashboard-next/pages/components/PageList/PageList.tsx @@ -10,7 +10,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/pages/components/PageListPage/PageListPage.tsx b/saleor/static/dashboard-next/pages/components/PageListPage/PageListPage.tsx index 1e6a72bc917..d5666cb8cbf 100644 --- a/saleor/static/dashboard-next/pages/components/PageListPage/PageListPage.tsx +++ b/saleor/static/dashboard-next/pages/components/PageListPage/PageListPage.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import Container from "@saleor/components/Container"; diff --git a/saleor/static/dashboard-next/pages/components/PageSlug/PageSlug.tsx b/saleor/static/dashboard-next/pages/components/PageSlug/PageSlug.tsx index b251e4af277..0cfa9c7ba9b 100644 --- a/saleor/static/dashboard-next/pages/components/PageSlug/PageSlug.tsx +++ b/saleor/static/dashboard-next/pages/components/PageSlug/PageSlug.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import slugify from "slugify"; import CardTitle from "@saleor/components/CardTitle"; diff --git a/saleor/static/dashboard-next/pages/index.tsx b/saleor/static/dashboard-next/pages/index.tsx index d156d0941c4..e45c1b49fe7 100644 --- a/saleor/static/dashboard-next/pages/index.tsx +++ b/saleor/static/dashboard-next/pages/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/pages/urls.ts b/saleor/static/dashboard-next/pages/urls.ts index 6761dd81fb2..dd4c6c88f37 100644 --- a/saleor/static/dashboard-next/pages/urls.ts +++ b/saleor/static/dashboard-next/pages/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { BulkAction, Dialog, Pagination } from "../types"; diff --git a/saleor/static/dashboard-next/pages/views/PageCreate.tsx b/saleor/static/dashboard-next/pages/views/PageCreate.tsx index 367d4b92988..615deab40a1 100644 --- a/saleor/static/dashboard-next/pages/views/PageCreate.tsx +++ b/saleor/static/dashboard-next/pages/views/PageCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/pages/views/PageDetails.tsx b/saleor/static/dashboard-next/pages/views/PageDetails.tsx index e8b64a283b2..90d0e1b0078 100644 --- a/saleor/static/dashboard-next/pages/views/PageDetails.tsx +++ b/saleor/static/dashboard-next/pages/views/PageDetails.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; diff --git a/saleor/static/dashboard-next/pages/views/PageList.tsx b/saleor/static/dashboard-next/pages/views/PageList.tsx index bdfea8fbb60..c22b5e6d6f4 100644 --- a/saleor/static/dashboard-next/pages/views/PageList.tsx +++ b/saleor/static/dashboard-next/pages/views/PageList.tsx @@ -2,7 +2,7 @@ import Button from "@material-ui/core/Button"; import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeAttributeEditDialog/ProductTypeAttributeEditDialog.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeAttributeEditDialog/ProductTypeAttributeEditDialog.tsx index 7e431962c88..e275ed5c81d 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeAttributeEditDialog/ProductTypeAttributeEditDialog.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeAttributeEditDialog/ProductTypeAttributeEditDialog.tsx @@ -4,7 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import Form from "@saleor/components/Form"; import { FormSpacer } from "@saleor/components/FormSpacer"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeAttributes/ProductTypeAttributes.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeAttributes/ProductTypeAttributes.tsx index e75f41ab40c..68bec786594 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeAttributes/ProductTypeAttributes.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeAttributes/ProductTypeAttributes.tsx @@ -13,7 +13,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeCreatePage/ProductTypeCreatePage.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeCreatePage/ProductTypeCreatePage.tsx index 76dfcda746f..d59b23daf3c 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeCreatePage/ProductTypeCreatePage.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeCreatePage/ProductTypeCreatePage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeDetails/ProductTypeDetails.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeDetails/ProductTypeDetails.tsx index 984b1f03d91..e25977bd08f 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeDetails/ProductTypeDetails.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeDetails/ProductTypeDetails.tsx @@ -2,7 +2,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeDetailsPage/ProductTypeDetailsPage.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeDetailsPage/ProductTypeDetailsPage.tsx index bffc67b0d73..051cf9b4ce0 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeDetailsPage/ProductTypeDetailsPage.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeDetailsPage/ProductTypeDetailsPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeList/ProductTypeList.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeList/ProductTypeList.tsx index 6ad65504f05..b95404c7c25 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeList/ProductTypeList.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeList/ProductTypeList.tsx @@ -11,7 +11,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeListPage/ProductTypeListPage.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeListPage/ProductTypeListPage.tsx index 52c7545572d..67d130f2e91 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeListPage/ProductTypeListPage.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeListPage/ProductTypeListPage.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import Container from "@saleor/components/Container"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeShipping/ProductTypeShipping.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeShipping/ProductTypeShipping.tsx index 5ad7b53e859..be0b5daa230 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeShipping/ProductTypeShipping.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeShipping/ProductTypeShipping.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox"; diff --git a/saleor/static/dashboard-next/productTypes/components/ProductTypeTaxes/ProductTypeTaxes.tsx b/saleor/static/dashboard-next/productTypes/components/ProductTypeTaxes/ProductTypeTaxes.tsx index c824355b4f8..77dff89644d 100644 --- a/saleor/static/dashboard-next/productTypes/components/ProductTypeTaxes/ProductTypeTaxes.tsx +++ b/saleor/static/dashboard-next/productTypes/components/ProductTypeTaxes/ProductTypeTaxes.tsx @@ -1,6 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import SingleSelectField from "@saleor/components/SingleSelectField"; diff --git a/saleor/static/dashboard-next/productTypes/containers/ProductTypeOperations.tsx b/saleor/static/dashboard-next/productTypes/containers/ProductTypeOperations.tsx index f99152083ac..ce34e26602d 100644 --- a/saleor/static/dashboard-next/productTypes/containers/ProductTypeOperations.tsx +++ b/saleor/static/dashboard-next/productTypes/containers/ProductTypeOperations.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { getMutationProviderData } from "../../misc"; import { PartialMutationProviderOutput } from "../../types"; diff --git a/saleor/static/dashboard-next/productTypes/index.tsx b/saleor/static/dashboard-next/productTypes/index.tsx index c5232cfe0e8..b80cb3dcf24 100644 --- a/saleor/static/dashboard-next/productTypes/index.tsx +++ b/saleor/static/dashboard-next/productTypes/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/productTypes/urls.ts b/saleor/static/dashboard-next/productTypes/urls.ts index 509f22d478e..2ba27d63515 100644 --- a/saleor/static/dashboard-next/productTypes/urls.ts +++ b/saleor/static/dashboard-next/productTypes/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { BulkAction, Dialog, Pagination, SingleAction } from "../types"; import { AttributeTypeEnum } from "../types/globalTypes"; diff --git a/saleor/static/dashboard-next/productTypes/views/ProductTypeCreate.tsx b/saleor/static/dashboard-next/productTypes/views/ProductTypeCreate.tsx index 1b21b96f2de..51bc8cab015 100644 --- a/saleor/static/dashboard-next/productTypes/views/ProductTypeCreate.tsx +++ b/saleor/static/dashboard-next/productTypes/views/ProductTypeCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/productTypes/views/ProductTypeList.tsx b/saleor/static/dashboard-next/productTypes/views/ProductTypeList.tsx index 40d66ef2f51..101b9fc26f8 100644 --- a/saleor/static/dashboard-next/productTypes/views/ProductTypeList.tsx +++ b/saleor/static/dashboard-next/productTypes/views/ProductTypeList.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; diff --git a/saleor/static/dashboard-next/productTypes/views/ProductTypeUpdate/errors.tsx b/saleor/static/dashboard-next/productTypes/views/ProductTypeUpdate/errors.tsx index 851bf6c30ee..d61ce121b80 100644 --- a/saleor/static/dashboard-next/productTypes/views/ProductTypeUpdate/errors.tsx +++ b/saleor/static/dashboard-next/productTypes/views/ProductTypeUpdate/errors.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { UserError } from "../../../types"; diff --git a/saleor/static/dashboard-next/productTypes/views/ProductTypeUpdate/index.tsx b/saleor/static/dashboard-next/productTypes/views/ProductTypeUpdate/index.tsx index d7099f31bba..25348b6ec6f 100644 --- a/saleor/static/dashboard-next/productTypes/views/ProductTypeUpdate/index.tsx +++ b/saleor/static/dashboard-next/productTypes/views/ProductTypeUpdate/index.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; diff --git a/saleor/static/dashboard-next/products/components/ProductCategoryAndCollectionsForm/ProductCategoryAndCollectionsForm.tsx b/saleor/static/dashboard-next/products/components/ProductCategoryAndCollectionsForm/ProductCategoryAndCollectionsForm.tsx index ae890a1a247..0e109b9a65f 100644 --- a/saleor/static/dashboard-next/products/components/ProductCategoryAndCollectionsForm/ProductCategoryAndCollectionsForm.tsx +++ b/saleor/static/dashboard-next/products/components/ProductCategoryAndCollectionsForm/ProductCategoryAndCollectionsForm.tsx @@ -1,6 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import * as React from "react"; +import React from "react"; import FormSpacer from "@saleor/components/FormSpacer"; import MultiSelectField from "@saleor/components/MultiSelectField"; diff --git a/saleor/static/dashboard-next/products/components/ProductCreatePage/ProductCreatePage.tsx b/saleor/static/dashboard-next/products/components/ProductCreatePage/ProductCreatePage.tsx index ce65f194e59..0fd7ee7555b 100644 --- a/saleor/static/dashboard-next/products/components/ProductCreatePage/ProductCreatePage.tsx +++ b/saleor/static/dashboard-next/products/components/ProductCreatePage/ProductCreatePage.tsx @@ -1,5 +1,5 @@ import { RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; @@ -130,7 +130,7 @@ export const ProductCreatePage: React.StatelessComponent< initial={initialData} confirmLeave > - {({ change, data, errors, hasChanged, submit }) => { + {({ change, data, errors, hasChanged, set, submit }) => { const hasVariants = data.productType && data.productType.value.hasVariants; return ( @@ -203,6 +203,7 @@ export const ProductCreatePage: React.StatelessComponent< data={data} disabled={disabled} onChange={change} + onSet={set} /> } }); +interface ProductOrganizationFormData { + attributes: Array<{ + slug: string; + value: string; + }>; + category: ChoiceType; + collections: ChoiceType[]; + productType: { + label: string; + value: { + hasVariants: boolean; + id: string; + name: string; + productAttributes: ProductCreateData_productTypes_edges_node_productAttributes[]; + }; + }; +} + interface ProductOrganizationProps extends WithStyles { canChangeType: boolean; categories?: Array<{ value: string; label: string }>; collections?: Array<{ value: string; label: string }>; - data: { - attributes: Array<{ - slug: string; - value: string; - }>; - category: ChoiceType; - collections: ChoiceType[]; - productType: { - label: string; - value: { - hasVariants: boolean; - id: string; - name: string; - productAttributes: ProductCreateData_productTypes_edges_node_productAttributes[]; - }; - }; - }; + data: ProductOrganizationFormData; disabled: boolean; errors: { [key: string]: string }; product?: { @@ -83,7 +86,8 @@ interface ProductOrganizationProps extends WithStyles { productTypes?: ProductType[]; fetchCategories: (query: string) => void; fetchCollections: (query: string) => void; - onChange: (event: React.ChangeEvent, cb?: () => void) => void; + onChange: (event: ChangeEvent) => void; + onSet: (data: Partial) => void; } const ProductOrganization = withStyles(styles, { name: "ProductOrganization" })( @@ -99,7 +103,8 @@ const ProductOrganization = withStyles(styles, { name: "ProductOrganization" })( fetchCollections, product, productTypes, - onChange + onChange, + onSet }: ProductOrganizationProps) => { const unrolledAttributes = maybe( () => data.productType.value.productAttributes, @@ -141,35 +146,32 @@ const ProductOrganization = withStyles(styles, { name: "ProductOrganization" })( const getAttributeValues = (slug: string) => { const match = unrolledAttributes.find(a => a.slug === slug); if (match) { - return match.values; + return match.values.map(v => ({ + label: v.name, + value: v.slug + })); } return []; }; const handleProductTypeSelect = ( - event: React.ChangeEvent<{ - name: string; - value: { + event: ChangeEvent< + string, + { label: string; value: ProductType; - }; - }> + } + > ) => { - onChange(event, () => - onChange({ - ...event, - target: { - ...event.target, - name: "attributes", - value: event.target.value.value.productAttributes.map( - attribute => ({ - slug: attribute.slug, - value: "" - }) - ) - } - }) - ); + onSet({ + attributes: event.target.value.value.productAttributes.map( + attribute => ({ + slug: attribute.slug, + value: "" + }) + ), + productType: event.target.value + }); }; const handleAttributeValueSelect = ( event: React.ChangeEvent<{ @@ -260,10 +262,7 @@ const ProductOrganization = withStyles(styles, { name: "ProductOrganization" })( label={getAttributeName(item.slug)} onChange={handleAttributeValueSelect} value={getAttributeValue(item.slug)} - choices={getAttributeValues(item.slug).map(v => ({ - label: v.name, - value: v.slug - }))} + choices={getAttributeValues(item.slug)} custom /> diff --git a/saleor/static/dashboard-next/products/components/ProductPricing/ProductPricing.tsx b/saleor/static/dashboard-next/products/components/ProductPricing/ProductPricing.tsx index 41cb7b50a0f..fc22a32f00b 100644 --- a/saleor/static/dashboard-next/products/components/ProductPricing/ProductPricing.tsx +++ b/saleor/static/dashboard-next/products/components/ProductPricing/ProductPricing.tsx @@ -6,7 +6,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import ControlledCheckbox from "@saleor/components/ControlledCheckbox"; diff --git a/saleor/static/dashboard-next/products/components/ProductStock/ProductStock.tsx b/saleor/static/dashboard-next/products/components/ProductStock/ProductStock.tsx index f861b817c54..3407fcb843d 100644 --- a/saleor/static/dashboard-next/products/components/ProductStock/ProductStock.tsx +++ b/saleor/static/dashboard-next/products/components/ProductStock/ProductStock.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/products/components/ProductUpdatePage/ProductUpdatePage.tsx b/saleor/static/dashboard-next/products/components/ProductUpdatePage/ProductUpdatePage.tsx index 6f1d6f0aa08..8fc31ac91d1 100644 --- a/saleor/static/dashboard-next/products/components/ProductUpdatePage/ProductUpdatePage.tsx +++ b/saleor/static/dashboard-next/products/components/ProductUpdatePage/ProductUpdatePage.tsx @@ -1,5 +1,5 @@ import { convertFromRaw, RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; @@ -206,7 +206,7 @@ export const ProductUpdate: React.StatelessComponent = ({ initial={initialData} confirmLeave > - {({ change, data, errors, hasChanged, submit }) => ( + {({ change, data, errors, hasChanged, set, submit }) => ( <> {i18n.t("Products")} @@ -287,6 +287,7 @@ export const ProductUpdate: React.StatelessComponent = ({ data={data} disabled={disabled} onChange={change} + onSet={set} /> { attributes?: ProductVariant_attributes_attribute[]; data: { attributes?: Array<{ + name: string; slug: string; value: string; }>; @@ -56,84 +57,84 @@ const ProductVariantAttributes = withStyles(styles, { data, disabled, onChange - }: ProductVariantAttributesProps) => { - return ( - - - - {attributes === undefined ? ( - - ) : ( - attributes.map((item, index) => { - const getAttributeValue = (slug: string) => { - const valueMatches = attributes.filter(a => a.slug === slug); - if (valueMatches.length > 0) { - const value = data.attributes.filter(a => a.slug === slug)[0] - .value; - const labelMatches = valueMatches[0].values.filter( - v => v.slug === value - ); - const label = - labelMatches.length > 0 ? labelMatches[0].name : value; - return { - label, - value - }; - } + }: ProductVariantAttributesProps) => ( + + + + {attributes === undefined && data.attributes.length === 0 ? ( + + ) : ( + data.attributes.map((attribute, attributeIndex) => { + const getAttributeValue = (slug: string) => { + const valueMatch = attributes.find(a => a.slug === slug); + if (valueMatch) { + const value = data.attributes.find(a => a.slug === slug).value; + const labelMatch = valueMatch.values.find( + v => v.slug === value + ); + const label = labelMatch ? labelMatch.name : value; return { - label: "", - value: "" + label, + value }; + } + return { + label: "", + value: "" }; - const getAttributeValues = (slug: string) => { - const matches = attributes.filter(a => a.slug === slug); - return matches.length > 0 - ? matches[0].values.map(v => ({ - label: v.name, - value: v.slug - })) - : []; - }; - const handleAttributeValueSelect = ( - event: React.ChangeEvent<{ - name: string; - value: { - label: string; - value: string; - }; - }> - ) => - onChange({ - ...(event as any), - target: { - ...event.target, - name: "attributes", - value: data.attributes.map(a => - a.slug === event.target.name - ? { slug: a.slug, value: event.target.value.value } - : a - ) - } - }); + }; + const getAttributeValues = (slug: string) => { + const matches = attributes.filter(a => a.slug === slug); + return matches.length > 0 + ? matches[0].values.map(v => ({ + label: v.name, + value: v.slug + })) + : []; + }; + const handleAttributeValueSelect = ( + event: React.ChangeEvent<{ + name: string; + value: { + label: string; + value: string; + }; + }> + ) => + onChange({ + ...(event as any), + target: { + ...event.target, + name: "attributes", + value: data.attributes.map(a => + a.slug === event.target.name + ? { + name: a.name, + slug: a.slug, + value: event.target.value.value + } + : a + ) + } + }); - return ( - - ); - }) - )} - - - ); - } + return ( + + ); + }) + )} + + + ) ); ProductVariantAttributes.displayName = "ProductVariantAttributes"; export default ProductVariantAttributes; diff --git a/saleor/static/dashboard-next/products/components/ProductVariantCreatePage/ProductVariantCreatePage.tsx b/saleor/static/dashboard-next/products/components/ProductVariantCreatePage/ProductVariantCreatePage.tsx index b865a7b3dca..03ab9d90b75 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariantCreatePage/ProductVariantCreatePage.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariantCreatePage/ProductVariantCreatePage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; @@ -18,15 +18,16 @@ import ProductVariantPrice from "../ProductVariantPrice"; import ProductVariantStock from "../ProductVariantStock"; interface FormData { - attributes?: Array<{ + attributes: Array<{ + name: string; slug: string; value: string; }>; - costPrice?: string; - images?: string[]; - priceOverride?: string; - quantity?: number; - sku?: string; + costPrice: string; + images: string[]; + priceOverride: string; + quantity: number; + sku: string; } interface ProductVariantCreatePageProps { @@ -55,11 +56,14 @@ const ProductVariantCreatePage: React.StatelessComponent< onVariantClick }) => { const initialForm = { - attributes: maybe(() => - product.productType.variantAttributes.map(attribute => ({ - slug: attribute.slug, - value: "" - })) + attributes: maybe( + () => + product.productType.variantAttributes.map(attribute => ({ + name: attribute.name, + slug: attribute.slug, + value: "" + })), + [] ), costPrice: "", images: maybe(() => product.images.map(image => image.id)), diff --git a/saleor/static/dashboard-next/products/components/ProductVariantDeleteDialog/ProductVariantDeleteDialog.tsx b/saleor/static/dashboard-next/products/components/ProductVariantDeleteDialog/ProductVariantDeleteDialog.tsx index 73569e58e75..b900e973b9b 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariantDeleteDialog/ProductVariantDeleteDialog.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariantDeleteDialog/ProductVariantDeleteDialog.tsx @@ -10,7 +10,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/products/components/ProductVariantImageSelectDialog/ProductVariantImageSelectDialog.tsx b/saleor/static/dashboard-next/products/components/ProductVariantImageSelectDialog/ProductVariantImageSelectDialog.tsx index 19c5bde553f..028a5eacdad 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariantImageSelectDialog/ProductVariantImageSelectDialog.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariantImageSelectDialog/ProductVariantImageSelectDialog.tsx @@ -9,8 +9,8 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import i18n from "../../../i18n"; import { ProductImage } from "../../types/ProductImage"; diff --git a/saleor/static/dashboard-next/products/components/ProductVariantImages/ProductVariantImages.tsx b/saleor/static/dashboard-next/products/components/ProductVariantImages/ProductVariantImages.tsx index b111281cb11..6dda4936c20 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariantImages/ProductVariantImages.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariantImages/ProductVariantImages.tsx @@ -8,7 +8,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/products/components/ProductVariantNavigation/ProductVariantNavigation.tsx b/saleor/static/dashboard-next/products/components/ProductVariantNavigation/ProductVariantNavigation.tsx index 34efe023521..9b04808a18f 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariantNavigation/ProductVariantNavigation.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariantNavigation/ProductVariantNavigation.tsx @@ -10,8 +10,8 @@ import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/products/components/ProductVariantPage/ProductVariantPage.tsx b/saleor/static/dashboard-next/products/components/ProductVariantPage/ProductVariantPage.tsx index 90caa129044..4b307192101 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariantPage/ProductVariantPage.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariantPage/ProductVariantPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; @@ -70,13 +70,15 @@ const ProductVariantPage: React.StatelessComponent = ({
({ - slug: a.attribute.slug, - value: a.value.slug - })) - : [], + attributes: maybe( + () => + variant.attributes.map(a => ({ + name: a.attribute.name, + slug: a.attribute.slug, + value: a.value.slug + })), + [] + ), costPrice: variant && variant.costPrice ? variant.costPrice.amount.toString() diff --git a/saleor/static/dashboard-next/products/components/ProductVariantPrice/ProductVariantPrice.tsx b/saleor/static/dashboard-next/products/components/ProductVariantPrice/ProductVariantPrice.tsx index 7166242bf4e..077a4b49de7 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariantPrice/ProductVariantPrice.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariantPrice/ProductVariantPrice.tsx @@ -6,7 +6,7 @@ import { withStyles, WithStyles } from "@material-ui/core/styles"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import PriceField from "@saleor/components/PriceField"; diff --git a/saleor/static/dashboard-next/products/components/ProductVariantStock/ProductVariantStock.tsx b/saleor/static/dashboard-next/products/components/ProductVariantStock/ProductVariantStock.tsx index 9e07de8b65e..748f85362c8 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariantStock/ProductVariantStock.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariantStock/ProductVariantStock.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/products/components/ProductVariants/ProductVariants.tsx b/saleor/static/dashboard-next/products/components/ProductVariants/ProductVariants.tsx index 389834ac227..5e7acbe7750 100644 --- a/saleor/static/dashboard-next/products/components/ProductVariants/ProductVariants.tsx +++ b/saleor/static/dashboard-next/products/components/ProductVariants/ProductVariants.tsx @@ -13,7 +13,7 @@ import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Checkbox from "@saleor/components/Checkbox"; diff --git a/saleor/static/dashboard-next/products/containers/ProductImagesReorder.tsx b/saleor/static/dashboard-next/products/containers/ProductImagesReorder.tsx index 3a9cd2d7b5c..bd49b8a4a13 100644 --- a/saleor/static/dashboard-next/products/containers/ProductImagesReorder.tsx +++ b/saleor/static/dashboard-next/products/containers/ProductImagesReorder.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { TypedMutationInnerProps } from "../../mutations"; import { TypedProductImagesReorder } from "../mutations"; diff --git a/saleor/static/dashboard-next/products/containers/ProductUpdateOperations.tsx b/saleor/static/dashboard-next/products/containers/ProductUpdateOperations.tsx index e00558c4115..3ed040bbcf9 100644 --- a/saleor/static/dashboard-next/products/containers/ProductUpdateOperations.tsx +++ b/saleor/static/dashboard-next/products/containers/ProductUpdateOperations.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { getMutationProviderData, maybe } from "../../misc"; import { PartialMutationProviderOutput } from "../../types"; diff --git a/saleor/static/dashboard-next/products/containers/ProductVariantOperations.tsx b/saleor/static/dashboard-next/products/containers/ProductVariantOperations.tsx index a636ac989f9..d93bf6bde58 100644 --- a/saleor/static/dashboard-next/products/containers/ProductVariantOperations.tsx +++ b/saleor/static/dashboard-next/products/containers/ProductVariantOperations.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { getMutationProviderData } from "../../misc"; import { PartialMutationProviderOutput } from "../../types"; diff --git a/saleor/static/dashboard-next/products/index.tsx b/saleor/static/dashboard-next/products/index.tsx index d5023e58f20..c824753101a 100644 --- a/saleor/static/dashboard-next/products/index.tsx +++ b/saleor/static/dashboard-next/products/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/products/mutations.ts b/saleor/static/dashboard-next/products/mutations.ts index b8845d331ef..ef7024d6909 100644 --- a/saleor/static/dashboard-next/products/mutations.ts +++ b/saleor/static/dashboard-next/products/mutations.ts @@ -124,6 +124,7 @@ export const productUpdateMutation = gql` $isPublished: Boolean! $name: String $basePrice: Decimal + $seo: SeoInput ) { productUpdate( id: $id @@ -137,6 +138,7 @@ export const productUpdateMutation = gql` isPublished: $isPublished name: $name basePrice: $basePrice + seo: $seo } ) { errors { @@ -170,6 +172,7 @@ export const simpleProductUpdateMutation = gql` $basePrice: Decimal $productVariantId: ID! $productVariantInput: ProductVariantInput! + $seo: SeoInput ) { productUpdate( id: $id @@ -183,6 +186,7 @@ export const simpleProductUpdateMutation = gql` isPublished: $isPublished name: $name basePrice: $basePrice + seo: $seo } ) { errors { @@ -224,6 +228,7 @@ export const productCreateMutation = gql` $productType: ID! $sku: String $stockQuantity: Int + $seo: SeoInput ) { productCreate( input: { @@ -239,6 +244,7 @@ export const productCreateMutation = gql` productType: $productType sku: $sku quantity: $stockQuantity + seo: $seo } ) { errors { diff --git a/saleor/static/dashboard-next/products/types/ProductCreate.ts b/saleor/static/dashboard-next/products/types/ProductCreate.ts index 2ea04795733..5688b7287ee 100644 --- a/saleor/static/dashboard-next/products/types/ProductCreate.ts +++ b/saleor/static/dashboard-next/products/types/ProductCreate.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { AttributeValueInput } from "./../../types/globalTypes"; +import { AttributeValueInput, SeoInput } from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: ProductCreate @@ -196,4 +196,5 @@ export interface ProductCreateVariables { productType: string; sku?: string | null; stockQuantity?: number | null; + seo?: SeoInput | null; } diff --git a/saleor/static/dashboard-next/products/types/ProductUpdate.ts b/saleor/static/dashboard-next/products/types/ProductUpdate.ts index 0b8795836c2..b991242e01f 100644 --- a/saleor/static/dashboard-next/products/types/ProductUpdate.ts +++ b/saleor/static/dashboard-next/products/types/ProductUpdate.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { AttributeValueInput } from "./../../types/globalTypes"; +import { AttributeValueInput, SeoInput } from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: ProductUpdate @@ -194,4 +194,5 @@ export interface ProductUpdateVariables { isPublished: boolean; name?: string | null; basePrice?: any | null; + seo?: SeoInput | null; } diff --git a/saleor/static/dashboard-next/products/types/SimpleProductUpdate.ts b/saleor/static/dashboard-next/products/types/SimpleProductUpdate.ts index 66563c9aa9f..5b0b3d69b70 100644 --- a/saleor/static/dashboard-next/products/types/SimpleProductUpdate.ts +++ b/saleor/static/dashboard-next/products/types/SimpleProductUpdate.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { AttributeValueInput, ProductVariantInput } from "./../../types/globalTypes"; +import { AttributeValueInput, ProductVariantInput, SeoInput } from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: SimpleProductUpdate @@ -305,4 +305,5 @@ export interface SimpleProductUpdateVariables { basePrice?: any | null; productVariantId: string; productVariantInput: ProductVariantInput; + seo?: SeoInput | null; } diff --git a/saleor/static/dashboard-next/products/urls.ts b/saleor/static/dashboard-next/products/urls.ts index 7f9fa09ce59..2a62be3bd75 100644 --- a/saleor/static/dashboard-next/products/urls.ts +++ b/saleor/static/dashboard-next/products/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { ActiveTab, BulkAction, Dialog, Filters, Pagination } from "../types"; diff --git a/saleor/static/dashboard-next/products/views/ProductCreate.tsx b/saleor/static/dashboard-next/products/views/ProductCreate.tsx index 7a996113af6..b806e61bbac 100644 --- a/saleor/static/dashboard-next/products/views/ProductCreate.tsx +++ b/saleor/static/dashboard-next/products/views/ProductCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; @@ -75,6 +75,10 @@ export const ProductUpdate: React.StatelessComponent< formData.publicationDate !== "" ? formData.publicationDate : null, + seo: { + description: formData.seoDescription, + title: formData.seoTitle, + }, sku: formData.sku, stockQuantity: formData.stockQuantity !== null diff --git a/saleor/static/dashboard-next/products/views/ProductImage.tsx b/saleor/static/dashboard-next/products/views/ProductImage.tsx index e2c6601bc64..bb7e4a193a0 100644 --- a/saleor/static/dashboard-next/products/views/ProductImage.tsx +++ b/saleor/static/dashboard-next/products/views/ProductImage.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useNavigator from "@saleor/hooks/useNavigator"; diff --git a/saleor/static/dashboard-next/products/views/ProductList/ProductList.tsx b/saleor/static/dashboard-next/products/views/ProductList/ProductList.tsx index ad411bf24e2..7494e6053c5 100644 --- a/saleor/static/dashboard-next/products/views/ProductList/ProductList.tsx +++ b/saleor/static/dashboard-next/products/views/ProductList/ProductList.tsx @@ -2,7 +2,7 @@ import Button from "@material-ui/core/Button"; import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import DeleteFilterTabDialog from "@saleor/components/DeleteFilterTabDialog"; diff --git a/saleor/static/dashboard-next/products/views/ProductUpdate.tsx b/saleor/static/dashboard-next/products/views/ProductUpdate.tsx index ed8cd8ccc65..2f7741b2868 100644 --- a/saleor/static/dashboard-next/products/views/ProductUpdate.tsx +++ b/saleor/static/dashboard-next/products/views/ProductUpdate.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import { arrayMove } from "react-sortable-hoc"; import ActionDialog from "@saleor/components/ActionDialog"; @@ -9,7 +9,7 @@ import { WindowTitle } from "@saleor/components/WindowTitle"; import useBulkActions from "@saleor/hooks/useBulkActions"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; -import * as placeholderImg from "../../../images/placeholder255x255.png"; +import placeholderImg from "../../../images/placeholder255x255.png"; import { DEFAULT_INITIAL_SEARCH_DATA } from "../../config"; import SearchCategories from "../../containers/SearchCategories"; import SearchCollections from "../../containers/SearchCollections"; @@ -135,7 +135,11 @@ export const ProductUpdate: React.StatelessComponent = ({ publicationDate: data.publicationDate !== "" ? data.publicationDate - : null + : null, + seo: { + description: data.seoDescription, + title: data.seoTitle, + } }); } else { updateSimpleProduct.mutate({ @@ -158,7 +162,11 @@ export const ProductUpdate: React.StatelessComponent = ({ publicationDate: data.publicationDate !== "" ? data.publicationDate - : null + : null, + seo: { + description: data.seoDescription, + title: data.seoTitle, + } }); } } diff --git a/saleor/static/dashboard-next/products/views/ProductVariant.tsx b/saleor/static/dashboard-next/products/views/ProductVariant.tsx index 49cc3cb11ca..cf0906bb9ac 100644 --- a/saleor/static/dashboard-next/products/views/ProductVariant.tsx +++ b/saleor/static/dashboard-next/products/views/ProductVariant.tsx @@ -1,9 +1,9 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; -import * as placeholderImg from "../../../images/placeholder255x255.png"; +import placeholderImg from "../../../images/placeholder255x255.png"; import i18n from "../../i18n"; import { decimal, getMutationState, maybe } from "../../misc"; import ProductVariantDeleteDialog from "../components/ProductVariantDeleteDialog"; @@ -130,7 +130,12 @@ export const ProductVariant: React.StatelessComponent = ({ onSubmit={(data: FormData) => { if (variant) { updateVariant.mutate({ - attributes: data.attributes ? data.attributes : null, + attributes: data.attributes + ? data.attributes.map(attribute => ({ + slug: attribute.slug, + value: attribute.value + })) + : null, costPrice: decimal(data.costPrice), id: variantId, priceOverride: decimal(data.priceOverride), diff --git a/saleor/static/dashboard-next/products/views/ProductVariantCreate.tsx b/saleor/static/dashboard-next/products/views/ProductVariantCreate.tsx index f2dfa4f09bc..bf9a60c7fc7 100644 --- a/saleor/static/dashboard-next/products/views/ProductVariantCreate.tsx +++ b/saleor/static/dashboard-next/products/views/ProductVariantCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; @@ -17,12 +17,12 @@ interface ProductUpdateProps { } interface FormData { - attributes?: Array<{ + attributes: Array<{ slug: string; value: string; }>; - costPrice?: string; - priceOverride?: string; + costPrice: string; + priceOverride: string; quantity: number; sku: string; } @@ -60,7 +60,10 @@ export const ProductVariant: React.StatelessComponent = ({ const handleSubmit = (formData: FormData) => variantCreate({ variables: { - attributes: formData.attributes, + attributes: formData.attributes.map(attribute => ({ + slug: attribute.slug, + value: attribute.value + })), costPrice: decimal(formData.costPrice), priceOverride: decimal(formData.priceOverride), product: productId, diff --git a/saleor/static/dashboard-next/queries.tsx b/saleor/static/dashboard-next/queries.tsx index 2364ee6b796..43a066183da 100644 --- a/saleor/static/dashboard-next/queries.tsx +++ b/saleor/static/dashboard-next/queries.tsx @@ -1,6 +1,6 @@ import { DocumentNode } from "graphql"; import gql from "graphql-tag"; -import * as React from "react"; +import React from "react"; import { Query, QueryResult } from "react-apollo"; import { ApolloQueryResult } from "apollo-client"; diff --git a/saleor/static/dashboard-next/shipping/components/ShippingWeightUnitForm/ShippingWeightUnitForm.tsx b/saleor/static/dashboard-next/shipping/components/ShippingWeightUnitForm/ShippingWeightUnitForm.tsx index b1f72dc6bfd..ef3f1065e17 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingWeightUnitForm/ShippingWeightUnitForm.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingWeightUnitForm/ShippingWeightUnitForm.tsx @@ -2,7 +2,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardActions from "@material-ui/core/CardActions"; import CardContent from "@material-ui/core/CardContent"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Form from "@saleor/components/Form"; diff --git a/saleor/static/dashboard-next/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx b/saleor/static/dashboard-next/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx index 2f7ce523892..9f59522bd12 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx @@ -16,7 +16,7 @@ import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import { filter } from "fuzzaldrin"; -import * as React from "react"; +import React from "react"; import Checkbox from "@saleor/components/Checkbox"; import ConfirmButton, { diff --git a/saleor/static/dashboard-next/shipping/components/ShippingZoneCreatePage/ShippingZoneCreatePage.tsx b/saleor/static/dashboard-next/shipping/components/ShippingZoneCreatePage/ShippingZoneCreatePage.tsx index ee805fb0550..63f27bf09c7 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingZoneCreatePage/ShippingZoneCreatePage.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingZoneCreatePage/ShippingZoneCreatePage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/shipping/components/ShippingZoneDetailsPage/ShippingZoneDetailsPage.tsx b/saleor/static/dashboard-next/shipping/components/ShippingZoneDetailsPage/ShippingZoneDetailsPage.tsx index 96040ad4ea2..a6d573f681d 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingZoneDetailsPage/ShippingZoneDetailsPage.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingZoneDetailsPage/ShippingZoneDetailsPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/shipping/components/ShippingZoneInfo/ShippingZoneInfo.tsx b/saleor/static/dashboard-next/shipping/components/ShippingZoneInfo/ShippingZoneInfo.tsx index ff17908e545..58abf77a9f5 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingZoneInfo/ShippingZoneInfo.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingZoneInfo/ShippingZoneInfo.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import i18n from "../../../i18n"; diff --git a/saleor/static/dashboard-next/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx b/saleor/static/dashboard-next/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx index 75c0b05dcca..e08f6e5dd65 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx @@ -11,7 +11,7 @@ import { } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/shipping/components/ShippingZoneRates/ShippingZoneRates.tsx b/saleor/static/dashboard-next/shipping/components/ShippingZoneRates/ShippingZoneRates.tsx index 589edd5b7f3..2d3c41e7e84 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingZoneRates/ShippingZoneRates.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingZoneRates/ShippingZoneRates.tsx @@ -13,7 +13,7 @@ import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import DeleteIcon from "@material-ui/icons/Delete"; import EditIcon from "@material-ui/icons/Edit"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import IconButtonTableCell from "@saleor/components/IconButtonTableCell"; diff --git a/saleor/static/dashboard-next/shipping/components/ShippingZonesList/ShippingZonesList.tsx b/saleor/static/dashboard-next/shipping/components/ShippingZonesList/ShippingZonesList.tsx index 29974968eb8..838fe4f1499 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingZonesList/ShippingZonesList.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingZonesList/ShippingZonesList.tsx @@ -13,7 +13,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableFooter from "@material-ui/core/TableFooter"; import TableRow from "@material-ui/core/TableRow"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Checkbox from "@saleor/components/Checkbox"; diff --git a/saleor/static/dashboard-next/shipping/components/ShippingZonesListPage/ShippingZonesListPage.tsx b/saleor/static/dashboard-next/shipping/components/ShippingZonesListPage/ShippingZonesListPage.tsx index 45042f23c35..f63fddfe141 100644 --- a/saleor/static/dashboard-next/shipping/components/ShippingZonesListPage/ShippingZonesListPage.tsx +++ b/saleor/static/dashboard-next/shipping/components/ShippingZonesListPage/ShippingZonesListPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import Container from "@saleor/components/Container"; diff --git a/saleor/static/dashboard-next/shipping/index.tsx b/saleor/static/dashboard-next/shipping/index.tsx index ca38149efef..6ba390e46c1 100644 --- a/saleor/static/dashboard-next/shipping/index.tsx +++ b/saleor/static/dashboard-next/shipping/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/shipping/urls.ts b/saleor/static/dashboard-next/shipping/urls.ts index c622da0a7a8..be4d3d316ca 100644 --- a/saleor/static/dashboard-next/shipping/urls.ts +++ b/saleor/static/dashboard-next/shipping/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { BulkAction, Dialog, Pagination, SingleAction } from "../types"; import { ShippingMethodTypeEnum } from "../types/globalTypes"; diff --git a/saleor/static/dashboard-next/shipping/views/ShippingZoneCreate.tsx b/saleor/static/dashboard-next/shipping/views/ShippingZoneCreate.tsx index f185d026b83..b474dfdeacc 100644 --- a/saleor/static/dashboard-next/shipping/views/ShippingZoneCreate.tsx +++ b/saleor/static/dashboard-next/shipping/views/ShippingZoneCreate.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; diff --git a/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/ShippingZoneDetailsDialogs.tsx b/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/ShippingZoneDetailsDialogs.tsx index 228ff006322..48173f19667 100644 --- a/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/ShippingZoneDetailsDialogs.tsx +++ b/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/ShippingZoneDetailsDialogs.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; diff --git a/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/ShippingZoneOperations.tsx b/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/ShippingZoneOperations.tsx index 59d3909ad1c..bf7e0ca1a01 100644 --- a/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/ShippingZoneOperations.tsx +++ b/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/ShippingZoneOperations.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { getMutationProviderData } from "../../../misc"; import { PartialMutationProviderOutput } from "../../../types"; diff --git a/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/index.tsx b/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/index.tsx index e898c011376..46b72770edd 100644 --- a/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/index.tsx +++ b/saleor/static/dashboard-next/shipping/views/ShippingZoneDetails/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; diff --git a/saleor/static/dashboard-next/shipping/views/ShippingZonesList.tsx b/saleor/static/dashboard-next/shipping/views/ShippingZonesList.tsx index 1debefce248..6559a4fa9cf 100644 --- a/saleor/static/dashboard-next/shipping/views/ShippingZonesList.tsx +++ b/saleor/static/dashboard-next/shipping/views/ShippingZonesList.tsx @@ -1,7 +1,7 @@ import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; diff --git a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsAddress/SiteSettingsAddress.tsx b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsAddress/SiteSettingsAddress.tsx new file mode 100644 index 00000000000..8326f2b45a1 --- /dev/null +++ b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsAddress/SiteSettingsAddress.tsx @@ -0,0 +1,153 @@ +import Card from "@material-ui/core/Card"; +import CardContent from "@material-ui/core/CardContent"; +import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import TextField from "@material-ui/core/TextField"; +import React from "react"; + +import CardTitle from "@saleor/components/CardTitle"; +import FormSpacer from "@saleor/components/FormSpacer"; +import Grid from "@saleor/components/Grid"; +import SingleAutocompleteSelectField from "@saleor/components/SingleAutocompleteSelectField"; +import { AddressTypeInput } from "@saleor/customers/types"; +import i18n from "@saleor/i18n"; +import { maybe } from "@saleor/misc"; +import { FormErrors } from "@saleor/types"; +import { SiteSettingsPageFormData } from "../SiteSettingsPage"; + +interface SiteSettingsAddressProps extends WithStyles { + countries?: Array<{ + code: string; + label: string; + }>; + data: SiteSettingsPageFormData; + errors: FormErrors; + disabled: boolean; + onChange: (event: React.ChangeEvent) => void; +} + +const styles = createStyles({ + root: { + overflow: "visible" + } +}); + +const SiteSettingsAddress = withStyles(styles, { name: "SiteSettingsAddress" })( + ({ + classes, + countries, + data, + disabled, + errors, + onChange + }: SiteSettingsAddressProps) => ( + + + + + + + + + + + + + + + + countries.map(c => ({ ...c, value: c.code })), + [] + )} + InputProps={{ + autoComplete: "off" + }} + /> + + + + + + + ) +); +SiteSettingsAddress.displayName = "SiteSettingsAddress"; +export default SiteSettingsAddress; diff --git a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsAddress/index.ts b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsAddress/index.ts new file mode 100644 index 00000000000..b15a2391870 --- /dev/null +++ b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsAddress/index.ts @@ -0,0 +1,2 @@ +export { default } from "./SiteSettingsAddress"; +export * from "./SiteSettingsAddress"; diff --git a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsDetails/SiteSettingsDetails.tsx b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsDetails/SiteSettingsDetails.tsx index 136f9c1be93..f3cf77d2b00 100644 --- a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsDetails/SiteSettingsDetails.tsx +++ b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsDetails/SiteSettingsDetails.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import FormSpacer from "@saleor/components/FormSpacer"; diff --git a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsKeyDialog/SiteSettingsKeyDialog.tsx b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsKeyDialog/SiteSettingsKeyDialog.tsx index 37c0bdab07c..8c4a60285d8 100644 --- a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsKeyDialog/SiteSettingsKeyDialog.tsx +++ b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsKeyDialog/SiteSettingsKeyDialog.tsx @@ -4,7 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import TextField from "@material-ui/core/TextField"; -import * as React from "react"; +import React from "react"; import Form, { FormProps } from "@saleor/components/Form"; import { FormSpacer } from "@saleor/components/FormSpacer"; diff --git a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsKeys/SiteSettingsKeys.tsx b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsKeys/SiteSettingsKeys.tsx index 8dcbd39c0ed..0a22686fdc6 100644 --- a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsKeys/SiteSettingsKeys.tsx +++ b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsKeys/SiteSettingsKeys.tsx @@ -13,7 +13,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import DeleteIcon from "@material-ui/icons/Delete"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; diff --git a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsPage/SiteSettingsPage.tsx b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsPage/SiteSettingsPage.tsx index 9bc9a96941d..ee1d462b67d 100644 --- a/saleor/static/dashboard-next/siteSettings/components/SiteSettingsPage/SiteSettingsPage.tsx +++ b/saleor/static/dashboard-next/siteSettings/components/SiteSettingsPage/SiteSettingsPage.tsx @@ -1,5 +1,5 @@ import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; @@ -12,10 +12,26 @@ import i18n from "../../../i18n"; import { maybe } from "../../../misc"; import { AuthorizationKeyType } from "../../../types/globalTypes"; import { SiteSettings_shop } from "../../types/SiteSettings"; +import SiteSettingsAddress from "../SiteSettingsAddress/SiteSettingsAddress"; import SiteSettingsDetails from "../SiteSettingsDetails/SiteSettingsDetails"; import SiteSettingsKeys from "../SiteSettingsKeys/SiteSettingsKeys"; -export interface SiteSettingsPageFormData { +export interface SiteSettingsPageAddressFormData { + city: string; + companyName: string; + country: { + code: string; + country: string; + }; + countryArea: string; + phone: string; + postalCode: string; + streetAddress1: string; + streetAddress2: string; +} + +export interface SiteSettingsPageFormData + extends SiteSettingsPageAddressFormData { description: string; domain: string; name: string; @@ -46,9 +62,20 @@ const SiteSettingsPage: React.StatelessComponent = ({ onSubmit }) => { const initialForm: SiteSettingsPageFormData = { + city: maybe(() => shop.companyAddress.city, ""), + companyName: maybe(() => shop.companyAddress.companyName, ""), + country: maybe(() => shop.companyAddress.country, { + code: "", + country: "" + }), + countryArea: maybe(() => shop.companyAddress.countryArea, ""), description: maybe(() => shop.description, ""), domain: maybe(() => shop.domain.host, ""), - name: maybe(() => shop.name, "") + name: maybe(() => shop.name, ""), + phone: maybe(() => shop.companyAddress.phone, ""), + postalCode: maybe(() => shop.companyAddress.postalCode, ""), + streetAddress1: maybe(() => shop.companyAddress.streetAddress1, ""), + streetAddress2: maybe(() => shop.companyAddress.streetAddress2, "") }; return ( = ({ disabled={disabled} onChange={change} /> + + {i18n.t("Company information")} + + + shop.countries.map(country => ({ + code: country.code, + label: country.country + })), + [] + )} + errors={formErrors} + disabled={disabled} + onChange={change} + /> {i18n.t("Authentication keys")} diff --git a/saleor/static/dashboard-next/siteSettings/fixtures.ts b/saleor/static/dashboard-next/siteSettings/fixtures.ts index b41da4c7949..59e41ca4141 100644 --- a/saleor/static/dashboard-next/siteSettings/fixtures.ts +++ b/saleor/static/dashboard-next/siteSettings/fixtures.ts @@ -10,6 +10,32 @@ export const shop: SiteSettings_shop = { name: AuthorizationKeyType.FACEBOOK } ], + companyAddress: { + __typename: "Address", + city: "Kenstad", + cityArea: "Alabama", + companyName: "Saleor e-commerce", + country: { + __typename: "CountryDisplay", + code: "UA", + country: "United Arab Emirates" + }, + countryArea: null, + firstName: null, + id: "1", + lastName: null, + phone: "+41 876-373-9137", + postalCode: "89880-6342", + streetAddress1: "01419 Bernhard Plain", + streetAddress2: null + }, + countries: [ + { + __typename: "CountryDisplay", + code: "UA", + country: "United Arab Emirates" + } + ], description: "Lorem ipsum dolor sit amet", domain: { __typename: "Domain", diff --git a/saleor/static/dashboard-next/siteSettings/index.tsx b/saleor/static/dashboard-next/siteSettings/index.tsx index 14598e14cde..3d83171f78d 100644 --- a/saleor/static/dashboard-next/siteSettings/index.tsx +++ b/saleor/static/dashboard-next/siteSettings/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps } from "react-router-dom"; import { siteSettingsPath, SiteSettingsUrlQueryParams } from "./urls"; diff --git a/saleor/static/dashboard-next/siteSettings/mutations.ts b/saleor/static/dashboard-next/siteSettings/mutations.ts index 31b531d8526..048217b7a7e 100644 --- a/saleor/static/dashboard-next/siteSettings/mutations.ts +++ b/saleor/static/dashboard-next/siteSettings/mutations.ts @@ -1,6 +1,7 @@ import gql from "graphql-tag"; import { TypedMutation } from "../mutations"; +import { fragmentAddress } from "../orders/queries"; import { shopFragment } from "./queries"; import { AuthorizationKeyAdd, @@ -58,9 +59,11 @@ export const TypedAuthorizationKeyDelete = TypedMutation< const shopSettingsUpdate = gql` ${shopFragment} + ${fragmentAddress} mutation ShopSettingsUpdate( $shopDomainInput: SiteDomainInput! $shopSettingsInput: ShopSettingsInput! + $addressInput: AddressInput! ) { shopSettingsUpdate(input: $shopSettingsInput) { errors { @@ -83,6 +86,17 @@ const shopSettingsUpdate = gql` } } } + shopAddressUpdate(input: $addressInput) { + errors { + field + message + } + shop { + companyAddress { + ...AddressFragment + } + } + } } `; export const TypedShopSettingsUpdate = TypedMutation< diff --git a/saleor/static/dashboard-next/siteSettings/queries.ts b/saleor/static/dashboard-next/siteSettings/queries.ts index 07128b87395..b6a57c61ab2 100644 --- a/saleor/static/dashboard-next/siteSettings/queries.ts +++ b/saleor/static/dashboard-next/siteSettings/queries.ts @@ -1,13 +1,22 @@ import gql from "graphql-tag"; +import { fragmentAddress } from "../orders/queries"; import { TypedQuery } from "../queries"; import { SiteSettings } from "./types/SiteSettings"; export const shopFragment = gql` + ${fragmentAddress} fragment ShopFragment on Shop { authorizationKeys { key name } + companyAddress { + ...AddressFragment + } + countries { + code + country + } description domain { host diff --git a/saleor/static/dashboard-next/siteSettings/types/AuthorizationKeyAdd.ts b/saleor/static/dashboard-next/siteSettings/types/AuthorizationKeyAdd.ts index c6524fdbffc..a326a9cca70 100644 --- a/saleor/static/dashboard-next/siteSettings/types/AuthorizationKeyAdd.ts +++ b/saleor/static/dashboard-next/siteSettings/types/AuthorizationKeyAdd.ts @@ -20,6 +20,34 @@ export interface AuthorizationKeyAdd_authorizationKeyAdd_shop_authorizationKeys name: AuthorizationKeyType; } +export interface AuthorizationKeyAdd_authorizationKeyAdd_shop_companyAddress_country { + __typename: "CountryDisplay"; + code: string; + country: string; +} + +export interface AuthorizationKeyAdd_authorizationKeyAdd_shop_companyAddress { + __typename: "Address"; + city: string; + cityArea: string; + companyName: string; + country: AuthorizationKeyAdd_authorizationKeyAdd_shop_companyAddress_country; + countryArea: string; + firstName: string; + id: string; + lastName: string; + phone: string | null; + postalCode: string; + streetAddress1: string; + streetAddress2: string; +} + +export interface AuthorizationKeyAdd_authorizationKeyAdd_shop_countries { + __typename: "CountryDisplay"; + code: string; + country: string; +} + export interface AuthorizationKeyAdd_authorizationKeyAdd_shop_domain { __typename: "Domain"; host: string; @@ -28,6 +56,8 @@ export interface AuthorizationKeyAdd_authorizationKeyAdd_shop_domain { export interface AuthorizationKeyAdd_authorizationKeyAdd_shop { __typename: "Shop"; authorizationKeys: (AuthorizationKeyAdd_authorizationKeyAdd_shop_authorizationKeys | null)[]; + companyAddress: AuthorizationKeyAdd_authorizationKeyAdd_shop_companyAddress | null; + countries: (AuthorizationKeyAdd_authorizationKeyAdd_shop_countries | null)[]; description: string | null; domain: AuthorizationKeyAdd_authorizationKeyAdd_shop_domain; name: string; diff --git a/saleor/static/dashboard-next/siteSettings/types/AuthorizationKeyDelete.ts b/saleor/static/dashboard-next/siteSettings/types/AuthorizationKeyDelete.ts index a7918500008..024e7f59986 100644 --- a/saleor/static/dashboard-next/siteSettings/types/AuthorizationKeyDelete.ts +++ b/saleor/static/dashboard-next/siteSettings/types/AuthorizationKeyDelete.ts @@ -20,6 +20,34 @@ export interface AuthorizationKeyDelete_authorizationKeyDelete_shop_authorizatio name: AuthorizationKeyType; } +export interface AuthorizationKeyDelete_authorizationKeyDelete_shop_companyAddress_country { + __typename: "CountryDisplay"; + code: string; + country: string; +} + +export interface AuthorizationKeyDelete_authorizationKeyDelete_shop_companyAddress { + __typename: "Address"; + city: string; + cityArea: string; + companyName: string; + country: AuthorizationKeyDelete_authorizationKeyDelete_shop_companyAddress_country; + countryArea: string; + firstName: string; + id: string; + lastName: string; + phone: string | null; + postalCode: string; + streetAddress1: string; + streetAddress2: string; +} + +export interface AuthorizationKeyDelete_authorizationKeyDelete_shop_countries { + __typename: "CountryDisplay"; + code: string; + country: string; +} + export interface AuthorizationKeyDelete_authorizationKeyDelete_shop_domain { __typename: "Domain"; host: string; @@ -28,6 +56,8 @@ export interface AuthorizationKeyDelete_authorizationKeyDelete_shop_domain { export interface AuthorizationKeyDelete_authorizationKeyDelete_shop { __typename: "Shop"; authorizationKeys: (AuthorizationKeyDelete_authorizationKeyDelete_shop_authorizationKeys | null)[]; + companyAddress: AuthorizationKeyDelete_authorizationKeyDelete_shop_companyAddress | null; + countries: (AuthorizationKeyDelete_authorizationKeyDelete_shop_countries | null)[]; description: string | null; domain: AuthorizationKeyDelete_authorizationKeyDelete_shop_domain; name: string; diff --git a/saleor/static/dashboard-next/siteSettings/types/ShopFragment.ts b/saleor/static/dashboard-next/siteSettings/types/ShopFragment.ts index dcea4c527d4..d27566ab8c1 100644 --- a/saleor/static/dashboard-next/siteSettings/types/ShopFragment.ts +++ b/saleor/static/dashboard-next/siteSettings/types/ShopFragment.ts @@ -14,6 +14,34 @@ export interface ShopFragment_authorizationKeys { name: AuthorizationKeyType; } +export interface ShopFragment_companyAddress_country { + __typename: "CountryDisplay"; + code: string; + country: string; +} + +export interface ShopFragment_companyAddress { + __typename: "Address"; + city: string; + cityArea: string; + companyName: string; + country: ShopFragment_companyAddress_country; + countryArea: string; + firstName: string; + id: string; + lastName: string; + phone: string | null; + postalCode: string; + streetAddress1: string; + streetAddress2: string; +} + +export interface ShopFragment_countries { + __typename: "CountryDisplay"; + code: string; + country: string; +} + export interface ShopFragment_domain { __typename: "Domain"; host: string; @@ -22,6 +50,8 @@ export interface ShopFragment_domain { export interface ShopFragment { __typename: "Shop"; authorizationKeys: (ShopFragment_authorizationKeys | null)[]; + companyAddress: ShopFragment_companyAddress | null; + countries: (ShopFragment_countries | null)[]; description: string | null; domain: ShopFragment_domain; name: string; diff --git a/saleor/static/dashboard-next/siteSettings/types/ShopSettingsUpdate.ts b/saleor/static/dashboard-next/siteSettings/types/ShopSettingsUpdate.ts index e78f9c121cb..2fa80ac0d7b 100644 --- a/saleor/static/dashboard-next/siteSettings/types/ShopSettingsUpdate.ts +++ b/saleor/static/dashboard-next/siteSettings/types/ShopSettingsUpdate.ts @@ -2,7 +2,7 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { SiteDomainInput, ShopSettingsInput, AuthorizationKeyType } from "./../../types/globalTypes"; +import { SiteDomainInput, ShopSettingsInput, AddressInput, AuthorizationKeyType } from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: ShopSettingsUpdate @@ -20,6 +20,34 @@ export interface ShopSettingsUpdate_shopSettingsUpdate_shop_authorizationKeys { name: AuthorizationKeyType; } +export interface ShopSettingsUpdate_shopSettingsUpdate_shop_companyAddress_country { + __typename: "CountryDisplay"; + code: string; + country: string; +} + +export interface ShopSettingsUpdate_shopSettingsUpdate_shop_companyAddress { + __typename: "Address"; + city: string; + cityArea: string; + companyName: string; + country: ShopSettingsUpdate_shopSettingsUpdate_shop_companyAddress_country; + countryArea: string; + firstName: string; + id: string; + lastName: string; + phone: string | null; + postalCode: string; + streetAddress1: string; + streetAddress2: string; +} + +export interface ShopSettingsUpdate_shopSettingsUpdate_shop_countries { + __typename: "CountryDisplay"; + code: string; + country: string; +} + export interface ShopSettingsUpdate_shopSettingsUpdate_shop_domain { __typename: "Domain"; host: string; @@ -28,6 +56,8 @@ export interface ShopSettingsUpdate_shopSettingsUpdate_shop_domain { export interface ShopSettingsUpdate_shopSettingsUpdate_shop { __typename: "Shop"; authorizationKeys: (ShopSettingsUpdate_shopSettingsUpdate_shop_authorizationKeys | null)[]; + companyAddress: ShopSettingsUpdate_shopSettingsUpdate_shop_companyAddress | null; + countries: (ShopSettingsUpdate_shopSettingsUpdate_shop_countries | null)[]; description: string | null; domain: ShopSettingsUpdate_shopSettingsUpdate_shop_domain; name: string; @@ -62,12 +92,53 @@ export interface ShopSettingsUpdate_shopDomainUpdate { shop: ShopSettingsUpdate_shopDomainUpdate_shop | null; } +export interface ShopSettingsUpdate_shopAddressUpdate_errors { + __typename: "Error"; + field: string | null; + message: string | null; +} + +export interface ShopSettingsUpdate_shopAddressUpdate_shop_companyAddress_country { + __typename: "CountryDisplay"; + code: string; + country: string; +} + +export interface ShopSettingsUpdate_shopAddressUpdate_shop_companyAddress { + __typename: "Address"; + city: string; + cityArea: string; + companyName: string; + country: ShopSettingsUpdate_shopAddressUpdate_shop_companyAddress_country; + countryArea: string; + firstName: string; + id: string; + lastName: string; + phone: string | null; + postalCode: string; + streetAddress1: string; + streetAddress2: string; +} + +export interface ShopSettingsUpdate_shopAddressUpdate_shop { + __typename: "Shop"; + companyAddress: ShopSettingsUpdate_shopAddressUpdate_shop_companyAddress | null; +} + +export interface ShopSettingsUpdate_shopAddressUpdate { + __typename: "ShopAddressUpdate"; + errors: ShopSettingsUpdate_shopAddressUpdate_errors[] | null; + shop: ShopSettingsUpdate_shopAddressUpdate_shop | null; +} + export interface ShopSettingsUpdate { shopSettingsUpdate: ShopSettingsUpdate_shopSettingsUpdate | null; shopDomainUpdate: ShopSettingsUpdate_shopDomainUpdate | null; + shopAddressUpdate: ShopSettingsUpdate_shopAddressUpdate | null; } export interface ShopSettingsUpdateVariables { shopDomainInput: SiteDomainInput; shopSettingsInput: ShopSettingsInput; + addressInput: AddressInput; } diff --git a/saleor/static/dashboard-next/siteSettings/types/SiteSettings.ts b/saleor/static/dashboard-next/siteSettings/types/SiteSettings.ts index 87312407824..ee049f7385c 100644 --- a/saleor/static/dashboard-next/siteSettings/types/SiteSettings.ts +++ b/saleor/static/dashboard-next/siteSettings/types/SiteSettings.ts @@ -14,6 +14,34 @@ export interface SiteSettings_shop_authorizationKeys { name: AuthorizationKeyType; } +export interface SiteSettings_shop_companyAddress_country { + __typename: "CountryDisplay"; + code: string; + country: string; +} + +export interface SiteSettings_shop_companyAddress { + __typename: "Address"; + city: string; + cityArea: string; + companyName: string; + country: SiteSettings_shop_companyAddress_country; + countryArea: string; + firstName: string; + id: string; + lastName: string; + phone: string | null; + postalCode: string; + streetAddress1: string; + streetAddress2: string; +} + +export interface SiteSettings_shop_countries { + __typename: "CountryDisplay"; + code: string; + country: string; +} + export interface SiteSettings_shop_domain { __typename: "Domain"; host: string; @@ -22,6 +50,8 @@ export interface SiteSettings_shop_domain { export interface SiteSettings_shop { __typename: "Shop"; authorizationKeys: (SiteSettings_shop_authorizationKeys | null)[]; + companyAddress: SiteSettings_shop_companyAddress | null; + countries: (SiteSettings_shop_countries | null)[]; description: string | null; domain: SiteSettings_shop_domain; name: string; diff --git a/saleor/static/dashboard-next/siteSettings/views/index.tsx b/saleor/static/dashboard-next/siteSettings/views/index.tsx index b0db5c7ea47..16cea78ae38 100644 --- a/saleor/static/dashboard-next/siteSettings/views/index.tsx +++ b/saleor/static/dashboard-next/siteSettings/views/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; @@ -65,7 +65,9 @@ export const SiteSettings: React.StatelessComponent = ({ (!data.shopDomainUpdate.errors || data.shopDomainUpdate.errors.length === 0) && (!data.shopSettingsUpdate.errors || - data.shopSettingsUpdate.errors.length === 0) + data.shopSettingsUpdate.errors.length === 0) && + (!data.shopAddressUpdate.errors || + data.shopAddressUpdate.errors.length === 0) ) { notify({ text: i18n.t("Site settings updated", { @@ -95,6 +97,11 @@ export const SiteSettings: React.StatelessComponent = ({ () => updateShopSettingsOpts.data.shopSettingsUpdate.errors, [] + ), + ...maybe( + () => + updateShopSettingsOpts.data.shopAddressUpdate.errors, + [] ) ]; const loading = @@ -119,6 +126,16 @@ export const SiteSettings: React.StatelessComponent = ({ ) => updateShopSettings({ variables: { + addressInput: { + city: data.city, + companyName: data.companyName, + country: data.country.code, + countryArea: data.countryArea, + phone: data.phone, + postalCode: data.postalCode, + streetAddress1: data.streetAddress1, + streetAddress2: data.streetAddress2 + }, shopDomainInput: { domain: data.domain, name: data.name diff --git a/saleor/static/dashboard-next/staff/components/StaffAddMemberDialog/StaffAddMemberDialog.tsx b/saleor/static/dashboard-next/staff/components/StaffAddMemberDialog/StaffAddMemberDialog.tsx index 0d97ee9b050..f4d218a5b27 100644 --- a/saleor/static/dashboard-next/staff/components/StaffAddMemberDialog/StaffAddMemberDialog.tsx +++ b/saleor/static/dashboard-next/staff/components/StaffAddMemberDialog/StaffAddMemberDialog.tsx @@ -11,7 +11,7 @@ import { } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState diff --git a/saleor/static/dashboard-next/staff/components/StaffDetailsPage/StaffDetailsPage.tsx b/saleor/static/dashboard-next/staff/components/StaffDetailsPage/StaffDetailsPage.tsx index 9083b22a060..7156935e349 100644 --- a/saleor/static/dashboard-next/staff/components/StaffDetailsPage/StaffDetailsPage.tsx +++ b/saleor/static/dashboard-next/staff/components/StaffDetailsPage/StaffDetailsPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; diff --git a/saleor/static/dashboard-next/staff/components/StaffList/StaffList.tsx b/saleor/static/dashboard-next/staff/components/StaffList/StaffList.tsx index 0216dd234ae..f044ffd901e 100644 --- a/saleor/static/dashboard-next/staff/components/StaffList/StaffList.tsx +++ b/saleor/static/dashboard-next/staff/components/StaffList/StaffList.tsx @@ -12,8 +12,8 @@ import TableFooter from "@material-ui/core/TableFooter"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; -import * as classNames from "classnames"; -import * as React from "react"; +import classNames from "classnames"; +import React from "react"; import Skeleton from "@saleor/components/Skeleton"; import TablePagination from "@saleor/components/TablePagination"; diff --git a/saleor/static/dashboard-next/staff/components/StaffListPage/StaffListPage.tsx b/saleor/static/dashboard-next/staff/components/StaffListPage/StaffListPage.tsx index b5a5f0fd1ce..9aabdf94903 100644 --- a/saleor/static/dashboard-next/staff/components/StaffListPage/StaffListPage.tsx +++ b/saleor/static/dashboard-next/staff/components/StaffListPage/StaffListPage.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import AddIcon from "@material-ui/icons/Add"; -import * as React from "react"; +import React from "react"; import AppHeader from "@saleor/components/AppHeader"; import { Container } from "@saleor/components/Container"; diff --git a/saleor/static/dashboard-next/staff/components/StaffPermissions/StaffPermissions.tsx b/saleor/static/dashboard-next/staff/components/StaffPermissions/StaffPermissions.tsx index f992b60510e..d67db42a238 100644 --- a/saleor/static/dashboard-next/staff/components/StaffPermissions/StaffPermissions.tsx +++ b/saleor/static/dashboard-next/staff/components/StaffPermissions/StaffPermissions.tsx @@ -7,7 +7,7 @@ import { WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox"; diff --git a/saleor/static/dashboard-next/staff/components/StaffProperties/StaffProperties.tsx b/saleor/static/dashboard-next/staff/components/StaffProperties/StaffProperties.tsx index 5f0d6f712e8..64c2a05f14d 100644 --- a/saleor/static/dashboard-next/staff/components/StaffProperties/StaffProperties.tsx +++ b/saleor/static/dashboard-next/staff/components/StaffProperties/StaffProperties.tsx @@ -8,7 +8,7 @@ import { } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import SVG from "react-inlinesvg"; import CardTitle from "@saleor/components/CardTitle"; @@ -16,7 +16,7 @@ import i18n from "../../../i18n"; import { getUserInitials, maybe } from "../../../misc"; import { StaffMemberDetails_user } from "../../types/StaffMemberDetails"; -import * as photoIcon from "../../../../images/photo-icon.svg"; +import photoIcon from "../../../../images/photo-icon.svg"; const styles = (theme: Theme) => createStyles({ diff --git a/saleor/static/dashboard-next/staff/components/StaffStatus/StaffStatus.tsx b/saleor/static/dashboard-next/staff/components/StaffStatus/StaffStatus.tsx index 20fab8d682a..a988d888a54 100644 --- a/saleor/static/dashboard-next/staff/components/StaffStatus/StaffStatus.tsx +++ b/saleor/static/dashboard-next/staff/components/StaffStatus/StaffStatus.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import Typography from "@material-ui/core/Typography"; -import * as React from "react"; +import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox"; diff --git a/saleor/static/dashboard-next/staff/fixtures.ts b/saleor/static/dashboard-next/staff/fixtures.ts index 9141f284f03..03c4ef5d95c 100644 --- a/saleor/static/dashboard-next/staff/fixtures.ts +++ b/saleor/static/dashboard-next/staff/fixtures.ts @@ -1,4 +1,4 @@ -import * as avatarImage from "../../images/avatars/avatar1.png"; +import avatarImage from "../../images/avatars/avatar1.png"; import { PermissionEnum } from "../types/globalTypes"; import { StaffList_staffUsers_edges_node } from "./types/StaffList"; import { StaffMemberDetails_user } from "./types/StaffMemberDetails"; diff --git a/saleor/static/dashboard-next/staff/index.tsx b/saleor/static/dashboard-next/staff/index.tsx index 5413b59959b..66dea74b04f 100644 --- a/saleor/static/dashboard-next/staff/index.tsx +++ b/saleor/static/dashboard-next/staff/index.tsx @@ -1,5 +1,5 @@ import { parse as parseQs } from "qs"; -import * as React from "react"; +import React from "react"; import { Route, RouteComponentProps, Switch } from "react-router-dom"; import { WindowTitle } from "../components/WindowTitle"; diff --git a/saleor/static/dashboard-next/staff/urls.ts b/saleor/static/dashboard-next/staff/urls.ts index 56c2211a69b..4508afdfd08 100644 --- a/saleor/static/dashboard-next/staff/urls.ts +++ b/saleor/static/dashboard-next/staff/urls.ts @@ -1,5 +1,5 @@ import { stringify as stringifyQs } from "qs"; -import * as urlJoin from "url-join"; +import urlJoin from "url-join"; import { BulkAction, Dialog, Pagination } from "../types"; diff --git a/saleor/static/dashboard-next/staff/views/StaffDetails.tsx b/saleor/static/dashboard-next/staff/views/StaffDetails.tsx index 9dfb7731258..e71e67f9a18 100644 --- a/saleor/static/dashboard-next/staff/views/StaffDetails.tsx +++ b/saleor/static/dashboard-next/staff/views/StaffDetails.tsx @@ -1,5 +1,5 @@ import DialogContentText from "@material-ui/core/DialogContentText"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; diff --git a/saleor/static/dashboard-next/staff/views/StaffList.tsx b/saleor/static/dashboard-next/staff/views/StaffList.tsx index 4a33bfbc452..eb3d94f50fc 100644 --- a/saleor/static/dashboard-next/staff/views/StaffList.tsx +++ b/saleor/static/dashboard-next/staff/views/StaffList.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; diff --git a/saleor/static/dashboard-next/storybook/CardDecorator.tsx b/saleor/static/dashboard-next/storybook/CardDecorator.tsx index e00a374814a..f94b6ea87db 100644 --- a/saleor/static/dashboard-next/storybook/CardDecorator.tsx +++ b/saleor/static/dashboard-next/storybook/CardDecorator.tsx @@ -1,6 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import * as React from "react"; +import React from "react"; const CardDecorator = storyFn => ( ( - - - - - -
- {storyFn()} -
-
-
-
-
-
+ + + + +
+ {storyFn()} +
+
+
+
+
); export default Decorator; diff --git a/saleor/static/dashboard-next/storybook/Stories.test.ts b/saleor/static/dashboard-next/storybook/Stories.test.ts index 197179e68df..22648532235 100644 --- a/saleor/static/dashboard-next/storybook/Stories.test.ts +++ b/saleor/static/dashboard-next/storybook/Stories.test.ts @@ -1,9 +1,9 @@ import createGenerateClassName from "@material-ui/core/styles/createGenerateClassName"; import initStoryshots from "@storybook/addon-storyshots"; // tslint:disable no-submodule-imports -import * as generateRandomKey from "draft-js/lib/generateRandomKey"; +import generateRandomKey from "draft-js/lib/generateRandomKey"; import { configure, render } from "enzyme"; -import * as Adapter from "enzyme-adapter-react-16"; +import Adapter from "enzyme-adapter-react-16"; import toJSON from "enzyme-to-json"; configure({ adapter: new Adapter() }); diff --git a/saleor/static/dashboard-next/storybook/__snapshots__/Stories.test.ts.snap b/saleor/static/dashboard-next/storybook/__snapshots__/Stories.test.ts.snap index cccf64b0aae..2243e1278bc 100644 --- a/saleor/static/dashboard-next/storybook/__snapshots__/Stories.test.ts.snap +++ b/saleor/static/dashboard-next/storybook/__snapshots__/Stories.test.ts.snap @@ -1837,13 +1837,11 @@ exports[`Storyshots Generics / EditableTableCell default 1`] = ` -
- - Some editable text - -
+ + Some editable text +
+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

- Collections assigned to Happy minute day! + Eligible Collections
- Categories assigned to Happy minute day! + Eligible Categories
- Categories assigned to Happy minute day! + Eligible Categories
- Categories assigned to + Eligible Categories
- Products assigned to Happy minute day! + Eligible Products
+ > + +
-
-
-
- -
- -
-
-
- -
-
-
- All Products -
- - -
-
-
-
- Detailed Information + Discount Type
+
+
+
+ + + +
+
+
+
+
+
+
+ + Value + +
+
+
+
+
USD -
-
- -
- -
-

- Optional -

-
-
-
-
-
- Discount Specific Information -
-
-
- -
- -
-

- Optional -

-
-
+
@@ -31118,22 +31419,136 @@ exports[`Storyshots Views / Discounts / Voucher create default 1`] = `
+
+
+
+
+ + Minimum Requirements + +
+
+

-
- Time Frame -
+ +
+ +
+
+
+
+
+
+
+ + Usage Limit +
+
+
+
+
+ +
+
+
+
+
+ + Active Dates + +
+
+
+
+
- End Date + Start Hour
+
-
@@ -31227,7 +31660,19 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = `
+ > + +
@@ -31264,83 +31709,152 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = ` Generic form error

+
+
+
+
+
+ + Discount Type +
+
+
+
+
- -
- -
-

- Generic form error -

-
-
-
-
-
- All Products -
- - - - -
+ Fixed Amount + + + +

Generic form error

@@ -31348,9 +31862,6 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = `
-
@@ -31360,7 +31871,7 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = ` - Detailed Information + Value
USD -
-
- -
- -
-

- Generic form error -

-
-
-
-
-
- Discount Specific Information -
-
-
- -
- -
-

- Generic form error -

-
-
+
@@ -31539,22 +31969,141 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = `
+
+
+
+
+ + Minimum Requirements + +
+
+

-
- Time Frame -
+ +
+ +
+

+ Generic form error +

+
+
+
+
+
+
+ + Usage Limit +
+
+
+
+
+ +
+
+
+
+
+ + Active Dates + +
+
+
+
+
- End Date + Start Hour
@@ -31609,11 +32158,29 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = `

+
-
@@ -31635,7 +32202,7 @@ exports[`Storyshots Views / Discounts / Voucher details default 1`] = `
- Big order discount + DISCOUNT
+
+
+
+
+
+ + Discount Type +
+
+
+
+
-
- -
-
-
- -
-
-
- All Products -
- - - - -
+ Fixed Amount + + + +
@@ -31775,7 +32418,7 @@ exports[`Storyshots Views / Discounts / Voucher details default 1`] = ` - Detailed Information + Value
USD -
+
+
+
+ +
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+ + Minimum Requirements + +
+
+
+
+
@@ -31843,133 +32644,101 @@ exports[`Storyshots Views / Discounts / Voucher details default 1`] = ` class="MuiFormLabel-root-id MuiFormLabel-filled-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-filled-id" data-shrink="true" > - Usage Limit + Minimal order value
-

- Optional -

+
+
+
+
+ + Usage Limit + +
+
+

-
- Discount Specific Information -
-
-
-
- -
- -
-

- Optional -

-
-
-
+
+
-
- Time Frame -
+ Active Dates +
+
+
+
+
+
-
- Name + Code

- Big order discount + DISCOUNT

- All Products + Entire order

- Big order discount + DISCOUNT

Generic form error

+
+ +
+
+
+ + Discount Type +
+
+
+
+
- -
- -
-

- Generic form error -

-
-
-
-
-
- All Products -
- - - - -
+ Fixed Amount + + + +

Generic form error

@@ -32322,7 +33181,7 @@ exports[`Storyshots Views / Discounts / Voucher details form errors 1`] = ` - Detailed Information + Value
USD -

+
- + +

Generic form error

-
-
-
-
- Discount Specific Information -
-
-
- -
- -
-

- Generic form error -

-
-
+
@@ -32488,40 +33358,165 @@ exports[`Storyshots Views / Discounts / Voucher details form errors 1`] = ` - + + +
+ Only once per order + + If this option is disabled, discount will be counted for every eligible product + +
+
+ + +
+
+
+
+
+
+
+ + Minimum Requirements + +
+
+
+
+
+
+ +
+ +
+

+ Generic form error +

+
+
+
+
+
+
+ + Usage Limit + +
+
+
+
+
+
+
+
-
- Time Frame -
+ Active Dates +
+
+
+
+

Generic form error

+
-
- Name + Code

- Big order discount + DISCOUNT

- All Products + Entire order

+
+
+
+
+
+ + Discount Type +
+
+
+
+
- + + + +
+
+
+
+
+
+
+
+ + Value + +
+
+
+
+
+
+ +
+
- + + USD +
+
+
+
+
-
-
-
- All Products -
+ + + + + + Specific Products + + +
+
+
+
+
+
+ + + + + +
+ Only once per order + + If this option is disabled, discount will be counted for every eligible product + +
+ + +
+
+
+
+
+
+
+ + Minimum Requirements + +
+
+
+
+
+
+ +
+
@@ -32876,7 +34232,57 @@ exports[`Storyshots Views / Discounts / Voucher details loading 1`] = ` - Detailed Information + Usage Limit + +
+
+
+
+
+ +
+
+
+
+
+ + Active Dates
-
-
- -
- -
- - USD - - -
-
-
-
- -
- -
-

- Optional -

-
-
-
-
-
- Discount Specific Information -
-
-
-
- -
- -
-

- Optional -

-
-
-
-
+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

+
+
+ + + strikethrough + + +
+
+

+
+ + + h1 + + +
+

-

- Name of your store is shown on tab in web browser -

-
-
-
- +

+ Name of your store is shown on tab in web browser +

+
+
+
+ +
+ +
+
+
+
+ +
+ +
+

+ Store description is shown on taskbar after your store name +

+
+
+
+
+ Company information +
+
+
+ + Store information + +
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+ + +
+
- + +
+ +
- Store Description + Phone
-

- Store description is shown on taskbar after your store name -

@@ -79065,6 +80763,248 @@ exports[`Storyshots Views / Site settings / Page form errors 1`] = `
+
+ Company information +
+
+
+ + Store information + +
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+ + +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
@@ -79321,6 +81261,258 @@ exports[`Storyshots Views / Site settings / Page loading 1`] = `
+
+ Company information +
+
+
+ + Store information + +
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+ + +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
diff --git a/saleor/static/dashboard-next/storybook/mock.tsx b/saleor/static/dashboard-next/storybook/mock.tsx index b557db0da00..a977fd8fee6 100644 --- a/saleor/static/dashboard-next/storybook/mock.tsx +++ b/saleor/static/dashboard-next/storybook/mock.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; interface ChoiceProviderProps { children: (( diff --git a/saleor/static/dashboard-next/storybook/stories/auth/LoginLoading.tsx b/saleor/static/dashboard-next/storybook/stories/auth/LoginLoading.tsx index 497def5ddfc..a3cb8fb0921 100644 --- a/saleor/static/dashboard-next/storybook/stories/auth/LoginLoading.tsx +++ b/saleor/static/dashboard-next/storybook/stories/auth/LoginLoading.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import LoginLoading from "../../../auth/components/LoginLoading"; import Decorator from "../../Decorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/auth/LoginPage.tsx b/saleor/static/dashboard-next/storybook/stories/auth/LoginPage.tsx index 5300393f17d..65185dc28ac 100644 --- a/saleor/static/dashboard-next/storybook/stories/auth/LoginPage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/auth/LoginPage.tsx @@ -1,6 +1,6 @@ import { Omit } from "@material-ui/core"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import LoginPage, { LoginCardProps } from "../../../auth/components/LoginPage"; import Decorator from "../../Decorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/categories/CategoryCreatePage.tsx b/saleor/static/dashboard-next/storybook/stories/categories/CategoryCreatePage.tsx index 1366ec42e36..3ae1aa18733 100644 --- a/saleor/static/dashboard-next/storybook/stories/categories/CategoryCreatePage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/categories/CategoryCreatePage.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import CategoryCreatePage, { CategoryCreatePageProps diff --git a/saleor/static/dashboard-next/storybook/stories/categories/CategoryListPage.tsx b/saleor/static/dashboard-next/storybook/stories/categories/CategoryListPage.tsx index 2e87c7d7263..4fa80570998 100644 --- a/saleor/static/dashboard-next/storybook/stories/categories/CategoryListPage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/categories/CategoryListPage.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import CategoryListPage from "../../../categories/components/CategoryListPage"; import { categories } from "../../../categories/fixtures"; diff --git a/saleor/static/dashboard-next/storybook/stories/categories/CategoryProducts.tsx b/saleor/static/dashboard-next/storybook/stories/categories/CategoryProducts.tsx index 500e7ebb89d..7a0cd6f1c6b 100644 --- a/saleor/static/dashboard-next/storybook/stories/categories/CategoryProducts.tsx +++ b/saleor/static/dashboard-next/storybook/stories/categories/CategoryProducts.tsx @@ -1,7 +1,7 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; -import * as placeholder from "../../../../images/placeholder60x60.png"; +import placeholder from "../../../../images/placeholder60x60.png"; import CategoryProducts from "../../../categories/components/CategoryProducts"; import Decorator from "../../Decorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/categories/CategoryUpdatePage.tsx b/saleor/static/dashboard-next/storybook/stories/categories/CategoryUpdatePage.tsx index 2b797457a76..fb1f5dbec79 100644 --- a/saleor/static/dashboard-next/storybook/stories/categories/CategoryUpdatePage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/categories/CategoryUpdatePage.tsx @@ -1,7 +1,7 @@ import { Omit } from "@material-ui/core"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; -import * as placeholderImage from "../../../../images/placeholder255x255.png"; +import React from "react"; +import placeholderImage from "../../../../images/placeholder255x255.png"; import { category as categoryFixture } from "../../../categories/fixtures"; diff --git a/saleor/static/dashboard-next/storybook/stories/collections/CollectionCreatePage.tsx b/saleor/static/dashboard-next/storybook/stories/collections/CollectionCreatePage.tsx index 730e3115a4d..672dfe27fa6 100644 --- a/saleor/static/dashboard-next/storybook/stories/collections/CollectionCreatePage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/collections/CollectionCreatePage.tsx @@ -1,6 +1,6 @@ import { Omit } from "@material-ui/core"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import CollectionCreatePage, { CollectionCreatePageProps diff --git a/saleor/static/dashboard-next/storybook/stories/collections/CollectionDetailsPage.tsx b/saleor/static/dashboard-next/storybook/stories/collections/CollectionDetailsPage.tsx index b802dcdafbf..a270d5f3a23 100644 --- a/saleor/static/dashboard-next/storybook/stories/collections/CollectionDetailsPage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/collections/CollectionDetailsPage.tsx @@ -1,9 +1,9 @@ import { Omit } from "@material-ui/core"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; -import * as placeholderCollectionImage from "../../../../images/block1.jpg"; -import * as placeholderProductImage from "../../../../images/placeholder60x60.png"; +import placeholderCollectionImage from "../../../../images/block1.jpg"; +import placeholderProductImage from "../../../../images/placeholder60x60.png"; import CollectionDetailsPage, { CollectionDetailsPageProps } from "../../../collections/components/CollectionDetailsPage"; diff --git a/saleor/static/dashboard-next/storybook/stories/collections/CollectionListPage.tsx b/saleor/static/dashboard-next/storybook/stories/collections/CollectionListPage.tsx index ee5d8743328..cc0e44a4d5b 100644 --- a/saleor/static/dashboard-next/storybook/stories/collections/CollectionListPage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/collections/CollectionListPage.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import CollectionListPage, { CollectionListPageProps diff --git a/saleor/static/dashboard-next/storybook/stories/components/ActionDialog.tsx b/saleor/static/dashboard-next/storybook/stories/components/ActionDialog.tsx index 85c44419778..21f638494d2 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/ActionDialog.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/ActionDialog.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import Decorator from "../../Decorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/AddressEdit.tsx b/saleor/static/dashboard-next/storybook/stories/components/AddressEdit.tsx index 76ba17e98cf..33be7ec699b 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/AddressEdit.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/AddressEdit.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import AddressEdit from "@saleor/components/AddressEdit"; import { customer } from "../../../customers/fixtures"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/AddressFormatter.tsx b/saleor/static/dashboard-next/storybook/stories/components/AddressFormatter.tsx index de10f49e75c..4a60ce6db4a 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/AddressFormatter.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/AddressFormatter.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import AddressFormatter from "@saleor/components/AddressFormatter"; import { customer } from "../../../customers/fixtures"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/AutocompleteSelectMenu.tsx b/saleor/static/dashboard-next/storybook/stories/components/AutocompleteSelectMenu.tsx index 83893dfcb77..2fffc09fbce 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/AutocompleteSelectMenu.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/AutocompleteSelectMenu.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import AutocompleteSelectMenu, { AutocompleteSelectMenuProps diff --git a/saleor/static/dashboard-next/storybook/stories/components/CardMenu.tsx b/saleor/static/dashboard-next/storybook/stories/components/CardMenu.tsx index 25a74df5906..b88ab042db8 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/CardMenu.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/CardMenu.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import CardMenu, { CardMenuItem } from "@saleor/components/CardMenu"; import Decorator from "../../Decorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/Checkbox.tsx b/saleor/static/dashboard-next/storybook/stories/components/Checkbox.tsx index b3d813f4f1b..562d6420b77 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/Checkbox.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/Checkbox.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import Checkbox, { CheckboxProps } from "@saleor/components/Checkbox"; import Form from "@saleor/components/Form"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/Chip.tsx b/saleor/static/dashboard-next/storybook/stories/components/Chip.tsx index c31ab815b1d..315b2613b57 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/Chip.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/Chip.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import Chip, { ChipProps } from "@saleor/components/Chip"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/Date.tsx b/saleor/static/dashboard-next/storybook/stories/components/Date.tsx index 865cd67c4c9..d805db22369 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/Date.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/Date.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import Date from "@saleor/components/Date"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/DateTime.tsx b/saleor/static/dashboard-next/storybook/stories/components/DateTime.tsx index 8d6203ea9e3..9a2f45a7b80 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/DateTime.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/DateTime.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import { DateTime } from "@saleor/components/Date"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/DeleteFilterTabDialog.tsx b/saleor/static/dashboard-next/storybook/stories/components/DeleteFilterTabDialog.tsx index aa52603c749..c7fc73b2fb1 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/DeleteFilterTabDialog.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/DeleteFilterTabDialog.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import DeleteFilterTabDialog, { DeleteFilterTabDialogProps diff --git a/saleor/static/dashboard-next/storybook/stories/components/EditableTableCell.tsx b/saleor/static/dashboard-next/storybook/stories/components/EditableTableCell.tsx index 030cf0ab16a..e9d7a87e437 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/EditableTableCell.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/EditableTableCell.tsx @@ -4,7 +4,7 @@ import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import EditableTableCell from "@saleor/components/EditableTableCell"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/ErrorMessageCard.tsx b/saleor/static/dashboard-next/storybook/stories/components/ErrorMessageCard.tsx index 197ebc49587..b8b59c1d6c5 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/ErrorMessageCard.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/ErrorMessageCard.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import ErrorMessageCard from "@saleor/components/ErrorMessageCard"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/ErrorPage.tsx b/saleor/static/dashboard-next/storybook/stories/components/ErrorPage.tsx index 9b31cc405e9..8333466643e 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/ErrorPage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/ErrorPage.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import { Omit } from "@material-ui/core"; import ErrorPage, { ErrorPageProps } from "@saleor/components/ErrorPage"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/ExternalLink.tsx b/saleor/static/dashboard-next/storybook/stories/components/ExternalLink.tsx index 2564425ae88..8ffe4304cc4 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/ExternalLink.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/ExternalLink.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import ExternalLink from "@saleor/components/ExternalLink"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/FileUpload.tsx b/saleor/static/dashboard-next/storybook/stories/components/FileUpload.tsx index 9d3ded8070f..cd7cbab193f 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/FileUpload.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/FileUpload.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import FileUpload from "@saleor/components/FileUpload"; import Decorator from "../../Decorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/Filter.tsx b/saleor/static/dashboard-next/storybook/stories/components/Filter.tsx index 3145d6058c4..96cbf23de6c 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/Filter.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/Filter.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import { FieldType, diff --git a/saleor/static/dashboard-next/storybook/stories/components/Money.tsx b/saleor/static/dashboard-next/storybook/stories/components/Money.tsx index 8834d9ec092..04c5d21c57c 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/Money.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/Money.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import Money, { MoneyProps } from "@saleor/components/Money"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/MoneyRange.tsx b/saleor/static/dashboard-next/storybook/stories/components/MoneyRange.tsx index 8e2bc59b208..128ce7bee52 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/MoneyRange.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/MoneyRange.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import MoneyRange, { MoneyRangeProps } from "@saleor/components/MoneyRange"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/MultiAutocompleteSelectField.tsx b/saleor/static/dashboard-next/storybook/stories/components/MultiAutocompleteSelectField.tsx index 0df2a0860bb..3aa63f0d43b 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/MultiAutocompleteSelectField.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/MultiAutocompleteSelectField.tsx @@ -2,7 +2,7 @@ import IconButton from "@material-ui/core/IconButton"; import Typography from "@material-ui/core/Typography"; import DeleteIcon from "@material-ui/icons/Close"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import Form from "@saleor/components/Form"; import MultiAutocompleteSelectField, { diff --git a/saleor/static/dashboard-next/storybook/stories/components/MultiSelectField.tsx b/saleor/static/dashboard-next/storybook/stories/components/MultiSelectField.tsx index 010e17f57b2..4b5b4dc6c73 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/MultiSelectField.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/MultiSelectField.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import Form from "@saleor/components/Form"; import MultiSelectField from "@saleor/components/MultiSelectField"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/NotFoundPage.tsx b/saleor/static/dashboard-next/storybook/stories/components/NotFoundPage.tsx index 9c93da056f3..80181d0ba16 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/NotFoundPage.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/NotFoundPage.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import NotFoundPage from "@saleor/components/NotFoundPage"; import Decorator from "../../Decorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/PageHeader.tsx b/saleor/static/dashboard-next/storybook/stories/components/PageHeader.tsx index da3b4d4fe75..45f10d7f160 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/PageHeader.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/PageHeader.tsx @@ -1,7 +1,7 @@ import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import PageHeader from "@saleor/components/PageHeader"; import Decorator from "../../Decorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/Percent.tsx b/saleor/static/dashboard-next/storybook/stories/components/Percent.tsx index 6fafe1307bf..517e0651c52 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/Percent.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/Percent.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import Percent from "@saleor/components/Percent"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/PhoneField.tsx b/saleor/static/dashboard-next/storybook/stories/components/PhoneField.tsx index 87b74256d13..1d43ddbdc91 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/PhoneField.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/PhoneField.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import PhoneField from "@saleor/components/PhoneField"; import { prefixes } from "../../../orders/fixtures"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/PriceField.tsx b/saleor/static/dashboard-next/storybook/stories/components/PriceField.tsx index a290c6d9f96..2464223f28b 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/PriceField.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/PriceField.tsx @@ -1,5 +1,5 @@ import { storiesOf } from "@storybook/react"; -import * as React from "react"; +import React from "react"; import PriceField from "@saleor/components/PriceField"; import CardDecorator from "../../CardDecorator"; diff --git a/saleor/static/dashboard-next/storybook/stories/components/RichTextEditor.tsx b/saleor/static/dashboard-next/storybook/stories/components/RichTextEditor.tsx index 122e49654c2..9085612c090 100644 --- a/saleor/static/dashboard-next/storybook/stories/components/RichTextEditor.tsx +++ b/saleor/static/dashboard-next/storybook/stories/components/RichTextEditor.tsx @@ -1,6 +1,6 @@ import { storiesOf } from "@storybook/react"; import { RawDraftContentState } from "draft-js"; -import * as React from "react"; +import React from "react"; import RichTextEditor from "@saleor/components/RichTextEditor"; import CardDecorator from "../../CardDecorator"; @@ -26,6 +26,24 @@ export const content: RawDraftContentState = { text: "italic", type: "unstyled" }, + { + data: {}, + depth: 0, + entityRanges: [], + inlineStyleRanges: [{ offset: 0, length: 13, style: "STRIKETHROUGH" }], + key: "1p044", + text: "strikethrough", + type: "unstyled" + }, + { + data: {}, + depth: 0, + entityRanges: [], + inlineStyleRanges: [], + key: "aven6", + text: "h1", + type: "header-one" + }, { data: {}, depth: 0, @@ -82,12 +100,12 @@ export const content: RawDraftContentState = { } ], entityMap: { - "0": { type: "LINK", mutability: "MUTABLE", data: { href: "#" } } + "0": { type: "LINK", mutability: "MUTABLE", data: { url: "#" } } } }; storiesOf("Generics / Rich text editor", module) -.addDecorator(CardDecorator) -.addDecorator(Decorator) + .addDecorator(CardDecorator) + .addDecorator(Decorator) .add("default", () => ( { + it("Adds", () => { + expect(add("sit", initialArray)).toMatchSnapshot(); + }); + + it("Removes", () => { + expect(remove("ipsum", initialArray, (a, b) => a === b)).toMatchSnapshot(); + }); + + it("Matches", () => { + expect(isSelected("lorem", initialArray, (a, b) => a === b)).toBe(true); + expect(isSelected("sit", initialArray, (a, b) => a === b)).toBe(false); + }); + + it("Toggles", () => { + expect(toggle("lorem", initialArray, (a, b) => a === b)).toMatchSnapshot(); + expect(toggle("sit", initialArray, (a, b) => a === b)).toMatchSnapshot(); + }); +}); diff --git a/saleor/static/dashboard-next/utils/lists/lists.ts b/saleor/static/dashboard-next/utils/lists/lists.ts new file mode 100644 index 00000000000..b1c2517932a --- /dev/null +++ b/saleor/static/dashboard-next/utils/lists/lists.ts @@ -0,0 +1,32 @@ +type List = TData[]; +type Compare = (a: TData, b: TData) => boolean; + +export function isSelected( + data: TData, + list: List, + compare: Compare +) { + return !!list.find(listElement => compare(listElement, data)); +} + +export function add(data: TData, list: List) { + return [...list, data]; +} + +export function remove( + data: TData, + list: List, + compare: Compare +) { + return list.filter(listElement => !compare(listElement, data)); +} + +export function toggle( + data: TData, + list: List, + compare: Compare +) { + return isSelected(data, list, compare) + ? remove(data, list, compare) + : add(data, list); +} diff --git a/saleor/static/populatedb_data.json b/saleor/static/populatedb_data.json index 7236213fd3c..a199246acde 100644 --- a/saleor/static/populatedb_data.json +++ b/saleor/static/populatedb_data.json @@ -102,7 +102,7 @@ "name": "Paint", "has_variants": true, "is_shipping_required": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -113,7 +113,7 @@ "name": "Music", "has_variants": true, "is_shipping_required": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.2 kg" } }, @@ -124,7 +124,7 @@ "name": "Juice", "has_variants": true, "is_shipping_required": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -135,7 +135,7 @@ "name": "Wine", "has_variants": false, "is_shipping_required": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -146,7 +146,7 @@ "name": "Beer", "has_variants": false, "is_shipping_required": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -157,7 +157,7 @@ "name": "Cushion", "has_variants": true, "is_shipping_required": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.5 kg" } }, @@ -168,7 +168,7 @@ "name": "Shoe", "has_variants": true, "is_shipping_required": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -179,7 +179,7 @@ "name": "Top (clothing)", "has_variants": true, "is_shipping_required": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -213,7 +213,7 @@ "attributes": "{}", "updated_at": "2019-03-06T12:47:35.666Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -247,7 +247,7 @@ "attributes": "{}", "updated_at": "2019-03-06T12:47:35.878Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -281,7 +281,7 @@ "attributes": "{}", "updated_at": "2019-03-06T12:47:36.096Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -315,7 +315,7 @@ "attributes": "{}", "updated_at": "2019-03-06T12:47:36.309Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -349,7 +349,7 @@ "attributes": "{}", "updated_at": "2019-03-06T12:47:36.514Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -383,7 +383,7 @@ "attributes": "{\"16\": \"49\"}", "updated_at": "2019-03-06T12:47:36.727Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -417,7 +417,7 @@ "attributes": "{\"16\": \"3\"}", "updated_at": "2019-03-06T12:47:36.885Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -451,7 +451,7 @@ "attributes": "{\"16\": \"52\"}", "updated_at": "2019-03-06T12:47:37.040Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -485,7 +485,7 @@ "attributes": "{\"16\": \"50\"}", "updated_at": "2019-03-06T12:47:37.201Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -519,7 +519,7 @@ "attributes": "{\"16\": \"1\"}", "updated_at": "2019-03-06T12:47:37.363Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -553,7 +553,7 @@ "attributes": "{\"16\": \"2\"}", "updated_at": "2019-03-06T12:47:37.517Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -587,7 +587,7 @@ "attributes": "{\"16\": \"54\"}", "updated_at": "2019-03-06T12:47:37.679Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -621,7 +621,7 @@ "attributes": "{\"16\": \"53\"}", "updated_at": "2019-03-06T12:47:37.844Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -655,7 +655,7 @@ "attributes": "{\"16\": \"51\"}", "updated_at": "2019-03-06T12:47:38.007Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -689,7 +689,7 @@ "attributes": "{\"20\": \"67\"}", "updated_at": "2019-03-06T12:47:38.171Z", "charge_taxes": true, - "tax_rate": "", + "meta": {"taxes":{"vatlayer": {"code": "", "description": ""}}}, "weight": "0.0 kg" } }, @@ -723,7 +723,7 @@ "attributes": "{\"20\": \"67\"}", "updated_at": "2019-03-06T12:47:38.362Z", "charge_taxes": true, - "tax_rate": "", + "meta": {"taxes":{"vatlayer": {"code": "", "description": ""}}}, "weight": "0.0 kg" } }, @@ -757,7 +757,7 @@ "attributes": "{\"15\": \"46\", \"21\": \"68\"}", "updated_at": "2019-03-06T12:47:38.530Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -791,7 +791,7 @@ "attributes": "{\"15\": \"46\", \"21\": \"69\"}", "updated_at": "2019-03-06T12:47:38.875Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -825,7 +825,7 @@ "attributes": "{\"23\": \"72\"}", "updated_at": "2019-03-06T12:47:39.256Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -859,7 +859,7 @@ "attributes": "{\"23\": \"72\"}", "updated_at": "2019-03-06T12:47:39.501Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -893,7 +893,7 @@ "attributes": "{}", "updated_at": "2019-03-06T12:47:39.769Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -927,7 +927,7 @@ "attributes": "{}", "updated_at": "2019-03-06T12:47:40.537Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "1.0 kg" } }, @@ -961,7 +961,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:41.280Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -995,7 +995,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:41.681Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1029,7 +1029,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:41.972Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1063,7 +1063,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:42.283Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1097,7 +1097,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:42.524Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1131,7 +1131,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:42.771Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1165,7 +1165,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:43.640Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1199,7 +1199,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:44.067Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1233,7 +1233,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:44.582Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1267,7 +1267,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:45.080Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1301,7 +1301,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:45.376Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1335,7 +1335,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:45.669Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, @@ -1369,7 +1369,7 @@ "attributes": "{\"25\": \"82\"}", "updated_at": "2019-03-06T12:47:45.937Z", "charge_taxes": true, - "tax_rate": "standard", + "meta": {"taxes":{"vatlayer": {"code": "standard", "description": ""}}}, "weight": "0.0 kg" } }, diff --git a/setup.cfg b/setup.cfg index c19a0025332..df7e7cf5b0b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -20,6 +20,8 @@ filterwarnings = ignore::DeprecationWarning ignore::PendingDeprecationWarning DJANGO_SETTINGS_MODULE = tests.settings +markers = + integration [flake8] exclude = diff --git a/templates/base.html b/templates/base.html index 090c9c4d32a..2782a3a641b 100644 --- a/templates/base.html +++ b/templates/base.html @@ -140,6 +140,7 @@