fix(console): zen workspace translation cleanup
This commit is contained in:
@@ -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": "غادر",
|
||||
|
||||
@@ -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":
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
specs/19-workspace-i18n-audit-overview.md
Normal file
76
specs/19-workspace-i18n-audit-overview.md
Normal file
@@ -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
specs/20-workspace-i18n-audit-ar.md
Normal file
99
specs/20-workspace-i18n-audit-ar.md
Normal file
@@ -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
specs/21-workspace-i18n-audit-da.md
Normal file
103
specs/21-workspace-i18n-audit-da.md
Normal file
@@ -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
specs/22-workspace-i18n-audit-de.md
Normal file
95
specs/22-workspace-i18n-audit-de.md
Normal file
@@ -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
specs/23-workspace-i18n-audit-it.md
Normal file
86
specs/23-workspace-i18n-audit-it.md
Normal file
@@ -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.).
|
||||
Reference in New Issue
Block a user