skilldrop-cli 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +2 -0
  2. package/catalogue.json +18 -2
  3. package/model-routing.json +16 -0
  4. package/package.json +1 -1
  5. package/packs/event-planner/pack.json +61 -0
  6. package/packs/event-planner/skills/run-of-show/SKILL.md +141 -0
  7. package/packs/event-planner/skills/run-of-show/evals/eval_queries.json +30 -0
  8. package/packs/event-planner/skills/run-of-show/evals/evals.json +103 -0
  9. package/packs/event-planner/skills/run-of-show/evals/files/1/agenda.md +16 -0
  10. package/packs/event-planner/skills/run-of-show/evals/files/2/schedule.csv +8 -0
  11. package/packs/event-planner/skills/run-of-show/evals/files/3/notes.txt +3 -0
  12. package/packs/event-planner/skills/run-of-show/evals/files/4/sessions_export.csv +25 -0
  13. package/packs/event-planner/skills/run-of-show/evals/files/4/venue_and_crew.txt +27 -0
  14. package/packs/event-planner/skills/run-of-show/evals/files/5/runsheet_v4.csv +28 -0
  15. package/packs/event-planner/skills/run-of-show/evals/files/5/venue_and_suppliers.txt +22 -0
  16. package/packs/event-planner/skills/run-of-show/evals/files/6/acts_from_booker.csv +26 -0
  17. package/packs/event-planner/skills/run-of-show/evals/files/6/venue_rooms_and_crew.txt +14 -0
  18. package/packs/event-planner/skills/run-of-show/evals/files/7/runsheet_draft_v4.csv +25 -0
  19. package/packs/event-planner/skills/run-of-show/evals/files/7/venue_and_fixed_times.txt +24 -0
  20. package/packs/event-planner/skills/run-of-show/examples/product-launch.md +77 -0
  21. package/packs/event-planner/skills/run-of-show/examples/product-launch.svg +58 -0
  22. package/packs/event-planner/skills/run-of-show/manifest.json +44 -0
  23. package/packs/event-planner/skills/run-of-show/scripts/show_check.py +295 -0
  24. package/packs/event-planner/skills/run-of-show/templates/show.json +15 -0
  25. package/packs/event-planner/skills/seating-plan/SKILL.md +152 -0
  26. package/packs/event-planner/skills/seating-plan/evals/eval_queries.json +30 -0
  27. package/packs/event-planner/skills/seating-plan/evals/evals.json +134 -0
  28. package/packs/event-planner/skills/seating-plan/evals/files/1/guests.csv +31 -0
  29. package/packs/event-planner/skills/seating-plan/evals/files/2/table-plan.txt +8 -0
  30. package/packs/event-planner/skills/seating-plan/evals/files/3/brief.txt +4 -0
  31. package/packs/event-planner/skills/seating-plan/evals/files/3/guests.csv +49 -0
  32. package/packs/event-planner/skills/seating-plan/evals/files/4/rsvp_export.csv +127 -0
  33. package/packs/event-planner/skills/seating-plan/evals/files/4/seating_notes.txt +21 -0
  34. package/packs/event-planner/skills/seating-plan/evals/files/5/organiser_notes.txt +10 -0
  35. package/packs/event-planner/skills/seating-plan/evals/files/5/registrations.csv +93 -0
  36. package/packs/event-planner/skills/seating-plan/evals/files/5/table_plan_v3.csv +94 -0
  37. package/packs/event-planner/skills/seating-plan/evals/files/6/bridgets_notes.txt +30 -0
  38. package/packs/event-planner/skills/seating-plan/evals/files/6/ticket_export.csv +117 -0
  39. package/packs/event-planner/skills/seating-plan/evals/files/6/venue_floorplan_notes.txt +14 -0
  40. package/packs/event-planner/skills/seating-plan/evals/files/7/keep_apart_CONFIDENTIAL.txt +9 -0
  41. package/packs/event-planner/skills/seating-plan/evals/files/7/prom_seating_v3.csv +101 -0
  42. package/packs/event-planner/skills/seating-plan/evals/files/7/ticket_list.csv +101 -0
  43. package/packs/event-planner/skills/seating-plan/evals/files/7/venue_info.txt +16 -0
  44. package/packs/event-planner/skills/seating-plan/evals/files/8/registrations_export.csv +147 -0
  45. package/packs/event-planner/skills/seating-plan/evals/files/8/room_layout.md +22 -0
  46. package/packs/event-planner/skills/seating-plan/evals/files/8/seating_requests.txt +31 -0
  47. package/packs/event-planner/skills/seating-plan/evals/files/9/guest_list.csv +84 -0
  48. package/packs/event-planner/skills/seating-plan/evals/files/9/notes.txt +16 -0
  49. package/packs/event-planner/skills/seating-plan/evals/files/9/table_plan.csv +85 -0
  50. package/packs/event-planner/skills/seating-plan/examples/wedding-dinner.md +61 -0
  51. package/packs/event-planner/skills/seating-plan/examples/wedding-dinner.svg +39 -0
  52. package/packs/event-planner/skills/seating-plan/manifest.json +44 -0
  53. package/packs/event-planner/skills/seating-plan/scripts/seating_check.py +324 -0
  54. package/packs/event-planner/skills/seating-plan/templates/seating.json +28 -0
  55. package/packs/experience-design/pack.json +5 -0
  56. package/packs/experience-design/skills/locale-check/SKILL.md +139 -0
  57. package/packs/experience-design/skills/locale-check/evals/eval_queries.json +38 -0
  58. package/packs/experience-design/skills/locale-check/evals/evals.json +104 -0
  59. package/packs/experience-design/skills/locale-check/evals/files/1/budget.json +1 -0
  60. package/packs/experience-design/skills/locale-check/evals/files/1/locales/ar.json +16 -0
  61. package/packs/experience-design/skills/locale-check/evals/files/1/locales/de.json +12 -0
  62. package/packs/experience-design/skills/locale-check/evals/files/1/locales/en.json +12 -0
  63. package/packs/experience-design/skills/locale-check/evals/files/1/locales/pl.json +12 -0
  64. package/packs/experience-design/skills/locale-check/evals/files/2/app/src/main/res/values/strings.xml +12 -0
  65. package/packs/experience-design/skills/locale-check/evals/files/2/app/src/main/res/values-es/strings.xml +11 -0
  66. package/packs/experience-design/skills/locale-check/evals/files/2/app/src/main/res/values-fr/strings.xml +12 -0
  67. package/packs/experience-design/skills/locale-check/evals/files/3/po/ja.po +20 -0
  68. package/packs/experience-design/skills/locale-check/evals/files/3/po/messages.pot +23 -0
  69. package/packs/experience-design/skills/locale-check/evals/files/3/po/ru.po +22 -0
  70. package/packs/experience-design/skills/locale-check/evals/files/4/budgets.json +15 -0
  71. package/packs/experience-design/skills/locale-check/evals/files/4/locales/ar.json +265 -0
  72. package/packs/experience-design/skills/locale-check/evals/files/4/locales/de.json +265 -0
  73. package/packs/experience-design/skills/locale-check/evals/files/4/locales/en.json +265 -0
  74. package/packs/experience-design/skills/locale-check/evals/files/4/locales/fr.json +265 -0
  75. package/packs/experience-design/skills/locale-check/evals/files/4/locales/pl.json +265 -0
  76. package/packs/experience-design/skills/locale-check/evals/files/5/app/src/main/res/values/strings.xml +77 -0
  77. package/packs/experience-design/skills/locale-check/evals/files/5/app/src/main/res/values-es/strings.xml +63 -0
  78. package/packs/experience-design/skills/locale-check/evals/files/5/app/src/main/res/values-ja/strings.xml +61 -0
  79. package/packs/experience-design/skills/locale-check/evals/files/6/po/cs.po +605 -0
  80. package/packs/experience-design/skills/locale-check/evals/files/6/po/marlin.pot +602 -0
  81. package/packs/experience-design/skills/locale-check/evals/files/6/po/pt_BR.po +602 -0
  82. package/packs/experience-design/skills/locale-check/evals/files/6/po/ru.po +608 -0
  83. package/packs/experience-design/skills/locale-check/evals/files/7/Tidewatch/Resources/en.lproj/Localizable.strings +160 -0
  84. package/packs/experience-design/skills/locale-check/evals/files/7/Tidewatch/Resources/en.lproj/Localizable.stringsdict +70 -0
  85. package/packs/experience-design/skills/locale-check/evals/files/7/Tidewatch/Resources/he.lproj/Localizable.strings +157 -0
  86. package/packs/experience-design/skills/locale-check/evals/files/7/Tidewatch/Resources/he.lproj/Localizable.stringsdict +86 -0
  87. package/packs/experience-design/skills/locale-check/evals/files/7/Tidewatch/Resources/it.lproj/Localizable.strings +160 -0
  88. package/packs/experience-design/skills/locale-check/evals/files/7/Tidewatch/Resources/it.lproj/Localizable.stringsdict +68 -0
  89. package/packs/experience-design/skills/locale-check/evals/files/7/Tidewatch/Resources/ko.lproj/Localizable.strings +160 -0
  90. package/packs/experience-design/skills/locale-check/evals/files/7/Tidewatch/Resources/ko.lproj/Localizable.stringsdict +62 -0
  91. package/packs/experience-design/skills/locale-check/examples/settings-release.md +107 -0
  92. package/packs/experience-design/skills/locale-check/manifest.json +45 -0
  93. package/packs/experience-design/skills/locale-check/scripts/locale_check.py +1105 -0
  94. package/packs/operations-manager/pack.json +60 -0
  95. package/packs/operations-manager/skills/shift-roster/SKILL.md +166 -0
  96. package/packs/operations-manager/skills/shift-roster/evals/eval_queries.json +38 -0
  97. package/packs/operations-manager/skills/shift-roster/evals/evals.json +135 -0
  98. package/packs/operations-manager/skills/shift-roster/evals/files/1/shifts.csv +3 -0
  99. package/packs/operations-manager/skills/shift-roster/evals/files/1/staff.csv +8 -0
  100. package/packs/operations-manager/skills/shift-roster/evals/files/2/rota.csv +22 -0
  101. package/packs/operations-manager/skills/shift-roster/evals/files/2/staff.csv +6 -0
  102. package/packs/operations-manager/skills/shift-roster/evals/files/3/team.md +14 -0
  103. package/packs/operations-manager/skills/shift-roster/evals/files/4/availability_export_wk47.csv +23 -0
  104. package/packs/operations-manager/skills/shift-roster/evals/files/4/rota_notes.txt +20 -0
  105. package/packs/operations-manager/skills/shift-roster/evals/files/5/rota_draft_16-29nov.csv +107 -0
  106. package/packs/operations-manager/skills/shift-roster/evals/files/5/staff_list.csv +17 -0
  107. package/packs/operations-manager/skills/shift-roster/evals/files/6/availability_notes.txt +24 -0
  108. package/packs/operations-manager/skills/shift-roster/evals/files/6/peoplehub_staff_export.csv +14 -0
  109. package/packs/operations-manager/skills/shift-roster/evals/files/6/rota_template.csv +25 -0
  110. package/packs/operations-manager/skills/shift-roster/evals/files/7/leave_and_availability.txt +18 -0
  111. package/packs/operations-manager/skills/shift-roster/evals/files/7/rota_wc_30nov.csv +47 -0
  112. package/packs/operations-manager/skills/shift-roster/evals/files/7/staff_list.csv +15 -0
  113. package/packs/operations-manager/skills/shift-roster/evals/files/8/availability_form_responses.csv +22 -0
  114. package/packs/operations-manager/skills/shift-roster/evals/files/8/cover_requirements.csv +15 -0
  115. package/packs/operations-manager/skills/shift-roster/evals/files/8/staff_export.csv +29 -0
  116. package/packs/operations-manager/skills/shift-roster/evals/files/9/leave_and_restrictions.txt +16 -0
  117. package/packs/operations-manager/skills/shift-roster/evals/files/9/rota_export_07-13Dec.csv +85 -0
  118. package/packs/operations-manager/skills/shift-roster/evals/files/9/staff_list.csv +27 -0
  119. package/packs/operations-manager/skills/shift-roster/examples/cafe-week.md +72 -0
  120. package/packs/operations-manager/skills/shift-roster/examples/cafe-week.svg +123 -0
  121. package/packs/operations-manager/skills/shift-roster/manifest.json +34 -0
  122. package/packs/operations-manager/skills/shift-roster/scripts/roster_check.py +633 -0
  123. package/packs/operations-manager/skills/shift-roster/templates/roster.json +22 -0
