Просмотр исходного кода

fix(console): zen workspace translation cleanup

Adam 2 месяцев назад
Родитель
Сommit
6490fb0148

+ 32 - 32
packages/console/app/src/i18n/ar.ts

@@ -351,8 +351,8 @@ export const dict = {
   "changelog.empty":
     "\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0623\u064a \u0625\u062f\u062e\u0627\u0644\u0627\u062a \u0641\u064a \u0633\u062c\u0644 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a.",
   "changelog.viewJson": "\u0639\u0631\u0636 JSON",
-  "workspace.nav.zen": "زين",
-  "workspace.nav.apiKeys": "API المفاتيح",
+  "workspace.nav.zen": "Zen",
+  "workspace.nav.apiKeys": "مفاتيح API",
   "workspace.nav.members": "أعضاء",
   "workspace.nav.billing": "الفواتير",
   "workspace.nav.settings": "إعدادات",
@@ -365,14 +365,14 @@ export const dict = {
   "workspace.newUser.feature.quality.title": "أعلى جودة",
   "workspace.newUser.feature.quality.body":
     "الوصول إلى النماذج التي تم تكوينها لتحقيق الأداء الأمثل - لا يوجد تخفيضات أو توجيه إلى موفري الخدمة الأرخص.",
-  "workspace.newUser.feature.lockin.title": "لا يوجد قفل",
+  "workspace.newUser.feature.lockin.title": "بدون احتجاز بمزوّد واحد",
   "workspace.newUser.feature.lockin.body":
     "استخدم Zen مع أي وكيل ترميز، واستمر في استخدام موفري الخدمات الآخرين مع opencode وقتما تشاء.",
   "workspace.newUser.copyApiKey": "انسخ مفتاح API",
   "workspace.newUser.copyKey": "نسخ المفتاح",
   "workspace.newUser.copied": "منسوخ!",
   "workspace.newUser.step.enableBilling": "تمكين الفوترة",
-  "workspace.newUser.step.login.before": "يجري",
+  "workspace.newUser.step.login.before": "شغّل",
   "workspace.newUser.step.login.after": "وحدد opencode",
   "workspace.newUser.step.pasteKey": "الصق مفتاح API الخاص بك",
   "workspace.newUser.step.models.before": "ابدأ opencode ثم قم بالتشغيل",
@@ -390,7 +390,7 @@ export const dict = {
   "workspace.providers.saving": "توفير...",
   "workspace.providers.save": "يحفظ",
   "workspace.providers.table.provider": "مزود",
-  "workspace.providers.table.apiKey": "API المفتاح",
+  "workspace.providers.table.apiKey": "مفتاح API",
   "workspace.usage.title": "تاريخ الاستخدام",
   "workspace.usage.subtitle": "استخدام وتكاليف API الأخيرة.",
   "workspace.usage.empty": "قم بإجراء أول مكالمة API للبدء.",
@@ -398,25 +398,25 @@ export const dict = {
   "workspace.usage.table.model": "نموذج",
   "workspace.usage.table.input": "مدخل",
   "workspace.usage.table.output": "الإخراج",
-  "workspace.usage.table.cost": "يكلف",
+  "workspace.usage.table.cost": "التكلفة",
   "workspace.usage.breakdown.input": "مدخل",
   "workspace.usage.breakdown.cacheRead": "قراءة ذاكرة التخزين المؤقت",
   "workspace.usage.breakdown.cacheWrite": "كتابة ذاكرة التخزين المؤقت",
   "workspace.usage.breakdown.output": "الإخراج",
   "workspace.usage.breakdown.reasoning": "المنطق",
   "workspace.usage.subscription": "الاشتراك (${{amount}})",
-  "workspace.cost.title": "يكلف",
+  "workspace.cost.title": "التكلفة",
   "workspace.cost.subtitle": "تكاليف الاستخدام مقسمة حسب النموذج.",
-  "workspace.cost.allModels": "جميع الموديلات",
+  "workspace.cost.allModels": "جميع النماذج",
   "workspace.cost.allKeys": "جميع المفاتيح",
   "workspace.cost.deletedSuffix": "(محذوف)",
   "workspace.cost.empty": "لا توجد بيانات استخدام متاحة للفترة المحددة.",
-  "workspace.cost.subscriptionShort": "الفرعية",
-  "workspace.keys.title": "API المفاتيح",
+  "workspace.cost.subscriptionShort": "اشتراك",
+  "workspace.keys.title": "مفاتيح API",
   "workspace.keys.subtitle": "إدارة مفاتيح API الخاصة بك للوصول إلى خدمات opencode.",
   "workspace.keys.create": "قم بإنشاء مفتاح API",
   "workspace.keys.placeholder": "أدخل اسم المفتاح",
-  "workspace.keys.empty": "قم بإنشاء مفتاح opencode للبوابة API",
+  "workspace.keys.empty": "أنشئ مفتاح API لبوابة opencode",
   "workspace.keys.table.name": "اسم",
   "workspace.keys.table.key": "مفتاح",
   "workspace.keys.table.createdBy": "تم الإنشاء بواسطة",
@@ -442,14 +442,14 @@ export const dict = {
   "workspace.members.table.email": "بريد إلكتروني",
   "workspace.members.table.role": "دور",
   "workspace.members.table.monthLimit": "حد الشهر",
-  "workspace.members.role.admin": "مسؤل",
+  "workspace.members.role.admin": "مسؤول",
   "workspace.members.role.adminDescription": "يمكن إدارة النماذج، والأعضاء، والفواتير",
   "workspace.members.role.member": "عضو",
   "workspace.members.role.memberDescription": "يمكنهم فقط إنشاء مفاتيح API لأنفسهم",
   "workspace.settings.title": "إعدادات",
   "workspace.settings.subtitle": "قم بتحديث اسم مساحة العمل الخاصة بك وتفضيلاتك.",
   "workspace.settings.workspaceName": "اسم مساحة العمل",
-  "workspace.settings.defaultName": "تقصير",
+  "workspace.settings.defaultName": "الافتراضي",
   "workspace.settings.updating": "جارٍ التحديث...",
   "workspace.settings.save": "يحفظ",
   "workspace.settings.edit": "يحرر",
@@ -461,37 +461,37 @@ export const dict = {
   "workspace.billing.add": "أضف $",
   "workspace.billing.enterAmount": "أدخل المبلغ",
   "workspace.billing.loading": "تحميل...",
-  "workspace.billing.addAction": "يضيف",
+  "workspace.billing.addAction": "إضافة",
   "workspace.billing.addBalance": "إضافة الرصيد",
-  "workspace.billing.linkedToStripe": "مرتبطة بالشريط",
-  "workspace.billing.manage": "يدير",
+  "workspace.billing.linkedToStripe": "مرتبط بـ Stripe",
+  "workspace.billing.manage": "إدارة",
   "workspace.billing.enable": "تمكين الفوترة",
   "workspace.monthlyLimit.title": "الحد الشهري",
   "workspace.monthlyLimit.subtitle": "قم بتعيين حد الاستخدام الشهري لحسابك.",
   "workspace.monthlyLimit.placeholder": "50",
-  "workspace.monthlyLimit.setting": "جلسة...",
+  "workspace.monthlyLimit.setting": "جارٍ التعيين...",
   "workspace.monthlyLimit.set": "تعيين",
   "workspace.monthlyLimit.edit": "تحرير الحد",
   "workspace.monthlyLimit.noLimit": "لم يتم تعيين حد الاستخدام.",
   "workspace.monthlyLimit.currentUsage.beforeMonth": "الاستخدام الحالي ل",
   "workspace.monthlyLimit.currentUsage.beforeAmount": "هو $",
-  "workspace.reload.title": "إعادة التحميل التلقائي",
-  "workspace.reload.disabled.before": "إعادة التحميل التلقائي هو",
-  "workspace.reload.disabled.state": "عاجز",
-  "workspace.reload.disabled.after": "تمكين إعادة التحميل تلقائيًا عندما يكون الرصيد منخفضًا.",
-  "workspace.reload.enabled.before": "إعادة التحميل التلقائي هو",
+  "workspace.reload.title": "إعادة الشحن التلقائي",
+  "workspace.reload.disabled.before": "إعادة الشحن التلقائي",
+  "workspace.reload.disabled.state": "معطّل",
+  "workspace.reload.disabled.after": "فعّلها لإعادة شحن الرصيد تلقائيًا عندما يكون منخفضًا.",
+  "workspace.reload.enabled.before": "إعادة الشحن التلقائي",
   "workspace.reload.enabled.state": "ممكّن",
-  "workspace.reload.enabled.middle": "سنقوم بإعادة التحميل",
+  "workspace.reload.enabled.middle": "سنعيد شحن رصيدك بمبلغ",
   "workspace.reload.processingFee": "رسوم المعالجة",
-  "workspace.reload.enabled.after": "عندما يصل التوازن",
+  "workspace.reload.enabled.after": "عندما يصل الرصيد إلى",
   "workspace.reload.edit": "يحرر",
-  "workspace.reload.enable": "يُمكَِن",
-  "workspace.reload.enableAutoReload": "تمكين إعادة التحميل التلقائي",
-  "workspace.reload.reloadAmount": "إعادة تحميل $",
+  "workspace.reload.enable": "تفعيل",
+  "workspace.reload.enableAutoReload": "تفعيل إعادة الشحن التلقائي",
+  "workspace.reload.reloadAmount": "مبلغ إعادة الشحن $",
   "workspace.reload.whenBalanceReaches": "عندما يصل الرصيد إلى $",
   "workspace.reload.saving": "توفير...",
   "workspace.reload.save": "يحفظ",
-  "workspace.reload.failedAt": "فشلت عملية إعادة التحميل عند",
+  "workspace.reload.failedAt": "فشلت إعادة الشحن في",
   "workspace.reload.reason": "سبب:",
   "workspace.reload.updatePaymentMethod": "يرجى تحديث طريقة الدفع الخاصة بك والمحاولة مرة أخرى.",
   "workspace.reload.retrying": "جارٍ إعادة المحاولة...",
@@ -500,11 +500,11 @@ export const dict = {
   "workspace.payments.subtitle": "معاملات الدفع الأخيرة.",
   "workspace.payments.table.date": "تاريخ",
   "workspace.payments.table.paymentId": "معرف الدفع",
-  "workspace.payments.table.amount": "كمية",
+  "workspace.payments.table.amount": "المبلغ",
   "workspace.payments.table.receipt": "إيصال",
   "workspace.payments.type.credit": "ائتمان",
   "workspace.payments.type.subscription": "الاشتراك",
-  "workspace.payments.view": "منظر",
+  "workspace.payments.view": "عرض",
   "workspace.black.loading": "تحميل...",
   "workspace.black.time.day": "يوم",
   "workspace.black.time.days": "أيام",
@@ -521,8 +521,8 @@ export const dict = {
   "workspace.black.subscription.resetsIn": "إعادة تعيين في",
   "workspace.black.subscription.useBalance": "استخدم رصيدك المتوفر بعد الوصول إلى حدود الاستخدام",
   "workspace.black.waitlist.title": "قائمة الانتظار",
-  "workspace.black.waitlist.joined": "أنت على قائمة الانتظار للخطة السوداء {{plan}} دولار شهريًا OpenCode.",
-  "workspace.black.waitlist.ready": "نحن على استعداد لتسجيلك في خطة Black {{plan}} الشهرية OpenCode.",
+  "workspace.black.waitlist.joined": "أنت على قائمة الانتظار لخطة OpenCode Black بقيمة ${{plan}} شهريًا.",
+  "workspace.black.waitlist.ready": "نحن مستعدون لتسجيلك في خطة OpenCode Black بقيمة ${{plan}} شهريًا.",
   "workspace.black.waitlist.leave": "ترك قائمة الانتظار",
   "workspace.black.waitlist.leaving": "مغادرة...",
   "workspace.black.waitlist.left": "غادر",

+ 33 - 33
packages/console/app/src/i18n/da.ts

@@ -294,18 +294,18 @@ export const dict = {
   "workspace.home.billing.currentBalance": "Nuværende saldo",
   "workspace.newUser.feature.tested.title": "Testede og verificerede modeller",
   "workspace.newUser.feature.tested.body":
-    "Vi har benchmarket og testet modeller specifikt til kodningsmidler for at sikre den bedste ydeevne.",
+    "Vi har benchmarket og testet modeller specifikt til kodningsagenter for at sikre den bedste ydeevne.",
   "workspace.newUser.feature.quality.title": "Højeste kvalitet",
   "workspace.newUser.feature.quality.body":
     "Få adgang til modeller konfigureret til optimal ydeevne - ingen nedgraderinger eller routing til billigere udbydere.",
   "workspace.newUser.feature.lockin.title": "Ingen indlåsning",
   "workspace.newUser.feature.lockin.body":
     "Brug Zen med en hvilken som helst kodningsagent, og fortsæt med at bruge andre udbydere med opencode, når du vil.",
-  "workspace.newUser.copyApiKey": "Kopiér nøglen API",
+  "workspace.newUser.copyApiKey": "Kopiér API-nøgle",
   "workspace.newUser.copyKey": "Kopier nøgle",
   "workspace.newUser.copied": "Kopieret!",
   "workspace.newUser.step.enableBilling": "Aktiver fakturering",
-  "workspace.newUser.step.login.before": "Løbe",
+  "workspace.newUser.step.login.before": "Kør",
   "workspace.newUser.step.login.after": "og vælg opencode",
   "workspace.newUser.step.pasteKey": "Indsæt din API nøgle",
   "workspace.newUser.step.models.before": "Start opencode og kør",
@@ -316,12 +316,12 @@ export const dict = {
   "workspace.models.table.enabled": "Aktiveret",
   "workspace.providers.title": "Medbring din egen nøgle",
   "workspace.providers.subtitle": "Konfigurer dine egne API nøgler fra AI-udbydere.",
-  "workspace.providers.placeholder": "Indtast nøglen {{provider}} API ({{prefix}}...)",
+  "workspace.providers.placeholder": "Indtast {{provider}} API-nøgle ({{prefix}}...)",
   "workspace.providers.configure": "Konfigurer",
-  "workspace.providers.edit": "Redigere",
+  "workspace.providers.edit": "Rediger",
   "workspace.providers.delete": "Slet",
   "workspace.providers.saving": "Gemmer...",
-  "workspace.providers.save": "Spare",
+  "workspace.providers.save": "Gem",
   "workspace.providers.table.provider": "Udbyder",
   "workspace.providers.table.apiKey": "API Nøgle",
   "workspace.usage.title": "Brugshistorik",
@@ -330,15 +330,15 @@ export const dict = {
   "workspace.usage.table.date": "Dato",
   "workspace.usage.table.model": "Model",
   "workspace.usage.table.input": "Input",
-  "workspace.usage.table.output": "Produktion",
-  "workspace.usage.table.cost": "Koste",
+  "workspace.usage.table.output": "Output",
+  "workspace.usage.table.cost": "Omkostning",
   "workspace.usage.breakdown.input": "Input",
   "workspace.usage.breakdown.cacheRead": "Cache læst",
   "workspace.usage.breakdown.cacheWrite": "Cache skriv",
-  "workspace.usage.breakdown.output": "Produktion",
+  "workspace.usage.breakdown.output": "Output",
   "workspace.usage.breakdown.reasoning": "Ræsonnement",
   "workspace.usage.subscription": "abonnement (${{amount}})",
-  "workspace.cost.title": "Koste",
+  "workspace.cost.title": "Omkostninger",
   "workspace.cost.subtitle": "Brugsomkostninger opdelt efter model.",
   "workspace.cost.allModels": "Alle modeller",
   "workspace.cost.allKeys": "Alle nøgler",
@@ -354,7 +354,7 @@ export const dict = {
   "workspace.keys.table.key": "Nøgle",
   "workspace.keys.table.createdBy": "Skabt af",
   "workspace.keys.table.lastUsed": "Sidst brugt",
-  "workspace.keys.copyApiKey": "Kopiér nøglen API",
+  "workspace.keys.copyApiKey": "Kopiér API-nøgle",
   "workspace.keys.delete": "Slet",
   "workspace.members.title": "Medlemmer",
   "workspace.members.subtitle": "Administrer arbejdsområdemedlemmer og deres tilladelser.",
@@ -368,10 +368,10 @@ export const dict = {
   "workspace.members.noLimit": "Ingen grænse",
   "workspace.members.noLimitLowercase": "ingen grænse",
   "workspace.members.invited": "inviteret",
-  "workspace.members.edit": "Redigere",
+  "workspace.members.edit": "Rediger",
   "workspace.members.delete": "Slet",
   "workspace.members.saving": "Gemmer...",
-  "workspace.members.save": "Spare",
+  "workspace.members.save": "Gem",
   "workspace.members.table.email": "E-mail",
   "workspace.members.table.role": "Rolle",
   "workspace.members.table.monthLimit": "Månedsgrænse",
@@ -382,10 +382,10 @@ export const dict = {
   "workspace.settings.title": "Indstillinger",
   "workspace.settings.subtitle": "Opdater dit arbejdsområdes navn og præferencer.",
   "workspace.settings.workspaceName": "Arbejdsområdets navn",
-  "workspace.settings.defaultName": "Misligholdelse",
+  "workspace.settings.defaultName": "Standard",
   "workspace.settings.updating": "Opdaterer...",
-  "workspace.settings.save": "Spare",
-  "workspace.settings.edit": "Redigere",
+  "workspace.settings.save": "Gem",
+  "workspace.settings.edit": "Rediger",
   "workspace.billing.title": "Fakturering",
   "workspace.billing.subtitle.beforeLink": "Administrer betalingsmetoder.",
   "workspace.billing.contactUs": "Kontakt os",
@@ -394,10 +394,10 @@ export const dict = {
   "workspace.billing.add": "Tilføj $",
   "workspace.billing.enterAmount": "Indtast beløb",
   "workspace.billing.loading": "Indlæser...",
-  "workspace.billing.addAction": "Tilføje",
+  "workspace.billing.addAction": "Tilføj",
   "workspace.billing.addBalance": "Tilføj balance",
   "workspace.billing.linkedToStripe": "Forbundet til Stripe",
-  "workspace.billing.manage": "Styre",
+  "workspace.billing.manage": "Administrer",
   "workspace.billing.enable": "Aktiver fakturering",
   "workspace.monthlyLimit.title": "Månedlig grænse",
   "workspace.monthlyLimit.subtitle": "Indstil en månedlig forbrugsgrænse for din konto.",
@@ -408,23 +408,23 @@ export const dict = {
   "workspace.monthlyLimit.noLimit": "Ingen forbrugsgrænse angivet.",
   "workspace.monthlyLimit.currentUsage.beforeMonth": "Nuværende brug for",
   "workspace.monthlyLimit.currentUsage.beforeAmount": "er $",
-  "workspace.reload.title": "Automatisk genindlæsning",
-  "workspace.reload.disabled.before": "Automatisk genindlæsning er",
-  "workspace.reload.disabled.state": "handicappet",
-  "workspace.reload.disabled.after": "Aktiver for automatisk at genindlæse, når balancen er lav.",
-  "workspace.reload.enabled.before": "Automatisk genindlæsning er",
+  "workspace.reload.title": "Automatisk genopfyldning",
+  "workspace.reload.disabled.before": "Automatisk genopfyldning er",
+  "workspace.reload.disabled.state": "deaktiveret",
+  "workspace.reload.disabled.after": "Aktiver for automatisk at genopfylde, når saldoen er lav.",
+  "workspace.reload.enabled.before": "Automatisk genopfyldning er",
   "workspace.reload.enabled.state": "aktiveret",
-  "workspace.reload.enabled.middle": "Vi genindlæser",
+  "workspace.reload.enabled.middle": "Vi genopfylder",
   "workspace.reload.processingFee": "ekspeditionsgebyr",
   "workspace.reload.enabled.after": "når balancen er nået",
-  "workspace.reload.edit": "Redigere",
+  "workspace.reload.edit": "Rediger",
   "workspace.reload.enable": "Aktiver",
-  "workspace.reload.enableAutoReload": "Aktiver automatisk genindlæsning",
-  "workspace.reload.reloadAmount": "Genindlæs $",
+  "workspace.reload.enableAutoReload": "Aktiver automatisk genopfyldning",
+  "workspace.reload.reloadAmount": "Genopfyld $",
   "workspace.reload.whenBalanceReaches": "Når saldoen når $",
   "workspace.reload.saving": "Gemmer...",
-  "workspace.reload.save": "Spare",
-  "workspace.reload.failedAt": "Genindlæsning mislykkedes kl",
+  "workspace.reload.save": "Gem",
+  "workspace.reload.failedAt": "Genopfyldning mislykkedes kl",
   "workspace.reload.reason": "Årsag:",
   "workspace.reload.updatePaymentMethod": "Opdater din betalingsmetode, og prøv igen.",
   "workspace.reload.retrying": "Prøver igen...",
@@ -434,10 +434,10 @@ export const dict = {
   "workspace.payments.table.date": "Dato",
   "workspace.payments.table.paymentId": "Betalings-id",
   "workspace.payments.table.amount": "Beløb",
-  "workspace.payments.table.receipt": "Modtagelse",
+  "workspace.payments.table.receipt": "Kvittering",
   "workspace.payments.type.credit": "kredit",
   "workspace.payments.type.subscription": "abonnement",
-  "workspace.payments.view": "Udsigt",
+  "workspace.payments.view": "Vis",
   "workspace.black.loading": "Indlæser...",
   "workspace.black.time.day": "dag",
   "workspace.black.time.days": "dage",
@@ -458,8 +458,8 @@ export const dict = {
   "workspace.black.waitlist.ready": "Vi er klar til at tilmelde dig ${{plan}} per måned OpenCode Black plan.",
   "workspace.black.waitlist.leave": "Forlad venteliste",
   "workspace.black.waitlist.leaving": "Forlader...",
-  "workspace.black.waitlist.left": "Venstre",
-  "workspace.black.waitlist.enroll": "Indskrive",
+  "workspace.black.waitlist.left": "Forladt",
+  "workspace.black.waitlist.enroll": "Tilmeld",
   "workspace.black.waitlist.enrolling": "Tilmelder...",
   "workspace.black.waitlist.enrolled": "Tilmeldt",
   "workspace.black.waitlist.enrollNote":

+ 34 - 34
packages/console/app/src/i18n/de.ts

@@ -306,27 +306,27 @@ export const dict = {
   "workspace.newUser.feature.lockin.title": "Kein Lock-in",
   "workspace.newUser.feature.lockin.body":
     "Verwenden Sie Zen mit einem beliebigen Codierungsagenten und nutzen Sie weiterhin andere Anbieter mit opencode, wann immer Sie möchten.",
-  "workspace.newUser.copyApiKey": "Kopieren Sie den Schlüssel API",
+  "workspace.newUser.copyApiKey": "API-Schlüssel kopieren",
   "workspace.newUser.copyKey": "Schlüssel kopieren",
   "workspace.newUser.copied": "Kopiert!",
   "workspace.newUser.step.enableBilling": "Abrechnung aktivieren",
-  "workspace.newUser.step.login.before": "Laufen",
+  "workspace.newUser.step.login.before": "Führe",
   "workspace.newUser.step.login.after": "und wählen Sie opencode",
   "workspace.newUser.step.pasteKey": "Fügen Sie Ihren API-Schlüssel ein",
-  "workspace.newUser.step.models.before": "Starten Sie opencode und führen Sie es aus",
+  "workspace.newUser.step.models.before": "Starte opencode und führe",
   "workspace.newUser.step.models.after": "um ein Modell auszuwählen",
   "workspace.models.title": "Modelle",
   "workspace.models.subtitle.beforeLink":
     "Verwalten Sie, auf welche Modelle Arbeitsbereichsmitglieder zugreifen können.",
   "workspace.models.table.model": "Modell",
-  "workspace.models.table.enabled": "Ermöglicht",
+  "workspace.models.table.enabled": "Aktiviert",
   "workspace.providers.title": "Bringen Sie Ihren eigenen Schlüssel mit",
   "workspace.providers.subtitle": "Konfigurieren Sie Ihre eigenen API-Schlüssel von KI-Anbietern.",
   "workspace.providers.placeholder": "Geben Sie den Schlüssel {{provider}} API ein ({{prefix}}...)",
   "workspace.providers.configure": "Konfigurieren",
   "workspace.providers.edit": "Bearbeiten",
   "workspace.providers.delete": "Löschen",
-  "workspace.providers.saving": "Sparen...",
+  "workspace.providers.saving": "Wird gespeichert...",
   "workspace.providers.save": "Speichern",
   "workspace.providers.table.provider": "Anbieter",
   "workspace.providers.table.apiKey": "API-Schlüssel",
@@ -335,14 +335,14 @@ export const dict = {
   "workspace.usage.empty": "Machen Sie Ihren ersten API-Aufruf, um loszulegen.",
   "workspace.usage.table.date": "Datum",
   "workspace.usage.table.model": "Modell",
-  "workspace.usage.table.input": "Eingang",
-  "workspace.usage.table.output": "Ausgabe",
+  "workspace.usage.table.input": "Input",
+  "workspace.usage.table.output": "Output",
   "workspace.usage.table.cost": "Kosten",
-  "workspace.usage.breakdown.input": "Eingang",
+  "workspace.usage.breakdown.input": "Input",
   "workspace.usage.breakdown.cacheRead": "Cache-Lesen",
   "workspace.usage.breakdown.cacheWrite": "Cache-Schreiben",
-  "workspace.usage.breakdown.output": "Ausgabe",
-  "workspace.usage.breakdown.reasoning": "Argumentation",
+  "workspace.usage.breakdown.output": "Output",
+  "workspace.usage.breakdown.reasoning": "Reasoning",
   "workspace.usage.subscription": "Abonnement (${{amount}})",
   "workspace.cost.title": "Kosten",
   "workspace.cost.subtitle": "Nutzungskosten aufgeschlüsselt nach Modell.",
@@ -360,12 +360,12 @@ export const dict = {
   "workspace.keys.table.key": "Schlüssel",
   "workspace.keys.table.createdBy": "Erstellt von",
   "workspace.keys.table.lastUsed": "Zuletzt verwendet",
-  "workspace.keys.copyApiKey": "Kopieren Sie den Schlüssel API",
+  "workspace.keys.copyApiKey": "API-Schlüssel kopieren",
   "workspace.keys.delete": "Löschen",
   "workspace.members.title": "Mitglieder",
   "workspace.members.subtitle": "Verwalten Sie Arbeitsbereichsmitglieder und ihre Berechtigungen.",
   "workspace.members.invite": "Mitglied einladen",
-  "workspace.members.inviting": "Einladend...",
+  "workspace.members.inviting": "Wird eingeladen...",
   "workspace.members.beta.beforeLink": "Während der Betaversion sind Arbeitsbereiche für Teams kostenlos.",
   "workspace.members.form.invitee": "Eingeladen",
   "workspace.members.form.emailPlaceholder": "Geben Sie Ihre E-Mail-Adresse ein",
@@ -376,7 +376,7 @@ export const dict = {
   "workspace.members.invited": "eingeladen",
   "workspace.members.edit": "Bearbeiten",
   "workspace.members.delete": "Löschen",
-  "workspace.members.saving": "Sparen...",
+  "workspace.members.saving": "Wird gespeichert...",
   "workspace.members.save": "Speichern",
   "workspace.members.table.email": "E-Mail",
   "workspace.members.table.role": "Rolle",
@@ -408,30 +408,30 @@ export const dict = {
   "workspace.monthlyLimit.title": "Monatliches Limit",
   "workspace.monthlyLimit.subtitle": "Legen Sie ein monatliches Nutzungslimit für Ihr Konto fest.",
   "workspace.monthlyLimit.placeholder": "50",
-  "workspace.monthlyLimit.setting": "Einstellung...",
-  "workspace.monthlyLimit.set": "Satz",
+  "workspace.monthlyLimit.setting": "Wird gesetzt...",
+  "workspace.monthlyLimit.set": "Festlegen",
   "workspace.monthlyLimit.edit": "Limit bearbeiten",
   "workspace.monthlyLimit.noLimit": "Kein Nutzungslimit festgelegt.",
   "workspace.monthlyLimit.currentUsage.beforeMonth": "Aktuelle Nutzung für",
   "workspace.monthlyLimit.currentUsage.beforeAmount": "ist $",
-  "workspace.reload.title": "Automatisches Neuladen",
-  "workspace.reload.disabled.before": "Automatisches Nachladen ist",
+  "workspace.reload.title": "Automatische Aufladung",
+  "workspace.reload.disabled.before": "Automatische Aufladung ist",
   "workspace.reload.disabled.state": "deaktiviert",
   "workspace.reload.disabled.after":
-    "Aktivieren Sie diese Option, um das Guthaben automatisch neu zu laden, wenn das Guthaben niedrig ist.",
-  "workspace.reload.enabled.before": "Automatisches Nachladen ist",
-  "workspace.reload.enabled.state": "ermöglicht",
-  "workspace.reload.enabled.middle": "Wir laden nach",
+    "Aktivieren Sie diese Option, damit bei niedrigem Kontostand automatisch aufgeladen wird.",
+  "workspace.reload.enabled.before": "Automatische Aufladung ist",
+  "workspace.reload.enabled.state": "aktiviert",
+  "workspace.reload.enabled.middle": "Wir laden auf",
   "workspace.reload.processingFee": "Bearbeitungsgebühr",
-  "workspace.reload.enabled.after": "wenn das Gleichgewicht erreicht ist",
+  "workspace.reload.enabled.after": "sobald der Kontostand",
   "workspace.reload.edit": "Bearbeiten",
   "workspace.reload.enable": "Aktivieren",
-  "workspace.reload.enableAutoReload": "Aktivieren Sie das automatische Neuladen",
-  "workspace.reload.reloadAmount": "$ neu laden",
-  "workspace.reload.whenBalanceReaches": "Wenn der Saldo $ erreicht",
-  "workspace.reload.saving": "Sparen...",
+  "workspace.reload.enableAutoReload": "Automatische Aufladung aktivieren",
+  "workspace.reload.reloadAmount": "Aufladebetrag $",
+  "workspace.reload.whenBalanceReaches": "Wenn der Kontostand $ erreicht",
+  "workspace.reload.saving": "Wird gespeichert...",
   "workspace.reload.save": "Speichern",
-  "workspace.reload.failedAt": "Neuladen fehlgeschlagen bei",
+  "workspace.reload.failedAt": "Aufladung fehlgeschlagen am",
   "workspace.reload.reason": "Grund:",
   "workspace.reload.updatePaymentMethod": "Bitte aktualisieren Sie Ihre Zahlungsmethode und versuchen Sie es erneut.",
   "workspace.reload.retrying": "Erneuter Versuch...",
@@ -440,11 +440,11 @@ export const dict = {
   "workspace.payments.subtitle": "Letzte Zahlungsvorgänge.",
   "workspace.payments.table.date": "Datum",
   "workspace.payments.table.paymentId": "Zahlungs-ID",
-  "workspace.payments.table.amount": "Menge",
+  "workspace.payments.table.amount": "Betrag",
   "workspace.payments.table.receipt": "Quittung",
   "workspace.payments.type.credit": "Kredit",
   "workspace.payments.type.subscription": "Abonnement",
-  "workspace.payments.view": "Sicht",
+  "workspace.payments.view": "Anzeigen",
   "workspace.black.loading": "Laden...",
   "workspace.black.time.day": "Tag",
   "workspace.black.time.days": "Tage",
@@ -454,21 +454,21 @@ export const dict = {
   "workspace.black.time.minutes": "Minuten",
   "workspace.black.time.fewSeconds": "ein paar Sekunden",
   "workspace.black.subscription.title": "Abonnement",
-  "workspace.black.subscription.message": "Sie haben OpenCode Black für {{plan}} pro Monat abonniert.",
+  "workspace.black.subscription.message": "Sie haben OpenCode Black für ${{plan}} pro Monat abonniert.",
   "workspace.black.subscription.manage": "Abonnement verwalten",
   "workspace.black.subscription.rollingUsage": "5-stündige Nutzung",
   "workspace.black.subscription.weeklyUsage": "Wöchentliche Nutzung",
-  "workspace.black.subscription.resetsIn": "Wird zurückgesetzt",
+  "workspace.black.subscription.resetsIn": "Zurückgesetzt in",
   "workspace.black.subscription.useBalance":
     "Nutzen Sie Ihr verfügbares Guthaben, nachdem Sie die Nutzungslimits erreicht haben",
   "workspace.black.waitlist.title": "Warteliste",
   "workspace.black.waitlist.joined":
-    "Sie stehen auf der Warteliste für den Black-Plan im Wert von ${{plan}} pro Monat OpenCode.",
+    "Sie stehen auf der Warteliste für den OpenCode Black Tarif für ${{plan}} pro Monat.",
   "workspace.black.waitlist.ready":
-    "Wir sind bereit, Sie für den Black-Plan im Wert von ${{plan}} pro Monat OpenCode anzumelden.",
+    "Wir können Sie jetzt in den OpenCode Black Tarif für ${{plan}} pro Monat aufnehmen.",
   "workspace.black.waitlist.leave": "Warteliste verlassen",
   "workspace.black.waitlist.leaving": "Verlassen...",
-  "workspace.black.waitlist.left": "Links",
+  "workspace.black.waitlist.left": "Verlassen",
   "workspace.black.waitlist.enroll": "Einschreiben",
   "workspace.black.waitlist.enrolling": "Anmeldung...",
   "workspace.black.waitlist.enrolled": "Eingeschrieben",

+ 25 - 25
packages/console/app/src/i18n/it.ts

@@ -284,8 +284,8 @@ export const dict = {
   "changelog.hero.subtitle": "Nuovi aggiornamenti e miglioramenti per OpenCode",
   "changelog.empty": "Nessuna voce di changelog trovata.",
   "changelog.viewJson": "Visualizza JSON",
-  "workspace.nav.zen": "zen",
-  "workspace.nav.apiKeys": "API Chiavi",
+  "workspace.nav.zen": "Zen",
+  "workspace.nav.apiKeys": "Chiavi API",
   "workspace.nav.members": "Membri",
   "workspace.nav.billing": "Fatturazione",
   "workspace.nav.settings": "Impostazioni",
@@ -299,14 +299,14 @@ export const dict = {
   "workspace.newUser.feature.quality.title": "Massima qualità",
   "workspace.newUser.feature.quality.body":
     "Modelli di accesso configurati per prestazioni ottimali: senza downgrade o instradamento verso fornitori più economici.",
-  "workspace.newUser.feature.lockin.title": "Nessun blocco",
+  "workspace.newUser.feature.lockin.title": "Nessun lock-in",
   "workspace.newUser.feature.lockin.body":
     "Utilizza Zen con qualsiasi agente di codifica e continua a utilizzare altri provider con opencode ogni volta che vuoi.",
   "workspace.newUser.copyApiKey": "Copia la chiave API",
   "workspace.newUser.copyKey": "Copia chiave",
   "workspace.newUser.copied": "Copiato!",
   "workspace.newUser.step.enableBilling": "Abilita fatturazione",
-  "workspace.newUser.step.login.before": "Correre",
+  "workspace.newUser.step.login.before": "Esegui",
   "workspace.newUser.step.login.after": "e seleziona opencode",
   "workspace.newUser.step.pasteKey": "Incolla la tua chiave API",
   "workspace.newUser.step.models.before": "Avvia opencode ed esegui",
@@ -315,16 +315,16 @@ export const dict = {
   "workspace.models.subtitle.beforeLink": "Gestire i modelli a cui possono accedere i membri dell'area di lavoro.",
   "workspace.models.table.model": "Modello",
   "workspace.models.table.enabled": "Abilitato",
-  "workspace.providers.title": "Porta la tua chiave",
+  "workspace.providers.title": "Bring Your Own Key (BYOK)",
   "workspace.providers.subtitle": "Configura le tue chiavi API dai fornitori di intelligenza artificiale.",
   "workspace.providers.placeholder": "Inserisci la chiave {{provider}} API ({{prefix}}...)",
   "workspace.providers.configure": "Configura",
   "workspace.providers.edit": "Modificare",
   "workspace.providers.delete": "Eliminare",
-  "workspace.providers.saving": "Risparmio...",
+  "workspace.providers.saving": "Salvataggio in corso...",
   "workspace.providers.save": "Salva",
   "workspace.providers.table.provider": "Fornitore",
-  "workspace.providers.table.apiKey": "API Chiave",
+  "workspace.providers.table.apiKey": "Chiave API",
   "workspace.usage.title": "Cronologia dell'utilizzo",
   "workspace.usage.subtitle": "Utilizzo e costi recenti di API.",
   "workspace.usage.empty": "Effettua la tua prima chiamata API per iniziare.",
@@ -346,7 +346,7 @@ export const dict = {
   "workspace.cost.deletedSuffix": "(eliminato)",
   "workspace.cost.empty": "Nessun dato di utilizzo disponibile per il periodo selezionato.",
   "workspace.cost.subscriptionShort": "sub",
-  "workspace.keys.title": "API Chiavi",
+  "workspace.keys.title": "Chiavi API",
   "workspace.keys.subtitle": "Gestisci le tue chiavi API per accedere ai servizi opencode.",
   "workspace.keys.create": "Crea chiave API",
   "workspace.keys.placeholder": "Inserisci il nome della chiave",
@@ -360,7 +360,7 @@ export const dict = {
   "workspace.members.title": "Membri",
   "workspace.members.subtitle": "Gestire i membri dell'area di lavoro e le relative autorizzazioni.",
   "workspace.members.invite": "Invita membro",
-  "workspace.members.inviting": "Invitante...",
+  "workspace.members.inviting": "Invito in corso...",
   "workspace.members.beta.beforeLink": "Gli spazi di lavoro sono gratuiti per i team durante la beta.",
   "workspace.members.form.invitee": "Invitato",
   "workspace.members.form.emailPlaceholder": "Inserisci l'e-mail",
@@ -371,12 +371,12 @@ export const dict = {
   "workspace.members.invited": "invitato",
   "workspace.members.edit": "Modificare",
   "workspace.members.delete": "Eliminare",
-  "workspace.members.saving": "Risparmio...",
+  "workspace.members.saving": "Salvataggio in corso...",
   "workspace.members.save": "Salva",
   "workspace.members.table.email": "E-mail",
   "workspace.members.table.role": "Ruolo",
   "workspace.members.table.monthLimit": "Limite mensile",
-  "workspace.members.role.admin": "Ammin",
+  "workspace.members.role.admin": "Admin",
   "workspace.members.role.adminDescription": "Può gestire modelli, membri e fatturazione",
   "workspace.members.role.member": "Membro",
   "workspace.members.role.memberDescription": "Possono generare chiavi API solo per se stessi",
@@ -388,42 +388,42 @@ export const dict = {
   "workspace.settings.save": "Salva",
   "workspace.settings.edit": "Modificare",
   "workspace.billing.title": "Fatturazione",
-  "workspace.billing.subtitle.beforeLink": "Gestire i metodi di pagamento.",
+  "workspace.billing.subtitle.beforeLink": "Gestisci i metodi di pagamento.",
   "workspace.billing.contactUs": "Contattaci",
   "workspace.billing.subtitle.afterLink": "se hai qualche domanda",
   "workspace.billing.currentBalance": "Saldo attuale",
   "workspace.billing.add": "Aggiungi $",
   "workspace.billing.enterAmount": "Inserisci l'importo",
   "workspace.billing.loading": "Caricamento...",
-  "workspace.billing.addAction": "Aggiungere",
+  "workspace.billing.addAction": "Aggiungi",
   "workspace.billing.addBalance": "Aggiungi saldo",
   "workspace.billing.linkedToStripe": "Collegato a Stripe",
-  "workspace.billing.manage": "Maneggio",
+  "workspace.billing.manage": "Gestisci",
   "workspace.billing.enable": "Abilita fatturazione",
   "workspace.monthlyLimit.title": "Limite mensile",
   "workspace.monthlyLimit.subtitle": "Imposta un limite di utilizzo mensile per il tuo account.",
   "workspace.monthlyLimit.placeholder": "50",
-  "workspace.monthlyLimit.setting": "Collocamento...",
+  "workspace.monthlyLimit.setting": "Impostazione in corso...",
   "workspace.monthlyLimit.set": "Impostato",
   "workspace.monthlyLimit.edit": "Modifica limite",
   "workspace.monthlyLimit.noLimit": "Nessun limite di utilizzo impostato.",
   "workspace.monthlyLimit.currentUsage.beforeMonth": "Utilizzo attuale per",
   "workspace.monthlyLimit.currentUsage.beforeAmount": "è $",
   "workspace.reload.title": "Ricarica automatica",
-  "workspace.reload.disabled.before": "La ricarica automatica lo è",
+  "workspace.reload.disabled.before": "La ricarica automatica è",
   "workspace.reload.disabled.state": "disabilitato",
   "workspace.reload.disabled.after": "Abilita la ricarica automatica quando il saldo è basso.",
-  "workspace.reload.enabled.before": "La ricarica automatica lo è",
+  "workspace.reload.enabled.before": "La ricarica automatica è",
   "workspace.reload.enabled.state": "abilitato",
   "workspace.reload.enabled.middle": "Ricaricheremo",
   "workspace.reload.processingFee": "tassa di elaborazione",
-  "workspace.reload.enabled.after": "quando l'equilibrio raggiunge",
+  "workspace.reload.enabled.after": "quando il saldo raggiunge",
   "workspace.reload.edit": "Modificare",
   "workspace.reload.enable": "Abilitare",
   "workspace.reload.enableAutoReload": "Abilita ricarica automatica",
   "workspace.reload.reloadAmount": "Ricarica $",
   "workspace.reload.whenBalanceReaches": "Quando il saldo raggiunge $",
-  "workspace.reload.saving": "Risparmio...",
+  "workspace.reload.saving": "Salvataggio in corso...",
   "workspace.reload.save": "Salva",
   "workspace.reload.failedAt": "Ricarica non riuscita a",
   "workspace.reload.reason": "Motivo:",
@@ -434,11 +434,11 @@ export const dict = {
   "workspace.payments.subtitle": "Transazioni di pagamento recenti.",
   "workspace.payments.table.date": "Data",
   "workspace.payments.table.paymentId": "ID pagamento",
-  "workspace.payments.table.amount": "Quantità",
+  "workspace.payments.table.amount": "Importo",
   "workspace.payments.table.receipt": "Ricevuta",
   "workspace.payments.type.credit": "credito",
   "workspace.payments.type.subscription": "sottoscrizione",
-  "workspace.payments.view": "Visualizzazione",
+  "workspace.payments.view": "Visualizza",
   "workspace.black.loading": "Caricamento...",
   "workspace.black.time.day": "giorno",
   "workspace.black.time.days": "giorni",
@@ -452,14 +452,14 @@ export const dict = {
   "workspace.black.subscription.manage": "Gestisci abbonamento",
   "workspace.black.subscription.rollingUsage": "Utilizzo di 5 ore",
   "workspace.black.subscription.weeklyUsage": "Utilizzo settimanale",
-  "workspace.black.subscription.resetsIn": "Si reimposta",
+  "workspace.black.subscription.resetsIn": "Si reimposta tra",
   "workspace.black.subscription.useBalance": "Utilizza il saldo disponibile dopo aver raggiunto i limiti di utilizzo",
   "workspace.black.waitlist.title": "Lista d'attesa",
-  "workspace.black.waitlist.joined": "Sei in lista d'attesa per il piano nero ${{plan}} al mese OpenCode.",
+  "workspace.black.waitlist.joined": "Sei in lista d'attesa per il piano OpenCode Black da ${{plan}} al mese.",
   "workspace.black.waitlist.ready": "Siamo pronti per iscriverti al piano OpenCode Black da ${{plan}} al mese.",
   "workspace.black.waitlist.leave": "Lascia la lista d'attesa",
-  "workspace.black.waitlist.leaving": "In partenza...",
-  "workspace.black.waitlist.left": "Sinistra",
+  "workspace.black.waitlist.leaving": "Uscita in corso...",
+  "workspace.black.waitlist.left": "Uscito dalla lista d'attesa",
   "workspace.black.waitlist.enroll": "Iscriversi",
   "workspace.black.waitlist.enrolling": "Iscrizione...",
   "workspace.black.waitlist.enrolled": "Iscritto",

+ 47 - 47
packages/console/app/src/i18n/zh.ts

@@ -293,9 +293,9 @@ export const dict = {
   "changelog.hero.subtitle": "OpenCode \u7684\u65b0\u66f4\u65b0\u4e0e\u6539\u8fdb",
   "changelog.empty": "\u672a\u627e\u5230\u66f4\u65b0\u65e5\u5fd7\u6761\u76ee\u3002",
   "changelog.viewJson": "\u67e5\u770b JSON",
-  "workspace.nav.zen": "",
+  "workspace.nav.zen": "Zen",
   "workspace.nav.apiKeys": "API 键",
-  "workspace.nav.members": "员",
+  "workspace.nav.members": "员",
   "workspace.nav.billing": "计费",
   "workspace.nav.settings": "设置",
   "workspace.home.banner.beforeLink": "编码代理的可靠优化模型。",
@@ -310,26 +310,26 @@ export const dict = {
   "workspace.newUser.feature.lockin.body":
     "将 Zen 与任何编码代理结合使用,并在需要时继续将其他提供程序与 opencode 结合使用。",
   "workspace.newUser.copyApiKey": "复制 API 密钥",
-  "workspace.newUser.copyKey": "复制钥",
-  "workspace.newUser.copied": "复制!",
+  "workspace.newUser.copyKey": "复制钥",
+  "workspace.newUser.copied": "复制!",
   "workspace.newUser.step.enableBilling": "启用计费",
-  "workspace.newUser.step.login.before": "跑步",
+  "workspace.newUser.step.login.before": "运行",
   "workspace.newUser.step.login.after": "并选择 opencode",
   "workspace.newUser.step.pasteKey": "粘贴您的 API 密钥",
   "workspace.newUser.step.models.before": "启动 opencode 并运行",
-  "workspace.newUser.step.models.after": "选择型",
-  "workspace.models.title": "型",
+  "workspace.newUser.step.models.after": "选择型",
+  "workspace.models.title": "型",
   "workspace.models.subtitle.beforeLink": "管理工作区成员可以访问哪些模型。",
   "workspace.models.table.model": "模型",
   "workspace.models.table.enabled": "启用",
-  "workspace.providers.title": "带上你自己的钥匙",
+  "workspace.providers.title": "自带密钥",
   "workspace.providers.subtitle": "从 AI 提供商处配置您自己的 API 密钥。",
   "workspace.providers.placeholder": "输入 {{provider}} API 密钥({{prefix}}...)",
   "workspace.providers.configure": "配置",
   "workspace.providers.edit": "编辑",
   "workspace.providers.delete": "删除",
   "workspace.providers.saving": "保存...",
-  "workspace.providers.save": "节省",
+  "workspace.providers.save": "保存",
   "workspace.providers.table.provider": "提供者",
   "workspace.providers.table.apiKey": "API 密钥",
   "workspace.usage.title": "使用历史",
@@ -348,25 +348,25 @@ export const dict = {
   "workspace.usage.subscription": "订阅 (${{amount}})",
   "workspace.cost.title": "成本",
   "workspace.cost.subtitle": "按型号细分的使用成本。",
-  "workspace.cost.allModels": "所有型",
-  "workspace.cost.allKeys": "所有按键",
+  "workspace.cost.allModels": "所有型",
+  "workspace.cost.allKeys": "所有密钥",
   "workspace.cost.deletedSuffix": "(已删除)",
   "workspace.cost.empty": "所选期间没有可用的使用数据。",
-  "workspace.cost.subscriptionShort": "",
+  "workspace.cost.subscriptionShort": "",
   "workspace.keys.title": "API 键",
   "workspace.keys.subtitle": "管理您的 API 密钥以访问 opencode 服务。",
   "workspace.keys.create": "创建 API 密钥",
-  "workspace.keys.placeholder": "输入按键名称",
+  "workspace.keys.placeholder": "输入密钥名称",
   "workspace.keys.empty": "创建 opencode 网关 API 密钥",
-  "workspace.keys.table.name": "名",
-  "workspace.keys.table.key": "钥",
+  "workspace.keys.table.name": "名",
+  "workspace.keys.table.key": "钥",
   "workspace.keys.table.createdBy": "创建者",
   "workspace.keys.table.lastUsed": "最后使用",
   "workspace.keys.copyApiKey": "复制 API 密钥",
   "workspace.keys.delete": "删除",
-  "workspace.members.title": "员",
+  "workspace.members.title": "员",
   "workspace.members.subtitle": "管理工作区成员及其权限。",
-  "workspace.members.invite": "邀请员",
+  "workspace.members.invite": "邀请员",
   "workspace.members.inviting": "邀请...",
   "workspace.members.beta.beforeLink": "测试期间,工作空间对团队免费。",
   "workspace.members.form.invitee": "受邀者",
@@ -379,11 +379,11 @@ export const dict = {
   "workspace.members.edit": "编辑",
   "workspace.members.delete": "删除",
   "workspace.members.saving": "保存...",
-  "workspace.members.save": "节省",
+  "workspace.members.save": "保存",
   "workspace.members.table.email": "电子邮件",
   "workspace.members.table.role": "角色",
-  "workspace.members.table.monthLimit": "月份限制",
-  "workspace.members.role.admin": "行政",
+  "workspace.members.table.monthLimit": "月限额",
+  "workspace.members.role.admin": "管理员",
   "workspace.members.role.adminDescription": "可以管理模型、成员和计费",
   "workspace.members.role.member": "成员",
   "workspace.members.role.memberDescription": "只能为自己生成 API 密钥",
@@ -392,7 +392,7 @@ export const dict = {
   "workspace.settings.workspaceName": "工作区名称",
   "workspace.settings.defaultName": "默认",
   "workspace.settings.updating": "更新中...",
-  "workspace.settings.save": "节省",
+  "workspace.settings.save": "保存",
   "workspace.settings.edit": "编辑",
   "workspace.billing.title": "计费",
   "workspace.billing.subtitle.beforeLink": "管理付款方式。",
@@ -404,35 +404,35 @@ export const dict = {
   "workspace.billing.loading": "加载中...",
   "workspace.billing.addAction": "添加",
   "workspace.billing.addBalance": "添加余额",
-  "workspace.billing.linkedToStripe": "链接到条纹",
+  "workspace.billing.linkedToStripe": "已绑定 Stripe",
   "workspace.billing.manage": "管理",
   "workspace.billing.enable": "启用计费",
   "workspace.monthlyLimit.title": "每月限额",
   "workspace.monthlyLimit.subtitle": "为您的帐户设置每月使用限额。",
   "workspace.monthlyLimit.placeholder": "50",
-  "workspace.monthlyLimit.setting": "环境...",
-  "workspace.monthlyLimit.set": "",
+  "workspace.monthlyLimit.setting": "设置中...",
+  "workspace.monthlyLimit.set": "设置",
   "workspace.monthlyLimit.edit": "编辑限制",
   "workspace.monthlyLimit.noLimit": "没有设置使用限制。",
-  "workspace.monthlyLimit.currentUsage.beforeMonth": "当前使用情况为",
-  "workspace.monthlyLimit.currentUsage.beforeAmount": " $",
-  "workspace.reload.title": "自动重新加载",
-  "workspace.reload.disabled.before": "自动重新加载是",
-  "workspace.reload.disabled.state": "残疾人",
-  "workspace.reload.disabled.after": "启用余额不足时自动充值。",
-  "workspace.reload.enabled.before": "自动重新加载是",
+  "workspace.monthlyLimit.currentUsage.beforeMonth": "当前",
+  "workspace.monthlyLimit.currentUsage.beforeAmount": "的使用量为 $",
+  "workspace.reload.title": "自动充值",
+  "workspace.reload.disabled.before": "自动充值已",
+  "workspace.reload.disabled.state": "停用",
+  "workspace.reload.disabled.after": "启用后将在余额较低时自动充值。",
+  "workspace.reload.enabled.before": "自动充值已",
   "workspace.reload.enabled.state": "已启用",
-  "workspace.reload.enabled.middle": "我们将重新加载",
-  "workspace.reload.processingFee": "加工费",
+  "workspace.reload.enabled.middle": "我们将自动充值",
+  "workspace.reload.processingFee": "手续费",
   "workspace.reload.enabled.after": "当余额达到",
   "workspace.reload.edit": "编辑",
-  "workspace.reload.enable": "使能够",
-  "workspace.reload.enableAutoReload": "启用自动重新加载",
-  "workspace.reload.reloadAmount": "重新加载 $",
+  "workspace.reload.enable": "启用",
+  "workspace.reload.enableAutoReload": "启用自动充值",
+  "workspace.reload.reloadAmount": "充值 $",
   "workspace.reload.whenBalanceReaches": "当余额达到 $",
   "workspace.reload.saving": "保存...",
-  "workspace.reload.save": "节省",
-  "workspace.reload.failedAt": "重新加载失败于",
+  "workspace.reload.save": "保存",
+  "workspace.reload.failedAt": "充值失败于",
   "workspace.reload.reason": "原因:",
   "workspace.reload.updatePaymentMethod": "请更新您的付款方式并重试。",
   "workspace.reload.retrying": "正在重试...",
@@ -441,11 +441,11 @@ export const dict = {
   "workspace.payments.subtitle": "最近的付款交易。",
   "workspace.payments.table.date": "日期",
   "workspace.payments.table.paymentId": "付款ID",
-  "workspace.payments.table.amount": "数量",
+  "workspace.payments.table.amount": "金额",
   "workspace.payments.table.receipt": "收据",
   "workspace.payments.type.credit": "信用",
   "workspace.payments.type.subscription": "订阅",
-  "workspace.payments.view": "看",
+  "workspace.payments.view": "看",
   "workspace.black.loading": "加载中...",
   "workspace.black.time.day": "天",
   "workspace.black.time.days": "天",
@@ -455,20 +455,20 @@ export const dict = {
   "workspace.black.time.minutes": "分钟",
   "workspace.black.time.fewSeconds": "几秒钟",
   "workspace.black.subscription.title": "订阅",
-  "workspace.black.subscription.message": "您已订阅 OpenCode Black,每月费用为 {{plan}} 美元。",
+  "workspace.black.subscription.message": "您已订阅 OpenCode Black,费用为每月 ${{plan}}。",
   "workspace.black.subscription.manage": "管理订阅",
   "workspace.black.subscription.rollingUsage": "5小时使用",
   "workspace.black.subscription.weeklyUsage": "每周使用量",
   "workspace.black.subscription.resetsIn": "重置于",
   "workspace.black.subscription.useBalance": "达到使用限额后使用您的可用余额",
   "workspace.black.waitlist.title": "候补名单",
-  "workspace.black.waitlist.joined": "您正在等待每月 ${{plan}} OpenCode 黑色计划。",
-  "workspace.black.waitlist.ready": "我们已准备好让您加入每月 {{plan}} 美元的 OpenCode 黑色计划。",
+  "workspace.black.waitlist.joined": "您已加入每月 ${{plan}} 的 OpenCode Black 方案候补名单。",
+  "workspace.black.waitlist.ready": "我们已准备好将您加入每月 ${{plan}} 的 OpenCode Black 方案。",
   "workspace.black.waitlist.leave": "离开候补名单",
   "workspace.black.waitlist.leaving": "离开...",
-  "workspace.black.waitlist.left": "左边",
-  "workspace.black.waitlist.enroll": "注册",
-  "workspace.black.waitlist.enrolling": "正在报名...",
-  "workspace.black.waitlist.enrolled": "已注册",
+  "workspace.black.waitlist.left": "已退出",
+  "workspace.black.waitlist.enroll": "加入",
+  "workspace.black.waitlist.enrolling": "加入中...",
+  "workspace.black.waitlist.enrolled": "已加入",
   "workspace.black.waitlist.enrollNote": "单击“注册”后,您的订阅将立即开始,并且将从您的卡中扣费。",
 } satisfies Dict

+ 47 - 47
packages/console/app/src/i18n/zht.ts

@@ -293,9 +293,9 @@ export const dict = {
   "changelog.hero.subtitle": "OpenCode \u7684\u65b0\u66f4\u65b0\u8207\u6539\u5584",
   "changelog.empty": "\u627e\u4e0d\u5230\u66f4\u65b0\u65e5\u8a8c\u9805\u76ee\u3002",
   "changelog.viewJson": "\u6aa2\u8996 JSON",
-  "workspace.nav.zen": "",
+  "workspace.nav.zen": "Zen",
   "workspace.nav.apiKeys": "API 鍵",
-  "workspace.nav.members": "員",
+  "workspace.nav.members": "員",
   "workspace.nav.billing": "計費",
   "workspace.nav.settings": "設定",
   "workspace.home.banner.beforeLink": "編碼代理的可靠優化模型。",
@@ -310,26 +310,26 @@ export const dict = {
   "workspace.newUser.feature.lockin.body":
     "將 Zen 與任何編碼代理結合使用,並在需要時繼續將其他提供程序與 opencode 結合使用。",
   "workspace.newUser.copyApiKey": "複製 API 密鑰",
-  "workspace.newUser.copyKey": "複製鑰",
-  "workspace.newUser.copied": "複製!",
+  "workspace.newUser.copyKey": "複製鑰",
+  "workspace.newUser.copied": "複製!",
   "workspace.newUser.step.enableBilling": "啟用計費",
-  "workspace.newUser.step.login.before": "跑步",
+  "workspace.newUser.step.login.before": "執行",
   "workspace.newUser.step.login.after": "並選擇 opencode",
   "workspace.newUser.step.pasteKey": "粘貼您的 API 密鑰",
   "workspace.newUser.step.models.before": "啟動 opencode 並運行",
-  "workspace.newUser.step.models.after": "選擇型",
-  "workspace.models.title": "型",
+  "workspace.newUser.step.models.after": "選擇型",
+  "workspace.models.title": "型",
   "workspace.models.subtitle.beforeLink": "管理工作區成員可以訪問哪些模型。",
   "workspace.models.table.model": "模型",
   "workspace.models.table.enabled": "啟用",
-  "workspace.providers.title": "帶上你自己的鑰匙",
+  "workspace.providers.title": "自帶密鑰",
   "workspace.providers.subtitle": "從 AI 提供商處配置您自己的 API 密鑰。",
   "workspace.providers.placeholder": "輸入 {{provider}} API 密鑰({{prefix}}...)",
   "workspace.providers.configure": "配置",
   "workspace.providers.edit": "編輯",
   "workspace.providers.delete": "刪除",
   "workspace.providers.saving": "保存...",
-  "workspace.providers.save": "節省",
+  "workspace.providers.save": "儲存",
   "workspace.providers.table.provider": "提供者",
   "workspace.providers.table.apiKey": "API 密鑰",
   "workspace.usage.title": "使用歷史",
@@ -348,25 +348,25 @@ export const dict = {
   "workspace.usage.subscription": "訂閱 (${{amount}})",
   "workspace.cost.title": "成本",
   "workspace.cost.subtitle": "按型號細分的使用成本。",
-  "workspace.cost.allModels": "所有型",
-  "workspace.cost.allKeys": "所有按鍵",
+  "workspace.cost.allModels": "所有型",
+  "workspace.cost.allKeys": "所有密鑰",
   "workspace.cost.deletedSuffix": "(已刪除)",
   "workspace.cost.empty": "所選期間沒有可用的使用數據。",
-  "workspace.cost.subscriptionShort": "",
+  "workspace.cost.subscriptionShort": "",
   "workspace.keys.title": "API 鍵",
   "workspace.keys.subtitle": "管理您的 API 密鑰以訪問 opencode 服務。",
   "workspace.keys.create": "創建 API 密鑰",
-  "workspace.keys.placeholder": "輸入按鍵名稱",
+  "workspace.keys.placeholder": "輸入密鑰名稱",
   "workspace.keys.empty": "創建 opencode 網關 API 密鑰",
-  "workspace.keys.table.name": "名",
-  "workspace.keys.table.key": "鑰",
+  "workspace.keys.table.name": "名",
+  "workspace.keys.table.key": "鑰",
   "workspace.keys.table.createdBy": "創建者",
   "workspace.keys.table.lastUsed": "最後使用",
   "workspace.keys.copyApiKey": "複製 API 密鑰",
   "workspace.keys.delete": "刪除",
-  "workspace.members.title": "員",
+  "workspace.members.title": "員",
   "workspace.members.subtitle": "管理工作區成員及其權限。",
-  "workspace.members.invite": "邀請員",
+  "workspace.members.invite": "邀請員",
   "workspace.members.inviting": "邀請...",
   "workspace.members.beta.beforeLink": "測試期間,工作空間對團隊免費。",
   "workspace.members.form.invitee": "受邀者",
@@ -379,11 +379,11 @@ export const dict = {
   "workspace.members.edit": "編輯",
   "workspace.members.delete": "刪除",
   "workspace.members.saving": "保存...",
-  "workspace.members.save": "節省",
+  "workspace.members.save": "儲存",
   "workspace.members.table.email": "電子郵件",
   "workspace.members.table.role": "角色",
-  "workspace.members.table.monthLimit": "月份限制",
-  "workspace.members.role.admin": "行政",
+  "workspace.members.table.monthLimit": "月限額",
+  "workspace.members.role.admin": "管理員",
   "workspace.members.role.adminDescription": "可以管理模型、成員和計費",
   "workspace.members.role.member": "成員",
   "workspace.members.role.memberDescription": "只能為自己生成 API 密鑰",
@@ -392,7 +392,7 @@ export const dict = {
   "workspace.settings.workspaceName": "工作區名稱",
   "workspace.settings.defaultName": "預設",
   "workspace.settings.updating": "更新中...",
-  "workspace.settings.save": "節省",
+  "workspace.settings.save": "儲存",
   "workspace.settings.edit": "編輯",
   "workspace.billing.title": "計費",
   "workspace.billing.subtitle.beforeLink": "管理付款方式。",
@@ -404,35 +404,35 @@ export const dict = {
   "workspace.billing.loading": "載入中...",
   "workspace.billing.addAction": "添加",
   "workspace.billing.addBalance": "添加餘額",
-  "workspace.billing.linkedToStripe": "鏈接到條紋",
+  "workspace.billing.linkedToStripe": "已連結 Stripe",
   "workspace.billing.manage": "管理",
   "workspace.billing.enable": "啟用計費",
   "workspace.monthlyLimit.title": "每月限額",
   "workspace.monthlyLimit.subtitle": "為您的帳戶設置每月使用限額。",
   "workspace.monthlyLimit.placeholder": "50",
-  "workspace.monthlyLimit.setting": "環境...",
-  "workspace.monthlyLimit.set": "",
+  "workspace.monthlyLimit.setting": "設定中...",
+  "workspace.monthlyLimit.set": "設定",
   "workspace.monthlyLimit.edit": "編輯限制",
   "workspace.monthlyLimit.noLimit": "沒有設置使用限制。",
-  "workspace.monthlyLimit.currentUsage.beforeMonth": "當前使用情況為",
-  "workspace.monthlyLimit.currentUsage.beforeAmount": " $",
-  "workspace.reload.title": "自動重新加載",
-  "workspace.reload.disabled.before": "自動重新加載是",
-  "workspace.reload.disabled.state": "殘疾人",
-  "workspace.reload.disabled.after": "啟用餘額不足時自動充值。",
-  "workspace.reload.enabled.before": "自動重新加載是",
+  "workspace.monthlyLimit.currentUsage.beforeMonth": "當前",
+  "workspace.monthlyLimit.currentUsage.beforeAmount": "的使用量為 $",
+  "workspace.reload.title": "自動儲值",
+  "workspace.reload.disabled.before": "自動儲值已",
+  "workspace.reload.disabled.state": "停用",
+  "workspace.reload.disabled.after": "啟用後會在餘額偏低時自動儲值。",
+  "workspace.reload.enabled.before": "自動儲值已",
   "workspace.reload.enabled.state": "已啟用",
-  "workspace.reload.enabled.middle": "我們將重新加載",
-  "workspace.reload.processingFee": "加工費",
+  "workspace.reload.enabled.middle": "我們將自動儲值",
+  "workspace.reload.processingFee": "手續費",
   "workspace.reload.enabled.after": "當餘額達到",
   "workspace.reload.edit": "編輯",
-  "workspace.reload.enable": "使能夠",
-  "workspace.reload.enableAutoReload": "啟用自動重新加載",
-  "workspace.reload.reloadAmount": "重新加載 $",
+  "workspace.reload.enable": "啟用",
+  "workspace.reload.enableAutoReload": "啟用自動儲值",
+  "workspace.reload.reloadAmount": "儲值 $",
   "workspace.reload.whenBalanceReaches": "當餘額達到 $",
   "workspace.reload.saving": "保存...",
-  "workspace.reload.save": "節省",
-  "workspace.reload.failedAt": "重新加載失敗於",
+  "workspace.reload.save": "儲存",
+  "workspace.reload.failedAt": "儲值失敗於",
   "workspace.reload.reason": "原因:",
   "workspace.reload.updatePaymentMethod": "請更新您的付款方式並重試。",
   "workspace.reload.retrying": "正在重試...",
@@ -441,11 +441,11 @@ export const dict = {
   "workspace.payments.subtitle": "最近的付款交易。",
   "workspace.payments.table.date": "日期",
   "workspace.payments.table.paymentId": "付款ID",
-  "workspace.payments.table.amount": "數量",
+  "workspace.payments.table.amount": "金額",
   "workspace.payments.table.receipt": "收據",
   "workspace.payments.type.credit": "信用",
   "workspace.payments.type.subscription": "訂閱",
-  "workspace.payments.view": "看",
+  "workspace.payments.view": "看",
   "workspace.black.loading": "載入中...",
   "workspace.black.time.day": "天",
   "workspace.black.time.days": "天",
@@ -455,20 +455,20 @@ export const dict = {
   "workspace.black.time.minutes": "分鐘",
   "workspace.black.time.fewSeconds": "幾秒鐘",
   "workspace.black.subscription.title": "訂閱",
-  "workspace.black.subscription.message": "您已訂閱 OpenCode Black,每月費用為 {{plan}} 美元。",
+  "workspace.black.subscription.message": "您已訂閱 OpenCode Black,費用為每月 ${{plan}}。",
   "workspace.black.subscription.manage": "管理訂閱",
   "workspace.black.subscription.rollingUsage": "5小時使用",
   "workspace.black.subscription.weeklyUsage": "每週使用量",
   "workspace.black.subscription.resetsIn": "重置於",
   "workspace.black.subscription.useBalance": "達到使用限額後使用您的可用餘額",
   "workspace.black.waitlist.title": "候補名單",
-  "workspace.black.waitlist.joined": "您正在等待每月 ${{plan}} OpenCode 黑色計劃。",
-  "workspace.black.waitlist.ready": "我們已準備好讓您加入每月 {{plan}} 美元的 OpenCode 黑色計劃。",
+  "workspace.black.waitlist.joined": "您已加入每月 ${{plan}} 的 OpenCode Black 方案候補名單。",
+  "workspace.black.waitlist.ready": "我們已準備好將您加入每月 ${{plan}} 的 OpenCode Black 方案。",
   "workspace.black.waitlist.leave": "離開候補名單",
   "workspace.black.waitlist.leaving": "離開...",
-  "workspace.black.waitlist.left": "左邊",
-  "workspace.black.waitlist.enroll": "註冊",
-  "workspace.black.waitlist.enrolling": "正在報名...",
-  "workspace.black.waitlist.enrolled": "已註冊",
+  "workspace.black.waitlist.left": "已退出",
+  "workspace.black.waitlist.enroll": "加入",
+  "workspace.black.waitlist.enrolling": "加入中...",
+  "workspace.black.waitlist.enrolled": "已加入",
   "workspace.black.waitlist.enrollNote": "單擊“註冊”後,您的訂閱將立即開始,並且將從您的卡中扣費。",
 } satisfies Dict

+ 76 - 0
specs/19-workspace-i18n-audit-overview.md

@@ -0,0 +1,76 @@
+## workspace i18n audit overview (zen workspace routes)
+
+Audit objective: verify translation accuracy for customer-facing workspace management pages used to manage Zen (AI inference provider) usage, with strict terminology and brand integrity.
+
+---
+
+### scope
+
+- Routes audited: `packages/console/app/src/routes/workspace/**` (all workspace TSX routes, including billing/keys/members/settings)
+- Locale files audited: `packages/console/app/src/i18n/ar.ts`, `packages/console/app/src/i18n/da.ts`, `packages/console/app/src/i18n/de.ts`, `packages/console/app/src/i18n/it.ts`
+- Source-of-truth copy: `packages/console/app/src/i18n/en.ts`
+- Total unique translation keys used by workspace routes: **181**
+
+---
+
+### deliverables
+
+- Arabic audit and fix spec: `specs/20-workspace-i18n-audit-ar.md`
+- Danish audit and fix spec: `specs/21-workspace-i18n-audit-da.md`
+- German audit and fix spec: `specs/22-workspace-i18n-audit-de.md`
+- Italian audit and fix spec: `specs/23-workspace-i18n-audit-it.md`
+
+These files are intentionally execution-ready so follow-up agents can apply string fixes without re-auditing.
+
+---
+
+### non-negotiable terminology contract
+
+1. Product names and brands:
+   - `Zen` must remain exactly `Zen` (never translated, never lowercased).
+   - `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models` remain literal.
+2. AI domain terms must preserve technical meaning:
+   - `model` = AI model, not fashion/product model.
+   - `provider` = AI provider/vendor.
+   - `Bring Your Own Key` = BYOK concept (user-provided API credential).
+3. Billing/top-up language must stay financial:
+   - `reload` in billing pages means balance top-up/recharge, not page refresh.
+   - `amount`, `cost`, `usage`, `monthly spending limit` must map to metering/billing context.
+4. Placeholder and interpolation safety:
+   - Keep placeholders unchanged (`{{provider}}`, `{{prefix}}`, `{{amount}}`, etc).
+   - Keep currency symbols and key ordering intact.
+
+---
+
+### cross-locale risk summary
+
+- Critical risk focus across locales: billing `reload` text must consistently mean balance top-up/recharge (not page refresh), while product literals and CLI command verbs remain exact.
+- `ar` (Arabic): **31** flagged keys (critical: 4, major: 23, minor: 4), with critical literals broken for `Zen`, `Stripe`, and `OpenCode Black` waitlist strings.
+- `da` (Danish): **33** flagged keys (critical: 8, major: 18, minor: 7), concentrated in reload/top-up semantics plus onboarding/default-label blockers.
+- `de` (German): **34** flagged keys (critical: 6, major: 27, minor: 1), centered on reload/top-up semantics, onboarding command phrasing, and usage metric wording.
+- `it` (Italian): **25** flagged keys (critical: 2, major: 18, minor: 5), led by `Zen` casing and waitlist status semantics with broader API/billing wording drift.
+
+---
+
+### remediation workflow for follow-up agents
+
+1. Pick one locale spec (`20`/`21`/`22`/`23`) and apply only mapped key updates in that locale file.
+2. Do not add/remove keys; only edit string values.
+3. Preserve placeholders and punctuation contracts.
+4. Run app typecheck:
+   - `bun run typecheck` in `packages/console/app`
+5. Run post-fix terminology sanity checks:
+   - Literal checks in locale files: `Zen`, `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models`.
+   - `workspace.reload.*` language matches top-up/recharge semantics.
+   - `API key` labels are ordered naturally in target language.
+   - Placeholders remain unchanged (`{{provider}}`, `{{prefix}}`, `{{plan}}`, `{{amount}}`, etc).
+
+---
+
+### acceptance criteria
+
+- All mapped critical and major issues in locale specs are fixed.
+- `workspace.nav.zen` is exactly `Zen` in all locales.
+- `workspace.billing.linkedToStripe` preserves `Stripe` literal in all locales.
+- Workspace billing and usage terminology is technically accurate for AI inference workflows.
+- No placeholder regressions.

+ 99 - 0
specs/20-workspace-i18n-audit-ar.md

@@ -0,0 +1,99 @@
+## workspace i18n audit - ar
+
+Arabic translation audit for workspace routes with focus on Zen/AI/billing terminology accuracy.
+
+---
+
+### coverage
+
+- Route scope: `packages/console/app/src/routes/workspace/**`
+- Locale file: `packages/console/app/src/i18n/ar.ts`
+- Source reference: `packages/console/app/src/i18n/en.ts`
+- Unique keys in scope: **181**
+- Flagged keys: **31** (critical: 4, major: 23, minor: 4)
+
+---
+
+### glossary decisions (ar)
+
+- `Zen`: keep exactly `Zen`
+- `OpenCode Black`: keep exactly `OpenCode Black`
+- `Stripe`: keep exactly `Stripe`
+- `opencode`: keep exactly `opencode`
+- `API`: keep exactly `API`
+- `/models`: keep exactly `/models`
+- `model`: `نموذج` / `نماذج`
+- `provider`: `مزوّد`
+- `API key`: `مفتاح API`
+- `Bring Your Own Key`: `استخدم مفتاحك الخاص`
+- `usage`: `الاستخدام`
+- `cost`: `التكلفة`
+- `billing`: `الفوترة`
+- `monthly spending limit`: `حد الإنفاق الشهري`
+- `auto reload` (billing context): `إعادة الشحن التلقائي`
+- Keep placeholders exactly as-is: `{{provider}}`, `{{prefix}}`, `{{plan}}`, `{{amount}}`.
+
+---
+
+### required key updates
+
+| key                                    | replace with                                                       | severity | reason                                               |
+| -------------------------------------- | ------------------------------------------------------------------ | -------- | ---------------------------------------------------- |
+| workspace.nav.zen                      | Zen                                                                | critical | Product literal must not be translated.              |
+| workspace.billing.linkedToStripe       | مرتبط بـ Stripe                                                    | critical | Keep payment brand literal `Stripe`.                 |
+| workspace.black.waitlist.joined        | أنت على قائمة الانتظار لخطة OpenCode Black بقيمة ${{plan}} شهريًا. | critical | Preserve exact literal `OpenCode Black`.             |
+| workspace.black.waitlist.ready         | نحن مستعدون لتسجيلك في خطة OpenCode Black بقيمة ${{plan}} شهريًا.  | critical | Preserve exact literal `OpenCode Black`.             |
+| workspace.nav.apiKeys                  | مفاتيح API                                                         | major    | Correct `API` key word order.                        |
+| workspace.keys.title                   | مفاتيح API                                                         | major    | Correct `API` key word order.                        |
+| workspace.providers.table.apiKey       | مفتاح API                                                          | major    | Correct `API` key word order.                        |
+| workspace.cost.title                   | التكلفة                                                            | major    | `Cost` mistranslated as verb.                        |
+| workspace.usage.table.cost             | التكلفة                                                            | major    | `Cost` mistranslated as verb.                        |
+| workspace.cost.allModels               | جميع النماذج                                                       | major    | Prefer standard AI term `نماذج`.                     |
+| workspace.cost.subscriptionShort       | اشتراك                                                             | major    | Current value is semantically wrong.                 |
+| workspace.payments.table.amount        | المبلغ                                                             | major    | Financial amount mistranslated as quantity.          |
+| workspace.payments.view                | عرض                                                                | major    | CTA mistranslated as noun “scenery”.                 |
+| workspace.monthlyLimit.setting         | جارٍ التعيين...                                                    | major    | Progress state mistranslated.                        |
+| workspace.settings.defaultName         | الافتراضي                                                          | major    | Default label mistranslated.                         |
+| workspace.newUser.step.login.before    | شغّل                                                               | major    | CLI imperative “Run” mistranslated.                  |
+| workspace.members.role.admin           | مسؤول                                                              | major    | Spelling error.                                      |
+| workspace.reload.title                 | إعادة الشحن التلقائي                                               | major    | Billing `reload` means top-up/recharge, not refresh. |
+| workspace.reload.enableAutoReload      | تفعيل إعادة الشحن التلقائي                                         | major    | Must reflect top-up semantics.                       |
+| workspace.reload.reloadAmount          | مبلغ إعادة الشحن $                                                 | major    | Must reflect recharge amount.                        |
+| workspace.reload.failedAt              | فشلت إعادة الشحن في                                                | major    | Must reflect recharge failure.                       |
+| workspace.reload.disabled.state        | معطّل                                                              | major    | Incorrect toggle state term.                         |
+| workspace.reload.enabled.after         | عندما يصل الرصيد إلى                                               | major    | `balance` mistranslated as “equilibrium”.            |
+| workspace.reload.enable                | تفعيل                                                              | major    | CTA form mistranslated.                              |
+| workspace.reload.disabled.before       | إعادة الشحن التلقائي                                               | major    | Align phrase with recharge semantics.                |
+| workspace.reload.enabled.before        | إعادة الشحن التلقائي                                               | major    | Align phrase with recharge semantics.                |
+| workspace.reload.enabled.middle        | سنعيد شحن رصيدك بمبلغ                                              | major    | Must explicitly mean topping up balance.             |
+| workspace.billing.addAction            | إضافة                                                              | minor    | CTA grammatical form fix.                            |
+| workspace.billing.manage               | إدارة                                                              | minor    | CTA grammatical form fix.                            |
+| workspace.keys.empty                   | أنشئ مفتاح API لبوابة opencode                                     | minor    | Improve technical clarity and ordering.              |
+| workspace.newUser.feature.lockin.title | بدون احتجاز بمزوّد واحد                                            | minor    | Better conveys “No Lock-in”.                         |
+
+---
+
+### implementation batches
+
+1. **Brand literals first (critical)**
+   - `workspace.nav.zen`, `workspace.billing.linkedToStripe`, `workspace.black.waitlist.joined`, `workspace.black.waitlist.ready`
+2. **Reload/recharge semantics**
+   - `workspace.reload.*` flagged keys to ensure top-up meaning (not page refresh)
+3. **Billing/payment terminology**
+   - `workspace.cost.title`, `workspace.usage.table.cost`, `workspace.payments.table.amount`, `workspace.payments.view`, `workspace.monthlyLimit.setting`
+4. **API/workspace wording fixes**
+   - API-key ordering keys, `workspace.settings.defaultName`, `workspace.members.role.admin`, `workspace.newUser.step.login.before`
+5. **Minor CTA/clarity polish**
+   - `workspace.billing.addAction`, `workspace.billing.manage`, `workspace.keys.empty`, `workspace.newUser.feature.lockin.title`
+
+---
+
+### acceptance checks for follow-up fix agent
+
+- `workspace.nav.zen` value is exactly `Zen`.
+- `workspace.billing.linkedToStripe` contains `Stripe` literal.
+- `workspace.black.waitlist.joined` and `workspace.black.waitlist.ready` keep `OpenCode Black` exactly.
+- No `workspace.reload.*` string implies page refresh; all imply balance top-up/recharge.
+- API key labels use `مفتاح API` / `مفاتيح API` ordering.
+- Preserve literals exactly: `Zen`, `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models`.
+- All placeholders remain unchanged (`{{provider}}`, `{{prefix}}`, `{{plan}}`, `{{amount}}`).

+ 103 - 0
specs/21-workspace-i18n-audit-da.md

@@ -0,0 +1,103 @@
+## workspace i18n audit - da
+
+Danish translation audit for workspace routes with emphasis on AI-provider, billing, and workspace-management accuracy.
+
+---
+
+### coverage
+
+- Route scope: `packages/console/app/src/routes/workspace/**`
+- Locale file: `packages/console/app/src/i18n/da.ts`
+- Source reference: `packages/console/app/src/i18n/en.ts`
+- Unique locale keys used in scope: **181**
+- Flagged keys: **33** (critical: 8, major: 18, minor: 7)
+
+---
+
+### glossary decisions (da)
+
+- `Zen`: keep exactly `Zen`
+- `Stripe`: keep exactly `Stripe`
+- `OpenCode Black`: keep exactly `OpenCode Black`
+- `opencode`: keep exactly `opencode`
+- `API`: keep exactly `API`
+- `/models`: keep exactly `/models`
+- `API key`: `API-nøgle`
+- `billing`: `fakturering`
+- `reload` in wallet context: `genopfyldning` (top-up), never page refresh wording
+
+---
+
+### required key updates
+
+| key                                   | current da                                                                                          | replace with                                                                                         | severity | reason                                                                 |
+| ------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
+| workspace.newUser.step.login.before   | Løbe                                                                                                | Kør                                                                                                  | critical | Wrong verb for CLI instruction (`opencode auth login`).                |
+| workspace.settings.defaultName        | Misligholdelse                                                                                      | Standard                                                                                             | critical | Wrong meaning for default-label UI text.                               |
+| workspace.reload.title                | Automatisk genindlæsning                                                                            | Automatisk genopfyldning                                                                             | critical | `reload` here is balance top-up, not page reload.                      |
+| workspace.reload.disabled.before      | Automatisk genindlæsning er                                                                         | Automatisk genopfyldning er                                                                          | critical | Same billing top-up semantic issue.                                    |
+| workspace.reload.enabled.before       | Automatisk genindlæsning er                                                                         | Automatisk genopfyldning er                                                                          | critical | Same billing top-up semantic issue.                                    |
+| workspace.reload.enableAutoReload     | Aktiver automatisk genindlæsning                                                                    | Aktiver automatisk genopfyldning                                                                     | critical | Same billing top-up semantic issue.                                    |
+| workspace.reload.reloadAmount         | Genindlæs $                                                                                         | Genopfyld $                                                                                          | critical | Top-up amount label, not page reload action.                           |
+| workspace.reload.failedAt             | Genindlæsning mislykkedes kl                                                                        | Genopfyldning mislykkedes kl                                                                         | critical | Error refers to failed recharge event.                                 |
+| workspace.reload.disabled.after       | Aktiver for automatisk at genindlæse, når balancen er lav.                                          | Aktiver for automatisk at genopfylde, når saldoen er lav.                                            | major    | Must describe low-balance auto top-up behavior.                        |
+| workspace.reload.enabled.middle       | Vi genindlæser                                                                                      | Vi genopfylder                                                                                       | major    | Must describe automatic recharge action.                               |
+| workspace.reload.disabled.state       | handicappet                                                                                         | deaktiveret                                                                                          | major    | Wrong/off-tone toggle-state wording.                                   |
+| workspace.members.save                | Spare                                                                                               | Gem                                                                                                  | major    | Current word means monetary savings, not save changes.                 |
+| workspace.providers.save              | Spare                                                                                               | Gem                                                                                                  | major    | Current word means monetary savings, not save changes.                 |
+| workspace.reload.save                 | Spare                                                                                               | Gem                                                                                                  | major    | Current word means monetary savings, not save changes.                 |
+| workspace.settings.save               | Spare                                                                                               | Gem                                                                                                  | major    | Current word means monetary savings, not save changes.                 |
+| workspace.keys.copyApiKey             | Kopiér nøglen API                                                                                   | Kopiér API-nøgle                                                                                     | major    | Incorrect technical phrase order.                                      |
+| workspace.newUser.copyApiKey          | Kopiér nøglen API                                                                                   | Kopiér API-nøgle                                                                                     | major    | Incorrect technical phrase order.                                      |
+| workspace.providers.placeholder       | Indtast nøglen {{provider}} API ({{prefix}}...)                                                     | Indtast {{provider}} API-nøgle ({{prefix}}...)                                                       | major    | Technical phrase is malformed; placeholders must be preserved exactly. |
+| workspace.newUser.feature.tested.body | Vi har benchmarket og testet modeller specifikt til kodningsmidler for at sikre den bedste ydeevne. | Vi har benchmarket og testet modeller specifikt til kodningsagenter for at sikre den bedste ydeevne. | major    | Wrong domain noun (`kodningsmidler` != coding agents).                 |
+| workspace.payments.table.receipt      | Modtagelse                                                                                          | Kvittering                                                                                           | major    | Wrong payment term for receipt column.                                 |
+| workspace.payments.view               | Udsigt                                                                                              | Vis                                                                                                  | major    | Wrong CTA meaning for “View” action.                                   |
+| workspace.black.waitlist.left         | Venstre                                                                                             | Forladt                                                                                              | major    | Wrong meaning (“left” direction vs status).                            |
+| workspace.usage.table.output          | Produktion                                                                                          | Output                                                                                               | major    | Wrong AI metering term in token table.                                 |
+| workspace.usage.breakdown.output      | Produktion                                                                                          | Output                                                                                               | major    | Wrong AI metering term in token breakdown.                             |
+| workspace.usage.table.cost            | Koste                                                                                               | Omkostning                                                                                           | major    | Wrong part of speech for metric label.                                 |
+| workspace.cost.title                  | Koste                                                                                               | Omkostninger                                                                                         | major    | Wrong part of speech for section heading.                              |
+| workspace.members.edit                | Redigere                                                                                            | Rediger                                                                                              | minor    | Use imperative CTA form.                                               |
+| workspace.providers.edit              | Redigere                                                                                            | Rediger                                                                                              | minor    | Use imperative CTA form.                                               |
+| workspace.reload.edit                 | Redigere                                                                                            | Rediger                                                                                              | minor    | Use imperative CTA form.                                               |
+| workspace.settings.edit               | Redigere                                                                                            | Rediger                                                                                              | minor    | Use imperative CTA form.                                               |
+| workspace.billing.addAction           | Tilføje                                                                                             | Tilføj                                                                                               | minor    | Use imperative CTA form.                                               |
+| workspace.billing.manage              | Styre                                                                                               | Administrer                                                                                          | minor    | Better management CTA wording in product UI.                           |
+| workspace.black.waitlist.enroll       | Indskrive                                                                                           | Tilmeld                                                                                              | minor    | Better enrollment CTA for subscription/waitlist flow.                  |
+
+---
+
+### implementation batches
+
+1. **Critical blockers: onboarding + default + reload semantics**
+   - `workspace.newUser.step.login.before`
+   - `workspace.settings.defaultName`
+   - `workspace.reload.title`
+   - `workspace.reload.disabled.before`
+   - `workspace.reload.enabled.before`
+   - `workspace.reload.enableAutoReload`
+   - `workspace.reload.reloadAmount`
+   - `workspace.reload.failedAt`
+2. **Billing top-up and save-action correctness**
+   - Remaining `workspace.reload.*` in table
+   - `workspace.members.save`, `workspace.providers.save`, `workspace.reload.save`, `workspace.settings.save`
+3. **API and provider terminology cleanup**
+   - `workspace.keys.copyApiKey`, `workspace.newUser.copyApiKey`, `workspace.providers.placeholder`
+4. **Usage/payments/workspace label fixes**
+   - `workspace.newUser.feature.tested.body`
+   - `workspace.payments.table.receipt`, `workspace.payments.view`
+   - `workspace.black.waitlist.left`
+   - `workspace.usage.table.output`, `workspace.usage.breakdown.output`, `workspace.usage.table.cost`, `workspace.cost.title`
+5. **CTA polish (minor imperative consistency)**
+   - all `*.edit`, `workspace.billing.addAction`, `workspace.billing.manage`, `workspace.black.waitlist.enroll`
+
+---
+
+### acceptance checks for follow-up fix agent
+
+- Preserve literals exactly: `Zen`, `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models`.
+- Preserve placeholders exactly (eg `{{provider}}`, `{{prefix}}`, `{{plan}}`, `{{amount}}`).
+- All `workspace.reload.*` labels must mean balance top-up/recharge (`genopfyld*`), never page refresh (`genindlæs*`).
+- Save CTAs must reflect saving changes (`Gem` / `Gemmer...`), not savings-money wording.
+- AI metering labels in usage tables remain technically correct (`Input`, `Output`, cost nouns).

+ 95 - 0
specs/22-workspace-i18n-audit-de.md

@@ -0,0 +1,95 @@
+## workspace i18n audit - de
+
+German translation audit for workspace routes with focus on CLI onboarding clarity, AI metric terminology, and billing top-up semantics.
+
+---
+
+### coverage
+
+- Route scope: `packages/console/app/src/routes/workspace/**`
+- Locale file: `packages/console/app/src/i18n/de.ts`
+- Source reference: `packages/console/app/src/i18n/en.ts`
+- Unique keys in scope: **181**
+- Flagged keys: **34** (critical: 6, major: 27, minor: 1)
+
+---
+
+### glossary decisions (de)
+
+- Preserve literals exactly: `Zen`, `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models`
+- Preserve placeholders exactly (`{{provider}}`, `{{amount}}`, `{{plan}}`, `{{prefix}}`, etc.)
+- `API key`: `API-Schlüssel`
+- `usage`: `Nutzung`
+- `cost`: `Kosten`; payments column `Betrag`
+- `billing`: `Abrechnung`
+- Billing `reload` semantics: `Aufladung` / `aufladen` (never `Neuladen`)
+- AI cost metrics: keep `Input`, `Output`, `Reasoning`
+
+---
+
+### required key updates
+
+| key                                   | replace with                                                                             | severity | reason                                                |
+| ------------------------------------- | ---------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------- |
+| workspace.newUser.step.login.before   | Führe                                                                                    | critical | Wrong CLI verb in onboarding instruction.             |
+| workspace.monthlyLimit.set            | Festlegen                                                                                | critical | CTA mistranslated as noun (`Satz`).                   |
+| workspace.reload.title                | Automatische Aufladung                                                                   | critical | Billing top-up semantics, not page reload.            |
+| workspace.reload.disabled.after       | Aktivieren Sie diese Option, damit bei niedrigem Kontostand automatisch aufgeladen wird. | critical | Uses `neu laden`; must use billing top-up phrasing.   |
+| workspace.reload.enableAutoReload     | Automatische Aufladung aktivieren                                                        | critical | Primary toggle must follow billing top-up semantics.  |
+| workspace.black.subscription.message  | Sie haben OpenCode Black für ${{plan}} pro Monat abonniert.                              | critical | Missing `$` before `{{plan}}`.                        |
+| workspace.newUser.step.models.before  | Starte opencode und führe                                                                | major    | Unidiomatic command phrasing before `/models`.        |
+| workspace.newUser.copyApiKey          | API-Schlüssel kopieren                                                                   | major    | Broken technical term word order.                     |
+| workspace.keys.copyApiKey             | API-Schlüssel kopieren                                                                   | major    | Broken technical term word order.                     |
+| workspace.models.table.enabled        | Aktiviert                                                                                | major    | Wrong toggle-state label.                             |
+| workspace.providers.saving            | Wird gespeichert...                                                                      | major    | `Sparen...` means saving money, not save state.       |
+| workspace.members.inviting            | Wird eingeladen...                                                                       | major    | Incorrect invite loading state wording.               |
+| workspace.members.saving              | Wird gespeichert...                                                                      | major    | `Sparen...` means saving money, not save state.       |
+| workspace.monthlyLimit.setting        | Wird gesetzt...                                                                          | major    | In-progress state should be verbal action.            |
+| workspace.payments.table.amount       | Betrag                                                                                   | major    | Financial column mistranslated as quantity.           |
+| workspace.payments.view               | Anzeigen                                                                                 | major    | CTA mistranslated as noun (`Sicht`).                  |
+| workspace.usage.table.input           | Input                                                                                    | major    | AI billing metric should remain technical term.       |
+| workspace.usage.table.output          | Output                                                                                   | major    | AI billing metric should remain technical term.       |
+| workspace.usage.breakdown.input       | Input                                                                                    | major    | AI billing metric should remain technical term.       |
+| workspace.usage.breakdown.output      | Output                                                                                   | major    | AI billing metric should remain technical term.       |
+| workspace.usage.breakdown.reasoning   | Reasoning                                                                                | major    | AI billing metric should remain technical term.       |
+| workspace.reload.disabled.before      | Automatische Aufladung ist                                                               | major    | Should use top-up semantics instead of `Nachladen`.   |
+| workspace.reload.enabled.before       | Automatische Aufladung ist                                                               | major    | Should use top-up semantics instead of `Nachladen`.   |
+| workspace.reload.enabled.state        | aktiviert                                                                                | major    | `ermöglicht` is wrong state adjective for toggle.     |
+| workspace.reload.enabled.middle       | Wir laden auf                                                                            | major    | Should be account top-up verb (`aufladen`).           |
+| workspace.reload.enabled.after        | sobald der Kontostand                                                                    | major    | `Gleichgewicht` is wrong meaning for account balance. |
+| workspace.reload.reloadAmount         | Aufladebetrag $                                                                          | major    | Label should reflect top-up amount semantics.         |
+| workspace.reload.whenBalanceReaches   | Wenn der Kontostand $ erreicht                                                           | major    | Use account-balance term `Kontostand`.                |
+| workspace.reload.failedAt             | Aufladung fehlgeschlagen am                                                              | major    | Error copy should use top-up semantics.               |
+| workspace.reload.saving               | Wird gespeichert...                                                                      | major    | `Sparen...` means saving money, not save state.       |
+| workspace.black.waitlist.left         | Verlassen                                                                                | major    | `Links` is incorrect meaning.                         |
+| workspace.black.waitlist.joined       | Sie stehen auf der Warteliste für den OpenCode Black Tarif für ${{plan}} pro Monat.      | major    | Product name order/phrase is broken.                  |
+| workspace.black.waitlist.ready        | Wir können Sie jetzt in den OpenCode Black Tarif für ${{plan}} pro Monat aufnehmen.      | major    | Product name order/phrase is broken.                  |
+| workspace.black.subscription.resetsIn | Zurückgesetzt in                                                                         | minor    | Improve pre-duration label grammar.                   |
+
+---
+
+### implementation batches
+
+1. **Critical blockers first**
+   - `workspace.newUser.step.login.before`, `workspace.monthlyLimit.set`, `workspace.reload.title`, `workspace.reload.disabled.after`, `workspace.reload.enableAutoReload`, `workspace.black.subscription.message`
+2. **Reload semantics sweep**
+   - All `workspace.reload.*` keys listed above (state labels, helper text, error text, amount labels)
+3. **Onboarding + API key wording**
+   - `workspace.newUser.step.models.before`, `workspace.newUser.copyApiKey`, `workspace.keys.copyApiKey`
+4. **Async/CTA quality fixes**
+   - `workspace.providers.saving`, `workspace.members.inviting`, `workspace.members.saving`, `workspace.monthlyLimit.setting`, `workspace.payments.view`, `workspace.reload.saving`
+5. **AI usage/payments terminology**
+   - usage `Input/Output/Reasoning` keys + `workspace.payments.table.amount`
+6. **OpenCode Black waitlist copy**
+   - `workspace.black.waitlist.left`, `workspace.black.waitlist.joined`, `workspace.black.waitlist.ready`, `workspace.black.subscription.resetsIn`
+
+---
+
+### acceptance checks for follow-up fix agent
+
+- Flagged totals align with this spec: **34** (`critical` 6, `major` 27, `minor` 1).
+- `workspace.nav.zen` remains exactly `Zen`.
+- Literals remain exact where present: `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models`.
+- Billing top-up copy consistently uses `Aufladung` / `aufladen` (not `Neuladen`/`Nachladen`).
+- Usage metrics remain technical terms: `Input`, `Output`, `Reasoning`.
+- Placeholders remain unchanged in all updated strings.

+ 86 - 0
specs/23-workspace-i18n-audit-it.md

@@ -0,0 +1,86 @@
+## workspace i18n audit - it
+
+Italian translation audit for workspace routes with focus on Zen brand integrity and AI/billing term precision.
+
+---
+
+### coverage
+
+- Route scope: `packages/console/app/src/routes/workspace/**`
+- Locale file: `packages/console/app/src/i18n/it.ts`
+- Source reference: `packages/console/app/src/i18n/en.ts`
+- Unique keys in scope: **181** (`177` `workspace.*` + `4` `common.*`)
+- Flagged keys: **25** (critical: 2, major: 18, minor: 5)
+
+---
+
+### glossary decisions (it)
+
+- `Zen`: keep exactly `Zen`
+- `Stripe`: keep exactly `Stripe`
+- `OpenCode Black`: keep exactly `OpenCode Black`
+- `opencode`: keep exactly `opencode`
+- `API`: keep exactly `API`
+- `/models`: keep exactly `/models`
+- `API key`: `chiave API` / `chiavi API`
+- `billing`: `fatturazione`
+- `auto reload` (billing): `ricarica automatica`
+- `reload` in billing context: top-up/recharge semantics (never page refresh)
+
+---
+
+### required key updates
+
+| key                                    | current_it                                                          | replace with                                                            | severity | reason                                                    |
+| -------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------- | -------- | --------------------------------------------------------- |
+| workspace.nav.zen                      | zen                                                                 | Zen                                                                     | critical | Brand literal must match exactly.                         |
+| workspace.black.waitlist.left          | Sinistra                                                            | Uscito dalla lista d'attesa                                             | critical | `Left` is waitlist status, not direction.                 |
+| workspace.billing.manage               | Maneggio                                                            | Gestisci                                                                | major    | Wrong lexical meaning for CTA.                            |
+| workspace.billing.subtitle.beforeLink  | Gestire i metodi di pagamento.                                      | Gestisci i metodi di pagamento.                                         | major    | UI copy should be imperative, not infinitive.             |
+| workspace.black.waitlist.joined        | Sei in lista d'attesa per il piano nero ${{plan}} al mese OpenCode. | Sei in lista d'attesa per il piano OpenCode Black da ${{plan}} al mese. | major    | Preserve exact product naming and natural billing phrase. |
+| workspace.black.waitlist.leaving       | In partenza...                                                      | Uscita in corso...                                                      | major    | Wrong async action meaning for waitlist exit.             |
+| workspace.black.subscription.resetsIn  | Si reimposta                                                        | Si reimposta tra                                                        | major    | Missing connector for duration composition.               |
+| workspace.members.inviting             | Invitante...                                                        | Invito in corso...                                                      | major    | Incorrect grammar for in-progress invite state.           |
+| workspace.members.role.admin           | Ammin                                                               | Admin                                                                   | major    | Role label typo / non-standard abbreviation.              |
+| workspace.members.saving               | Risparmio...                                                        | Salvataggio in corso...                                                 | major    | Persistence action mistranslated as money saving.         |
+| workspace.providers.saving             | Risparmio...                                                        | Salvataggio in corso...                                                 | major    | Persistence action mistranslated as money saving.         |
+| workspace.reload.saving                | Risparmio...                                                        | Salvataggio in corso...                                                 | major    | Persistence action mistranslated as money saving.         |
+| workspace.monthlyLimit.setting         | Collocamento...                                                     | Impostazione in corso...                                                | major    | Wrong lexical meaning for `Setting...`.                   |
+| workspace.newUser.step.login.before    | Correre                                                             | Esegui                                                                  | major    | CLI instruction must convey `Run`.                        |
+| workspace.payments.table.amount        | Quantità                                                            | Importo                                                                 | major    | Financial amount requires `Importo`.                      |
+| workspace.keys.title                   | API Chiavi                                                          | Chiavi API                                                              | major    | Technical term order is incorrect.                        |
+| workspace.nav.apiKeys                  | API Chiavi                                                          | Chiavi API                                                              | major    | Technical term order is incorrect.                        |
+| workspace.providers.table.apiKey       | API Chiave                                                          | Chiave API                                                              | major    | Technical term order is incorrect.                        |
+| workspace.providers.title              | Porta la tua chiave                                                 | Bring Your Own Key (BYOK)                                               | major    | Preserve BYOK concept explicitly in AI-provider context.  |
+| workspace.reload.enabled.after         | quando l'equilibrio raggiunge                                       | quando il saldo raggiunge                                               | major    | Billing semantic error (`saldo`, not physical balance).   |
+| workspace.billing.addAction            | Aggiungere                                                          | Aggiungi                                                                | minor    | CTA should be imperative form.                            |
+| workspace.payments.view                | Visualizzazione                                                     | Visualizza                                                              | minor    | CTA should be verb, not noun.                             |
+| workspace.reload.disabled.before       | La ricarica automatica lo è                                         | La ricarica automatica è                                                | minor    | Remove incorrect pronoun for grammatical sentence.        |
+| workspace.reload.enabled.before        | La ricarica automatica lo è                                         | La ricarica automatica è                                                | minor    | Remove incorrect pronoun for grammatical sentence.        |
+| workspace.newUser.feature.lockin.title | Nessun blocco                                                       | Nessun lock-in                                                          | minor    | Prefer established product/industry term.                 |
+
+---
+
+### implementation batches
+
+1. **Critical brand/status fixes**
+   - `workspace.nav.zen`, `workspace.black.waitlist.left`
+2. **Billing and waitlist semantics**
+   - `workspace.billing.manage`, `workspace.billing.subtitle.beforeLink`, `workspace.black.waitlist.joined`, `workspace.black.waitlist.leaving`, `workspace.black.subscription.resetsIn`, `workspace.reload.enabled.after`, `workspace.payments.table.amount`
+3. **Async/action grammar correctness**
+   - `workspace.members.inviting`, all `*.saving` keys, `workspace.monthlyLimit.setting`, `workspace.newUser.step.login.before`
+4. **AI/API terminology consistency**
+   - `workspace.keys.title`, `workspace.nav.apiKeys`, `workspace.providers.table.apiKey`, `workspace.providers.title`
+5. **Minor CTA/style normalizations**
+   - `workspace.billing.addAction`, `workspace.payments.view`, `workspace.reload.disabled.before`, `workspace.reload.enabled.before`, `workspace.newUser.feature.lockin.title`
+
+---
+
+### acceptance checks for follow-up fix agent
+
+- `workspace.nav.zen` is exactly `Zen`.
+- Waitlist status strings use state semantics (`joined`, `leaving`, `left`) and preserve `OpenCode Black`.
+- Billing `reload` copy clearly means balance top-up/recharge.
+- `Chiave API` / `Chiavi API` ordering is consistent across workspace UI.
+- BYOK meaning remains explicit in provider setup title.
+- All placeholders are preserved exactly (`{{plan}}`, `{{provider}}`, `{{prefix}}`, `{{amount}}`, etc.).