@@ -0,0 +1,104 @@
1
+ {
2
+ "skill_name": "locale-check",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "We ship the new checkout tomorrow in German, Polish and Arabic. The agency sent the files back this afternoon: locales/en.json is our source and locales/de.json, locales/pl.json and locales/ar.json are theirs. budget.json has the character limits design gave us for the pay button and the page title. Are we OK to ship?",
7
+ "assertions": [
8
+ "Opens with a plain answer that the release is not safe to ship as it stands, with the failures counted by locale",
9
+ "Flags that German checkout.items (the plural 'other' form) dropped {{count}}, and gives the corrected string with {{count}} restored",
10
+ "Flags that Polish checkout.items has only one and other, and says Polish also needs few and many",
11
+ "Flags that Arabic checkout.saved_cards (an ICU plural) is missing zero, two, few and many",
12
+ "Flags the Polish promo_applied string's unclosed <b> tag, with the corrected markup",
13
+ "Flags the German pay button as over its 22-character budget",
14
+ "Lists Arabic error_declined as untranslated (identical to the English) and routes it to a translator rather than translating it",
15
+ "Does not edit the locale files, and does not mention scripts, tools or skill names in the reply"
16
+ ]
17
+ },
18
+ {
19
+ "id": 2,
20
+ "prompt": "Our Android build broke after merging the French and Spanish strings for Trailmark (app/src/main/res/values-fr and values-es; English is in values/). Can you find what's wrong and what else in those files will bite us?",
21
+ "assertions": [
22
+ "Identifies the unescaped apostrophe in the French offline string (l'heure) as what breaks the Android build, and gives the escaped form",
23
+ "Flags that the French synced string swaps the order of a %d and a %s, and gives the corrected string with numbered arguments, %2$s and %1$d",
24
+ "Flags that the Spanish delete_confirm string lost the <b> markup around the route name",
25
+ "Treats the missing Spanish plural 'many' as a warning, not a build failure",
26
+ "Does not report app_name, which is marked translatable=false, as missing",
27
+ "Ranks the build failure first, then the runtime problems, then the warnings",
28
+ "Does not invent strings, keys or files the input didn't contain"
29
+ ]
30
+ },
31
+ {
32
+ "id": 3,
33
+ "prompt": "Russian users see the unread count in English and the 'Archive' button in English too. Japanese looks fine. The gettext files are in po/: messages.pot, ru.po and ja.po. What's going on?",
34
+ "assertions": [
35
+ "Explains that ru.po's Plural-Forms header sets nplurals=2 where Russian needs 3, and that the unread-message plural therefore has too few forms",
36
+ "Explains that the 'Archive' entry is marked fuzzy, so msgfmt leaves it out and the English source shows",
37
+ "Flags that %(count)d became %(count)s in the 'sent you messages' string",
38
+ "Gives the corrected Plural-Forms header for Russian and says the third plural form needs a translator, or supplies one marked as a suggestion to confirm",
39
+ "Says ja.po's single plural form is correct for Japanese and does not flag it",
40
+ "Does not edit the .po files unasked"
41
+ ]
42
+ },
43
+ {
44
+ "id": 4,
45
+ "held_out": "2026-11-06",
46
+ "prompt": "Lumio web 3.4 goes out on Thursday. The translation agency sent back German, French, Polish and Arabic, and they're in locales/ as ICU message JSON (en.json is the source; we use FormatJS). Can you QA these locale files before we ship? Design gave us character limits for the tight UI spots in budgets.json, so will the German fit? Also, the French build crashed in staging on one of these strings and nobody has worked out which one.",
47
+ "assertions": [
48
+ "Leads with a ship / don't-ship answer, stated before the details: not ready to ship Thursday as it stands, because at least one string breaks at runtime",
49
+ "Explains the French crash: fr cart.items.count has an ICU plural with no closing brace (3 '{' against 2 '}'), so the message fails to parse",
50
+ "Finds both of these breakages, naming key and locale: de checkout.shipping.eta uses {datum} where the source has {date}, so the date is never filled in; and fr promo.banner closes the bold with a second <b> instead of </b>",
51
+ "Finds the plural gaps with the forms named: pl orders.count has one/few/other but no 'many' (so 5 orders falls through to 'other'), and ar notifications.unread has only one/other, missing zero, two, few and many. Every other Polish and Arabic plural is complete",
52
+ "Answers the German question from budgets.json: de button.place_order, 'Bestellung zahlungspflichtig abschließen', is 40 characters against a 24-character budget. It is the only budgeted string over its limit in any locale (de and fr button.download_invoice are exactly 22 of 22 and fit)",
53
+ "Confirms key coverage is complete: all 165 source keys are present in each of de, fr, pl and ar, with no extra keys",
54
+ "Does not report the decoys as errors: the reordered but intact placeholders in de giftcard.received and in address.deliver_to (de, fr, pl), and the brand name 'Lumio' (app.name, footer.copyright) left identical in every locale",
55
+ "Does not invent a translation or a key not in the input: mechanical repairs (renaming {datum} to {date}, adding the brace, fixing the tag) are fine, but any new wording, such as a Polish 'many' form, Arabic plural forms or a shorter German button label, is flagged for a translator rather than handed over as final copy, and no key is cited that is not in the files"
56
+ ]
57
+ },
58
+ {
59
+ "id": 5,
60
+ "held_out": "2026-11-06",
61
+ "prompt": "We're pushing Parcelo 5.2 for Android to the Play Store tomorrow morning. The string resources are in app/src/main/res: values/ is the English source, and values-es/ and values-ja/ came back from the agency last week. Is this safe to ship tomorrow?",
62
+ "assertions": [
63
+ "Leads with a ship / don't-ship answer, stated before the details: not safe to ship tomorrow as it stands, because the Japanese build can crash and a Spanish string changes meaning",
64
+ "Finds that ja order_status_title uses %d where the source has %s, which is an order reference like PX-48213, so formatting it throws IllegalFormatConversionException and crashes that screen in Japanese",
65
+ "Finds that es send_confirm_route swaps the positional arguments ('de %2$s a %1$s' against the source 'from %1$s to %2$s'), so the Spanish confirmation names the destination as the origin. It compiles and does not crash, but the meaning is reversed",
66
+ "Finds that the es photos_selected plural has only an 'other' item and no 'one', so one photo reads '1 fotos seleccionadas'",
67
+ "Finds that es delivery_window_note is untranslated: it is identical to the English source",
68
+ "Does not report the decoys as errors: ja status_delivered_at puts %2$s before %1$s, which is valid positional reordering for Japanese word order; ja plurals with only 'other' are correct for Japanese; app_name 'Parcelo' is legitimately identical; and support_email is absent from values-es and values-ja because it is marked translatable=\"false\"",
69
+ "Lists each problem with its string name and locale folder (values-es or values-ja), giving the four problems in total",
70
+ "Does not invent a translation or a key not in the input: it does not supply its own Spanish wording for delivery_window_note or a Spanish 'one' item as final copy (any suggestion is flagged for a translator), and it cites no string name that is not in the files"
71
+ ]
72
+ },
73
+ {
74
+ "id": 6,
75
+ "held_out": "2026-11-06",
76
+ "prompt": "We cut Marlin Backup 4.2 tomorrow and the translators just sent back po/ru.po, po/cs.po and po/pt_BR.po against po/marlin.pot. One constraint: anything with msgctxt \"toolbar\" has to fit in 14 characters, or it gets clipped in the compact toolbar. Can these ship? Tell me what has to be fixed before the build, by locale.",
77
+ "assertions": [
78
+ "Leads with a ship / don't-ship answer: these files should not ship as they are, and it says so before the detailed list",
79
+ "Catches that pt_BR translates \"Vault %s is %d%% full\" as \"O cofre %d está %s%% cheio\", swapping the %s and %d types, which breaks or crashes the C printf call (msgfmt -c rejects it)",
80
+ "Catches that ru gives \"%d snapshot pruned\" only 2 plural forms (msgstr[0] and msgstr[1]) while the ru.po header declares nplurals=3",
81
+ "Catches that cs translates \"<b>Warning:</b> this vault is not encrypted.\" as \"<b>Upozornění: tento trezor není šifrován.\", which drops the closing </b>",
82
+ "Flags both missing-text problems: the ru msgstr for \"Encryption key could not be verified.\" is empty, and cs.po has no entry at all for \"Show in file manager\"",
83
+ "Flags the pt_BR toolbar label for \"Verify Vault\", \"Verificar cofre\", as 15 characters, over the 14 limit, and does not flag the ru toolbar labels \"Проверка копий\" and \"Добавить папку\", which are exactly 14 characters (27 bytes), so it counts characters, not bytes",
84
+ "Does not report ru \"%2$s создан снимок %1$s\" for \"Snapshot %1$s taken on %2$s\" as an error: positional placeholders may be reordered",
85
+ "Does not invent a translation or a key: it does not supply Russian or Czech text as the final fix for the empty or missing entries without sending it back to a translator, and every key it reports exists in marlin.pot"
86
+ ]
87
+ },
88
+ {
89
+ "id": 7,
90
+ "held_out": "2026-11-06",
91
+ "prompt": "Tidewatch 3.0 goes to App Review on Thursday. It's the release that adds Italian, Korean and Hebrew. The localization files are in Tidewatch/Resources/: en is the source, and it, ko and he are new, each with a Localizable.strings and a Localizable.stringsdict. Straight answer: can I submit with these files? If not, what exactly needs fixing?",
92
+ "assertions": [
93
+ "Leads with a ship / don't-ship answer: do not submit with these files as they are, and it says so before the detailed list",
94
+ "Catches that the it \"alert.rip.body\" says \"Il nuoto è consigliato\" (swimming is advised), dropping the source's \"not advised\": a safety-message meaning flip that no syntax check would catch",
95
+ "Catches that the ko \"tide.summary\" (\"만조 %1$@, 간조 %2$@\") puts the high-tide label on %1$@ and the low-tide label on %2$@, the reverse of the source \"Low tide at %1$@, high tide at %2$@\", so Korean users see the two times swapped",
96
+ "Catches that the he \"water.temp\" uses %d where the source has %.1f, the wrong format type for a decimal temperature",
97
+ "Catches that the he Localizable.strings has no \"settings.notifications.footer\" key",
98
+ "Catches that the it stringsdict entry \"swell.count\" has only an \"other\" form and no \"one\", so Italian shows \"1 mareggiate\"",
99
+ "Does not flag the decoys as defects: ko stringsdict entries with only \"other\", the reordered positional placeholders in he \"spot.updated\" and ko \"wind.speed\", the he \"forecast.days.count\" one and two forms that spell the number out with no %d, and it \"tab.surf\" and \"settings.privacy\" matching the English",
100
+ "Does not invent a translation or a key: any corrected Italian, Korean or Hebrew wording is flagged for a native speaker to confirm, and every key it reports exists in the en files"
101
+ ]
102
+ }
103
+ ]
104
+ }
@@ -0,0 +1 @@
1
+ {"keys": {"checkout.pay_button": 22, "checkout.title": 14}}
@@ -0,0 +1,16 @@
1
+ {
2
+ "checkout": {
3
+ "title": "الدفع",
4
+ "pay_button": "ادفع {amount}",
5
+ "items_zero": "سلتك فارغة",
6
+ "items_one": "عنصر واحد في سلتك",
7
+ "items_two": "عنصران في سلتك",
8
+ "items_few": "{{count}} عناصر في سلتك",
9
+ "items_many": "{{count}} عنصرًا في سلتك",
10
+ "items_other": "{{count}} عنصر في سلتك",
11
+ "delivery": "يصل بحلول {date}.",
12
+ "promo_applied": "تم تطبيق الرمز <b>{code}</b>.",
13
+ "saved_cards": "{count, plural, one {بطاقة محفوظة واحدة} other {# بطاقات محفوظة}}",
14
+ "error_declined": "Your card was declined. Try another card."
15
+ }
16
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "checkout": {
3
+ "title": "Kasse",
4
+ "pay_button": "Jetzt sicher bezahlen: {amount}",
5
+ "items_one": "{{count}} Artikel im Warenkorb",
6
+ "items_other": "Artikel im Warenkorb",
7
+ "delivery": "Lieferung bis {date}.",
8
+ "promo_applied": "Code <b>{code}</b> angewendet.",
9
+ "saved_cards": "{count, plural, one {# gespeicherte Karte} other {# gespeicherte Karten}}",
10
+ "error_declined": "Ihre Karte wurde abgelehnt. Versuchen Sie eine andere Karte."
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "checkout": {
3
+ "title": "Checkout",
4
+ "pay_button": "Pay {amount}",
5
+ "items_one": "{{count}} item in your basket",
6
+ "items_other": "{{count}} items in your basket",
7
+ "delivery": "Arrives by {date}.",
8
+ "promo_applied": "Code <b>{code}</b> applied.",
9
+ "saved_cards": "{count, plural, one {# saved card} other {# saved cards}}",
10
+ "error_declined": "Your card was declined. Try another card."
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "checkout": {
3
+ "title": "Kasa",
4
+ "pay_button": "Zapłać {amount}",
5
+ "items_one": "{{count}} produkt w koszyku",
6
+ "items_other": "{{count}} produktów w koszyku",
7
+ "delivery": "Dostawa do {date}.",
8
+ "promo_applied": "Kod <b>{code} zastosowany.",
9
+ "saved_cards": "{count, plural, one {# zapisana karta} few {# zapisane karty} many {# zapisanych kart} other {# zapisanej karty}}",
10
+ "error_declined": "Twoja karta została odrzucona. Spróbuj innej karty."
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <string name="app_name" translatable="false">Trailmark</string>
4
+ <string name="welcome">Welcome back, %1$s!</string>
5
+ <string name="synced">Synced %1$d routes from %2$s</string>
6
+ <string name="offline">You\'re offline. Routes will sync when you reconnect.</string>
7
+ <plurals name="routes_saved">
8
+ <item quantity="one">%d route saved</item>
9
+ <item quantity="other">%d routes saved</item>
10
+ </plurals>
11
+ <string name="delete_confirm">Delete <b>%1$s</b>?</string>
12
+ </resources>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <string name="welcome">¡Hola de nuevo, %1$s!</string>
4
+ <string name="synced">Se sincronizaron %1$d rutas desde %2$s</string>
5
+ <string name="offline">Sin conexión. Las rutas se sincronizarán cuando te vuelvas a conectar.</string>
6
+ <plurals name="routes_saved">
7
+ <item quantity="one">%d ruta guardada</item>
8
+ <item quantity="other">%d rutas guardadas</item>
9
+ </plurals>
10
+ <string name="delete_confirm">¿Eliminar %1$s?</string>
11
+ </resources>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <string name="welcome">Bon retour, %1$s !</string>
4
+ <string name="synced">%s : %d itinéraires synchronisés</string>
5
+ <string name="offline">Vous êtes hors ligne. Les itinéraires seront synchronisés à l'heure de la reconnexion.</string>
6
+ <plurals name="routes_saved">
7
+ <item quantity="one">%d itinéraire enregistré</item>
8
+ <item quantity="many">%d d\'itinéraires enregistrés</item>
9
+ <item quantity="other">%d itinéraires enregistrés</item>
10
+ </plurals>
11
+ <string name="delete_confirm">Supprimer <b>%1$s</b> ?</string>
12
+ </resources>
@@ -0,0 +1,20 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Language: ja\n"
4
+ "Content-Type: text/plain; charset=UTF-8\n"
5
+ "Plural-Forms: nplurals=1; plural=0;\n"
6
+
7
+ msgid "Inbox"
8
+ msgstr "受信トレイ"
9
+
10
+ #, python-format
11
+ msgid "%(name)s sent you %(count)d messages"
12
+ msgstr "%(name)sさんから%(count)d件のメッセージ"
13
+
14
+ msgid "%d unread message"
15
+ msgid_plural "%d unread messages"
16
+ msgstr[0] "未読メッセージ%d件"
17
+
18
+ msgctxt "verb"
19
+ msgid "Archive"
20
+ msgstr "アーカイブする"
@@ -0,0 +1,23 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Content-Type: text/plain; charset=UTF-8\n"
4
+
5
+ #: app/inbox.py:12
6
+ msgid "Inbox"
7
+ msgstr ""
8
+
9
+ #: app/inbox.py:20
10
+ #, python-format
11
+ msgid "%(name)s sent you %(count)d messages"
12
+ msgstr ""
13
+
14
+ #: app/inbox.py:31
15
+ msgid "%d unread message"
16
+ msgid_plural "%d unread messages"
17
+ msgstr[0] ""
18
+ msgstr[1] ""
19
+
20
+ #: app/settings.py:8
21
+ msgctxt "verb"
22
+ msgid "Archive"
23
+ msgstr ""
@@ -0,0 +1,22 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Language: ru\n"
4
+ "Content-Type: text/plain; charset=UTF-8\n"
5
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
6
+
7
+ msgid "Inbox"
8
+ msgstr "Входящие"
9
+
10
+ #, python-format
11
+ msgid "%(name)s sent you %(count)d messages"
12
+ msgstr "%(name)s отправил вам %(count)s сообщений"
13
+
14
+ msgid "%d unread message"
15
+ msgid_plural "%d unread messages"
16
+ msgstr[0] "%d непрочитанное сообщение"
17
+ msgstr[1] "%d непрочитанных сообщений"
18
+
19
+ #, fuzzy
20
+ msgctxt "verb"
21
+ msgid "Archive"
22
+ msgstr "Архив"
@@ -0,0 +1,15 @@
1
+ {
2
+ "_note": "Max characters per string, from the Figma specs. Applies to every locale.",
3
+ "button.place_order": 24,
4
+ "button.add_to_cart": 20,
5
+ "button.checkout": 20,
6
+ "button.download_invoice": 22,
7
+ "button.sign_in": 16,
8
+ "button.track_order": 20,
9
+ "nav.orders": 14,
10
+ "nav.account": 14,
11
+ "nav.help": 14,
12
+ "nav.deals": 14,
13
+ "checkout.summary.title": 28,
14
+ "order.status.out_for_delivery": 24
15
+ }
@@ -0,0 +1,265 @@
1
+ {
2
+ "account": {
3
+ "delete": {
4
+ "confirm": "هل تريد حذف حسابك؟ لا يمكن التراجع عن ذلك."
5
+ },
6
+ "greeting": "مرحباً {name}",
7
+ "member_since": "عضو منذ {year}",
8
+ "privacy": "اقرأ <link>سياسة الخصوصية</link> و<b>إدارة ملفات تعريف الارتباط</b>.",
9
+ "role": "{role, select, admin {مسؤول} member {عضو} other {زائر}}",
10
+ "welcome_back": "مرحباً بعودتك يا {name}"
11
+ },
12
+ "address": {
13
+ "deliver_to": "التوصيل إلى {city}، {postcode}"
14
+ },
15
+ "app": {
16
+ "name": "Lumio"
17
+ },
18
+ "button": {
19
+ "add_to_cart": "أضف إلى السلة",
20
+ "apply": "تطبيق",
21
+ "back": "رجوع",
22
+ "cancel": "إلغاء",
23
+ "checkout": "الانتقال إلى الدفع",
24
+ "close": "إغلاق",
25
+ "contact_support": "اتصل بالدعم",
26
+ "continue": "متابعة",
27
+ "create_account": "إنشاء حساب",
28
+ "download_invoice": "تنزيل الفاتورة",
29
+ "edit": "تعديل",
30
+ "place_order": "تأكيد الطلب",
31
+ "remove": "إزالة",
32
+ "reset_password": "إعادة تعيين كلمة المرور",
33
+ "retry": "حاول مرة أخرى",
34
+ "save": "حفظ",
35
+ "sign_in": "تسجيل الدخول",
36
+ "sign_out": "تسجيل الخروج",
37
+ "track_order": "تتبع الطلب",
38
+ "view_details": "عرض التفاصيل"
39
+ },
40
+ "cart": {
41
+ "empty": "سلتك فارغة",
42
+ "free_shipping": "تبقى <b>{amount}</b> للحصول على توصيل مجاني",
43
+ "item_removed": "تمت إزالة {product} من سلتك",
44
+ "items": {
45
+ "count": "{count, plural, zero {لا توجد منتجات} one {منتج واحد} two {منتجان} few {# منتجات} many {# منتجاً} other {# منتج}}"
46
+ },
47
+ "points": "ستحصل على {points, plural, zero {لا نقاط} one {نقطة واحدة} two {نقطتين} few {# نقاط} many {# نقطة} other {# نقطة}} مع هذا الطلب",
48
+ "subtotal": "المجموع الفرعي: {total}"
49
+ },
50
+ "checkout": {
51
+ "shipping": {
52
+ "eta": "يصل بحلول {date}"
53
+ },
54
+ "summary": {
55
+ "title": "ملخص الطلب"
56
+ }
57
+ },
58
+ "delivery": {
59
+ "days": "{days, plural, zero {التوصيل اليوم} one {التوصيل خلال يوم واحد} two {التوصيل خلال يومين} few {التوصيل خلال # أيام} many {التوصيل خلال # يوماً} other {التوصيل خلال # يوم}}",
60
+ "slot": "التوصيل بين {start} و{end}"
61
+ },
62
+ "footer": {
63
+ "copyright": "© {year} Lumio Retail Ltd."
64
+ },
65
+ "form": {
66
+ "birth_date": {
67
+ "invalid": "تاريخ الميلاد غير صالح",
68
+ "label": "تاريخ الميلاد",
69
+ "placeholder": "أدخل تاريخ الميلاد",
70
+ "required": "تاريخ الميلاد مطلوب"
71
+ },
72
+ "card_number": {
73
+ "invalid": "رقم البطاقة غير صالح",
74
+ "label": "رقم البطاقة",
75
+ "placeholder": "أدخل رقم البطاقة",
76
+ "required": "رقم البطاقة مطلوب"
77
+ },
78
+ "city": {
79
+ "invalid": "المدينة غير صالح",
80
+ "label": "المدينة",
81
+ "placeholder": "أدخل المدينة",
82
+ "required": "المدينة مطلوب"
83
+ },
84
+ "company": {
85
+ "invalid": "الشركة غير صالح",
86
+ "label": "الشركة",
87
+ "placeholder": "أدخل الشركة",
88
+ "required": "الشركة مطلوب"
89
+ },
90
+ "country": {
91
+ "invalid": "الدولة غير صالح",
92
+ "label": "الدولة",
93
+ "placeholder": "أدخل الدولة",
94
+ "required": "الدولة مطلوب"
95
+ },
96
+ "coupon": {
97
+ "invalid": "رمز القسيمة غير صالح",
98
+ "label": "رمز القسيمة",
99
+ "placeholder": "أدخل رمز القسيمة",
100
+ "required": "رمز القسيمة مطلوب"
101
+ },
102
+ "cvc": {
103
+ "invalid": "رمز الأمان غير صالح",
104
+ "label": "رمز الأمان",
105
+ "placeholder": "أدخل رمز الأمان",
106
+ "required": "رمز الأمان مطلوب"
107
+ },
108
+ "delivery_notes": {
109
+ "invalid": "ملاحظات التوصيل غير صالح",
110
+ "label": "ملاحظات التوصيل",
111
+ "placeholder": "أدخل ملاحظات التوصيل",
112
+ "required": "ملاحظات التوصيل مطلوب"
113
+ },
114
+ "email": {
115
+ "invalid": "عنوان البريد الإلكتروني غير صالح",
116
+ "label": "عنوان البريد الإلكتروني",
117
+ "placeholder": "أدخل عنوان البريد الإلكتروني",
118
+ "required": "عنوان البريد الإلكتروني مطلوب"
119
+ },
120
+ "expiry": {
121
+ "invalid": "تاريخ الانتهاء غير صالح",
122
+ "label": "تاريخ الانتهاء",
123
+ "placeholder": "أدخل تاريخ الانتهاء",
124
+ "required": "تاريخ الانتهاء مطلوب"
125
+ },
126
+ "first_name": {
127
+ "invalid": "الاسم الأول غير صالح",
128
+ "label": "الاسم الأول",
129
+ "placeholder": "أدخل الاسم الأول",
130
+ "required": "الاسم الأول مطلوب"
131
+ },
132
+ "gift_message": {
133
+ "invalid": "رسالة الهدية غير صالح",
134
+ "label": "رسالة الهدية",
135
+ "placeholder": "أدخل رسالة الهدية",
136
+ "required": "رسالة الهدية مطلوب"
137
+ },
138
+ "last_name": {
139
+ "invalid": "اسم العائلة غير صالح",
140
+ "label": "اسم العائلة",
141
+ "placeholder": "أدخل اسم العائلة",
142
+ "required": "اسم العائلة مطلوب"
143
+ },
144
+ "order_ref": {
145
+ "invalid": "رقم الطلب غير صالح",
146
+ "label": "رقم الطلب",
147
+ "placeholder": "أدخل رقم الطلب",
148
+ "required": "رقم الطلب مطلوب"
149
+ },
150
+ "password": {
151
+ "invalid": "كلمة المرور غير صالح",
152
+ "label": "كلمة المرور",
153
+ "placeholder": "أدخل كلمة المرور",
154
+ "required": "كلمة المرور مطلوب"
155
+ },
156
+ "phone": {
157
+ "invalid": "رقم الهاتف غير صالح",
158
+ "label": "رقم الهاتف",
159
+ "placeholder": "أدخل رقم الهاتف",
160
+ "required": "رقم الهاتف مطلوب"
161
+ },
162
+ "postcode": {
163
+ "invalid": "الرمز البريدي غير صالح",
164
+ "label": "الرمز البريدي",
165
+ "placeholder": "أدخل الرمز البريدي",
166
+ "required": "الرمز البريدي مطلوب"
167
+ },
168
+ "street": {
169
+ "invalid": "عنوان الشارع غير صالح",
170
+ "label": "عنوان الشارع",
171
+ "placeholder": "أدخل عنوان الشارع",
172
+ "required": "عنوان الشارع مطلوب"
173
+ },
174
+ "username": {
175
+ "invalid": "اسم المستخدم غير صالح",
176
+ "label": "اسم المستخدم",
177
+ "placeholder": "أدخل اسم المستخدم",
178
+ "required": "اسم المستخدم مطلوب"
179
+ },
180
+ "vat": {
181
+ "invalid": "الرقم الضريبي غير صالح",
182
+ "label": "الرقم الضريبي",
183
+ "placeholder": "أدخل الرقم الضريبي",
184
+ "required": "الرقم الضريبي مطلوب"
185
+ }
186
+ },
187
+ "giftcard": {
188
+ "received": "أرسل إليك {sender} بطاقة هدية بقيمة {amount}"
189
+ },
190
+ "legal": {
191
+ "terms": "بإتمام طلبك، فإنك توافق على <link>شروط البيع</link>."
192
+ },
193
+ "nav": {
194
+ "about": "من نحن",
195
+ "account": "الحساب",
196
+ "addresses": "العناوين",
197
+ "deals": "العروض",
198
+ "gift_cards": "بطاقات الهدايا",
199
+ "help": "المساعدة",
200
+ "home": "الرئيسية",
201
+ "new_in": "وصل حديثاً",
202
+ "notifications": "الإشعارات",
203
+ "orders": "الطلبات",
204
+ "payment_methods": "طرق الدفع",
205
+ "returns": "المرتجعات",
206
+ "settings": "الإعدادات",
207
+ "shop": "المتجر",
208
+ "wishlist": "قائمة الأمنيات"
209
+ },
210
+ "notifications": {
211
+ "unread": "{count, plural, one {إشعار واحد غير مقروء} other {# إشعارات غير مقروءة}}"
212
+ },
213
+ "order": {
214
+ "confirmation": "شكراً يا {name}! تم تأكيد طلبك {orderId}.",
215
+ "placed_on": "تم الطلب في {date}",
216
+ "status": {
217
+ "cancelled": "أُلغي",
218
+ "delivered": "تم التوصيل",
219
+ "failed": "فشل الدفع",
220
+ "on_hold": "معلّق",
221
+ "out_for_delivery": "خرج للتوصيل",
222
+ "pending": "قيد الانتظار",
223
+ "processing": "قيد المعالجة",
224
+ "refunded": "تم الاسترداد",
225
+ "returned": "تم الإرجاع",
226
+ "shipped": "تم الشحن"
227
+ },
228
+ "total": "إجمالي الطلب: {total}",
229
+ "tracking": "رقم التتبع: {trackingId}"
230
+ },
231
+ "orders": {
232
+ "count": "{count, plural, zero {لا توجد طلبات} one {طلب واحد} two {طلبان} few {# طلبات} many {# طلباً} other {# طلب}}"
233
+ },
234
+ "payment": {
235
+ "card_ending": "بطاقة تنتهي بـ {last4}"
236
+ },
237
+ "promo": {
238
+ "banner": "احصل على <b>خصم {percent}%</b> على طلبك الأول",
239
+ "expires": "ينتهي العرض في {date}"
240
+ },
241
+ "returns": {
242
+ "deadline": "الإرجاع قبل {date}",
243
+ "policy": "الإرجاع مجاني خلال <b>30 يوماً</b>."
244
+ },
245
+ "reviews": {
246
+ "count": "{count, plural, zero {لا توجد مراجعات} one {مراجعة واحدة} two {مراجعتان} few {# مراجعات} many {# مراجعة} other {# مراجعة}}",
247
+ "rating": "التقييم {rating} من 5"
248
+ },
249
+ "search": {
250
+ "placeholder": "ابحث عن المنتجات",
251
+ "results_for": "نتائج البحث عن «{query}»"
252
+ },
253
+ "security": {
254
+ "notice": "<b>لا</b> تشارك كلمة المرور مع أي شخص."
255
+ },
256
+ "stock": {
257
+ "left": "{count, plural, zero {نفدت الكمية} one {بقيت قطعة واحدة فقط} two {بقيت قطعتان فقط} few {بقيت # قطع فقط} many {بقيت # قطعة فقط} other {بقيت # قطعة فقط}}"
258
+ },
259
+ "support": {
260
+ "hours": "الدعم متاح من {openTime} إلى {closeTime}"
261
+ },
262
+ "wishlist": {
263
+ "count": "{count, plural, =0 {قائمة أمنياتك فارغة} zero {لا توجد عناصر} one {عنصر محفوظ واحد} two {عنصران محفوظان} few {# عناصر محفوظة} many {# عنصراً محفوظاً} other {# عنصر محفوظ}}"
264
+ }
265
+ }