summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/i18n
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-06 10:02:31 -0600
committerGitHub <[email protected]>2026-02-06 10:02:31 -0600
commit2c58dd6203df7806f57ef6b29672091cb764e871 (patch)
tree10fca96d3098465b497f78e29de8d0a585c4dac3 /packages/app/src/i18n
parenta4bc883595df9ea0f752079519081bc602408553 (diff)
downloadopencode-2c58dd6203df7806f57ef6b29672091cb764e871.tar.gz
opencode-2c58dd6203df7806f57ef6b29672091cb764e871.zip
chore: refactoring and tests, splitting up files (#12495)
Diffstat (limited to 'packages/app/src/i18n')
-rw-r--r--packages/app/src/i18n/ar.ts4
-rw-r--r--packages/app/src/i18n/br.ts4
-rw-r--r--packages/app/src/i18n/da.ts4
-rw-r--r--packages/app/src/i18n/de.ts43
-rw-r--r--packages/app/src/i18n/en.ts38
-rw-r--r--packages/app/src/i18n/es.ts4
-rw-r--r--packages/app/src/i18n/fr.ts4
-rw-r--r--packages/app/src/i18n/ja.ts4
-rw-r--r--packages/app/src/i18n/ko.ts4
-rw-r--r--packages/app/src/i18n/no.ts4
-rw-r--r--packages/app/src/i18n/parity.test.ts31
-rw-r--r--packages/app/src/i18n/pl.ts4
-rw-r--r--packages/app/src/i18n/ru.ts4
-rw-r--r--packages/app/src/i18n/th.ts4
-rw-r--r--packages/app/src/i18n/zh.ts42
-rw-r--r--packages/app/src/i18n/zht.ts42
16 files changed, 212 insertions, 28 deletions
diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts
index 35f805dbc..77a3edb06 100644
--- a/packages/app/src/i18n/ar.ts
+++ b/packages/app/src/i18n/ar.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "فتح الإعدادات",
"command.session.previous": "الجلسة السابقة",
"command.session.next": "الجلسة التالية",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "الجلسة غير المقروءة السابقة",
+ "command.session.next.unseen": "الجلسة غير المقروءة التالية",
"command.session.archive": "أرشفة الجلسة",
"command.palette": "لوحة الأوامر",
diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts
index dc8969f7b..a743a3d89 100644
--- a/packages/app/src/i18n/br.ts
+++ b/packages/app/src/i18n/br.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "Abrir configurações",
"command.session.previous": "Sessão anterior",
"command.session.next": "Próxima sessão",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "Sessão não lida anterior",
+ "command.session.next.unseen": "Próxima sessão não lida",
"command.session.archive": "Arquivar sessão",
"command.palette": "Paleta de comandos",
diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts
index 106ddcf6f..88704607b 100644
--- a/packages/app/src/i18n/da.ts
+++ b/packages/app/src/i18n/da.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "Åbn indstillinger",
"command.session.previous": "Forrige session",
"command.session.next": "Næste session",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "Forrige ulæste session",
+ "command.session.next.unseen": "Næste ulæste session",
"command.session.archive": "Arkivér session",
"command.palette": "Kommandopalette",
diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts
index a240e5475..a4d12d445 100644
--- a/packages/app/src/i18n/de.ts
+++ b/packages/app/src/i18n/de.ts
@@ -32,8 +32,8 @@ export const dict = {
"command.settings.open": "Einstellungen öffnen",
"command.session.previous": "Vorherige Sitzung",
"command.session.next": "Nächste Sitzung",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "Vorherige ungelesene Sitzung",
+ "command.session.next.unseen": "Nächste ungelesene Sitzung",
"command.session.archive": "Sitzung archivieren",
"command.palette": "Befehlspalette",
@@ -147,6 +147,44 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}} verbunden",
"provider.connect.toast.connected.description": "{{provider}} Modelle sind jetzt verfügbar.",
+ "provider.custom.title": "Benutzerdefinierter Anbieter",
+ "provider.custom.description.prefix": "Konfigurieren Sie einen OpenAI-kompatiblen Anbieter. Siehe die ",
+ "provider.custom.description.link": "Anbieter-Konfigurationsdokumente",
+ "provider.custom.description.suffix": ".",
+ "provider.custom.field.providerID.label": "Anbieter-ID",
+ "provider.custom.field.providerID.placeholder": "myprovider",
+ "provider.custom.field.providerID.description": "Kleinbuchstaben, Zahlen, Bindestriche oder Unterstriche",
+ "provider.custom.field.name.label": "Anzeigename",
+ "provider.custom.field.name.placeholder": "Mein KI-Anbieter",
+ "provider.custom.field.baseURL.label": "Basis-URL",
+ "provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
+ "provider.custom.field.apiKey.label": "API-Schlüssel",
+ "provider.custom.field.apiKey.placeholder": "API-Schlüssel",
+ "provider.custom.field.apiKey.description":
+ "Optional. Leer lassen, wenn Sie die Authentifizierung über Header verwalten.",
+ "provider.custom.models.label": "Modelle",
+ "provider.custom.models.id.label": "ID",
+ "provider.custom.models.id.placeholder": "model-id",
+ "provider.custom.models.name.label": "Name",
+ "provider.custom.models.name.placeholder": "Anzeigename",
+ "provider.custom.models.remove": "Modell entfernen",
+ "provider.custom.models.add": "Modell hinzufügen",
+ "provider.custom.headers.label": "Header (optional)",
+ "provider.custom.headers.key.label": "Header",
+ "provider.custom.headers.key.placeholder": "Header-Name",
+ "provider.custom.headers.value.label": "Wert",
+ "provider.custom.headers.value.placeholder": "wert",
+ "provider.custom.headers.remove": "Header entfernen",
+ "provider.custom.headers.add": "Header hinzufügen",
+ "provider.custom.error.providerID.required": "Anbieter-ID ist erforderlich",
+ "provider.custom.error.providerID.format": "Verwenden Sie Kleinbuchstaben, Zahlen, Bindestriche oder Unterstriche",
+ "provider.custom.error.providerID.exists": "Diese Anbieter-ID existiert bereits",
+ "provider.custom.error.name.required": "Anzeigename ist erforderlich",
+ "provider.custom.error.baseURL.required": "Basis-URL ist erforderlich",
+ "provider.custom.error.baseURL.format": "Muss mit http:// oder https:// beginnen",
+ "provider.custom.error.required": "Erforderlich",
+ "provider.custom.error.duplicate": "Duplikat",
+
"provider.disconnect.toast.disconnected.title": "{{provider}} getrennt",
"provider.disconnect.toast.disconnected.description": "Die {{provider}}-Modelle sind nicht mehr verfügbar.",
"model.tag.free": "Kostenlos",
@@ -380,6 +418,7 @@ export const dict = {
"Wurzelelement nicht gefunden. Haben Sie vergessen, es in Ihre index.html aufzunehmen? Oder wurde das id-Attribut falsch geschrieben?",
"error.globalSync.connectFailed": "Verbindung zum Server fehlgeschlagen. Läuft ein Server unter `{{url}}`?",
+ "directory.error.invalidUrl": "Ungültiges Verzeichnis in der URL.",
"error.chain.unknown": "Unbekannter Fehler",
"error.chain.causedBy": "Verursacht durch:",
diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts
index 32c4695db..4d7d571af 100644
--- a/packages/app/src/i18n/en.ts
+++ b/packages/app/src/i18n/en.ts
@@ -149,6 +149,43 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}} connected",
"provider.connect.toast.connected.description": "{{provider}} models are now available to use.",
+ "provider.custom.title": "Custom provider",
+ "provider.custom.description.prefix": "Configure an OpenAI-compatible provider. See the ",
+ "provider.custom.description.link": "provider config docs",
+ "provider.custom.description.suffix": ".",
+ "provider.custom.field.providerID.label": "Provider ID",
+ "provider.custom.field.providerID.placeholder": "myprovider",
+ "provider.custom.field.providerID.description": "Lowercase letters, numbers, hyphens, or underscores",
+ "provider.custom.field.name.label": "Display name",
+ "provider.custom.field.name.placeholder": "My AI Provider",
+ "provider.custom.field.baseURL.label": "Base URL",
+ "provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
+ "provider.custom.field.apiKey.label": "API key",
+ "provider.custom.field.apiKey.placeholder": "API key",
+ "provider.custom.field.apiKey.description": "Optional. Leave empty if you manage auth via headers.",
+ "provider.custom.models.label": "Models",
+ "provider.custom.models.id.label": "ID",
+ "provider.custom.models.id.placeholder": "model-id",
+ "provider.custom.models.name.label": "Name",
+ "provider.custom.models.name.placeholder": "Display Name",
+ "provider.custom.models.remove": "Remove model",
+ "provider.custom.models.add": "Add model",
+ "provider.custom.headers.label": "Headers (optional)",
+ "provider.custom.headers.key.label": "Header",
+ "provider.custom.headers.key.placeholder": "Header-Name",
+ "provider.custom.headers.value.label": "Value",
+ "provider.custom.headers.value.placeholder": "value",
+ "provider.custom.headers.remove": "Remove header",
+ "provider.custom.headers.add": "Add header",
+ "provider.custom.error.providerID.required": "Provider ID is required",
+ "provider.custom.error.providerID.format": "Use lowercase letters, numbers, hyphens, or underscores",
+ "provider.custom.error.providerID.exists": "That provider ID already exists",
+ "provider.custom.error.name.required": "Display name is required",
+ "provider.custom.error.baseURL.required": "Base URL is required",
+ "provider.custom.error.baseURL.format": "Must start with http:// or https://",
+ "provider.custom.error.required": "Required",
+ "provider.custom.error.duplicate": "Duplicate",
+
"provider.disconnect.toast.disconnected.title": "{{provider}} disconnected",
"provider.disconnect.toast.disconnected.description": "{{provider}} models are no longer available.",
@@ -404,6 +441,7 @@ export const dict = {
"Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?",
"error.globalSync.connectFailed": "Could not connect to server. Is there a server running at `{{url}}`?",
+ "directory.error.invalidUrl": "Invalid directory in URL.",
"error.chain.unknown": "Unknown error",
"error.chain.causedBy": "Caused by:",
diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts
index c94f407c6..5d48ba494 100644
--- a/packages/app/src/i18n/es.ts
+++ b/packages/app/src/i18n/es.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "Abrir ajustes",
"command.session.previous": "Sesión anterior",
"command.session.next": "Siguiente sesión",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "Sesión no leída anterior",
+ "command.session.next.unseen": "Siguiente sesión no leída",
"command.session.archive": "Archivar sesión",
"command.palette": "Paleta de comandos",
diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts
index f36d22804..a76e57ff1 100644
--- a/packages/app/src/i18n/fr.ts
+++ b/packages/app/src/i18n/fr.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "Ouvrir les paramètres",
"command.session.previous": "Session précédente",
"command.session.next": "Session suivante",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "Session non lue précédente",
+ "command.session.next.unseen": "Session non lue suivante",
"command.session.archive": "Archiver la session",
"command.palette": "Palette de commandes",
diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts
index c4ce4c40d..e41dea9dc 100644
--- a/packages/app/src/i18n/ja.ts
+++ b/packages/app/src/i18n/ja.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "設定を開く",
"command.session.previous": "前のセッション",
"command.session.next": "次のセッション",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "前の未読セッション",
+ "command.session.next.unseen": "次の未読セッション",
"command.session.archive": "セッションをアーカイブ",
"command.palette": "コマンドパレット",
diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts
index 2a3f4ef81..a4f42a583 100644
--- a/packages/app/src/i18n/ko.ts
+++ b/packages/app/src/i18n/ko.ts
@@ -32,8 +32,8 @@ export const dict = {
"command.settings.open": "설정 열기",
"command.session.previous": "이전 세션",
"command.session.next": "다음 세션",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "이전 읽지 않은 세션",
+ "command.session.next.unseen": "다음 읽지 않은 세션",
"command.session.archive": "세션 보관",
"command.palette": "명령 팔레트",
diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts
index 315b21f2c..3de7837f8 100644
--- a/packages/app/src/i18n/no.ts
+++ b/packages/app/src/i18n/no.ts
@@ -31,8 +31,8 @@ export const dict = {
"command.settings.open": "Åpne innstillinger",
"command.session.previous": "Forrige sesjon",
"command.session.next": "Neste sesjon",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "Forrige uleste økt",
+ "command.session.next.unseen": "Neste uleste økt",
"command.session.archive": "Arkiver sesjon",
"command.palette": "Kommandopalett",
diff --git a/packages/app/src/i18n/parity.test.ts b/packages/app/src/i18n/parity.test.ts
new file mode 100644
index 000000000..a75dbd3a3
--- /dev/null
+++ b/packages/app/src/i18n/parity.test.ts
@@ -0,0 +1,31 @@
+import { describe, expect, test } from "bun:test"
+import { dict as en } from "./en"
+import { dict as ar } from "./ar"
+import { dict as br } from "./br"
+import { dict as bs } from "./bs"
+import { dict as da } from "./da"
+import { dict as de } from "./de"
+import { dict as es } from "./es"
+import { dict as fr } from "./fr"
+import { dict as ja } from "./ja"
+import { dict as ko } from "./ko"
+import { dict as no } from "./no"
+import { dict as pl } from "./pl"
+import { dict as ru } from "./ru"
+import { dict as th } from "./th"
+import { dict as zh } from "./zh"
+import { dict as zht } from "./zht"
+
+const locales = [ar, br, bs, da, de, es, fr, ja, ko, no, pl, ru, th, zh, zht]
+const keys = ["command.session.previous.unseen", "command.session.next.unseen"] as const
+
+describe("i18n parity", () => {
+ test("non-English locales translate targeted unseen session keys", () => {
+ for (const locale of locales) {
+ for (const key of keys) {
+ expect(locale[key]).toBeDefined()
+ expect(locale[key]).not.toBe(en[key])
+ }
+ }
+ })
+})
diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts
index 46a727448..44bc4677b 100644
--- a/packages/app/src/i18n/pl.ts
+++ b/packages/app/src/i18n/pl.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "Otwórz ustawienia",
"command.session.previous": "Poprzednia sesja",
"command.session.next": "Następna sesja",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "Poprzednia nieprzeczytana sesja",
+ "command.session.next.unseen": "Następna nieprzeczytana sesja",
"command.session.archive": "Zarchiwizuj sesję",
"command.palette": "Paleta poleceń",
diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts
index e4f8b1eaa..28785c0e9 100644
--- a/packages/app/src/i18n/ru.ts
+++ b/packages/app/src/i18n/ru.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "Открыть настройки",
"command.session.previous": "Предыдущая сессия",
"command.session.next": "Следующая сессия",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "Предыдущая непрочитанная сессия",
+ "command.session.next.unseen": "Следующая непрочитанная сессия",
"command.session.archive": "Архивировать сессию",
"command.palette": "Палитра команд",
diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts
index c81b1dff3..9858f39d7 100644
--- a/packages/app/src/i18n/th.ts
+++ b/packages/app/src/i18n/th.ts
@@ -28,8 +28,8 @@ export const dict = {
"command.settings.open": "เปิดการตั้งค่า",
"command.session.previous": "เซสชันก่อนหน้า",
"command.session.next": "เซสชันถัดไป",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "เซสชันที่ยังไม่ได้อ่านก่อนหน้า",
+ "command.session.next.unseen": "เซสชันที่ยังไม่ได้อ่านถัดไป",
"command.session.archive": "จัดเก็บเซสชัน",
"command.palette": "คำสั่งค้นหา",
diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts
index c3b87525c..a8fda6f3a 100644
--- a/packages/app/src/i18n/zh.ts
+++ b/packages/app/src/i18n/zh.ts
@@ -32,8 +32,8 @@ export const dict = {
"command.settings.open": "打开设置",
"command.session.previous": "上一个会话",
"command.session.next": "下一个会话",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "上一个未读会话",
+ "command.session.next.unseen": "下一个未读会话",
"command.session.archive": "归档会话",
"command.palette": "命令面板",
@@ -147,6 +147,43 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}} 已连接",
"provider.connect.toast.connected.description": "现在可以使用 {{provider}} 模型了。",
+ "provider.custom.title": "自定义提供商",
+ "provider.custom.description.prefix": "配置与 OpenAI 兼容的提供商。请查看",
+ "provider.custom.description.link": "提供商配置文档",
+ "provider.custom.description.suffix": "。",
+ "provider.custom.field.providerID.label": "提供商 ID",
+ "provider.custom.field.providerID.placeholder": "myprovider",
+ "provider.custom.field.providerID.description": "使用小写字母、数字、连字符或下划线",
+ "provider.custom.field.name.label": "显示名称",
+ "provider.custom.field.name.placeholder": "我的 AI 提供商",
+ "provider.custom.field.baseURL.label": "基础 URL",
+ "provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
+ "provider.custom.field.apiKey.label": "API 密钥",
+ "provider.custom.field.apiKey.placeholder": "API 密钥",
+ "provider.custom.field.apiKey.description": "可选。如果你通过请求头管理认证,可留空。",
+ "provider.custom.models.label": "模型",
+ "provider.custom.models.id.label": "ID",
+ "provider.custom.models.id.placeholder": "model-id",
+ "provider.custom.models.name.label": "名称",
+ "provider.custom.models.name.placeholder": "显示名称",
+ "provider.custom.models.remove": "移除模型",
+ "provider.custom.models.add": "添加模型",
+ "provider.custom.headers.label": "请求头(可选)",
+ "provider.custom.headers.key.label": "请求头",
+ "provider.custom.headers.key.placeholder": "Header-Name",
+ "provider.custom.headers.value.label": "值",
+ "provider.custom.headers.value.placeholder": "value",
+ "provider.custom.headers.remove": "移除请求头",
+ "provider.custom.headers.add": "添加请求头",
+ "provider.custom.error.providerID.required": "提供商 ID 为必填项",
+ "provider.custom.error.providerID.format": "请使用小写字母、数字、连字符或下划线",
+ "provider.custom.error.providerID.exists": "该提供商 ID 已存在",
+ "provider.custom.error.name.required": "显示名称为必填项",
+ "provider.custom.error.baseURL.required": "基础 URL 为必填项",
+ "provider.custom.error.baseURL.format": "必须以 http:// 或 https:// 开头",
+ "provider.custom.error.required": "必填",
+ "provider.custom.error.duplicate": "重复",
+
"provider.disconnect.toast.disconnected.title": "{{provider}} 已断开连接",
"provider.disconnect.toast.disconnected.description": "{{provider}} 模型已不再可用。",
"model.tag.free": "免费",
@@ -380,6 +417,7 @@ export const dict = {
"error.dev.rootNotFound": "未找到根元素。你是不是忘了把它添加到 index.html?或者 id 属性拼写错了?",
"error.globalSync.connectFailed": "无法连接到服务器。是否有服务器正在 `{{url}}` 运行?",
+ "directory.error.invalidUrl": "URL 中的目录无效。",
"error.chain.unknown": "未知错误",
"error.chain.causedBy": "原因:",
diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts
index 7be29f036..319f5c51d 100644
--- a/packages/app/src/i18n/zht.ts
+++ b/packages/app/src/i18n/zht.ts
@@ -32,8 +32,8 @@ export const dict = {
"command.settings.open": "開啟設定",
"command.session.previous": "上一個工作階段",
"command.session.next": "下一個工作階段",
- "command.session.previous.unseen": "Previous unread session",
- "command.session.next.unseen": "Next unread session",
+ "command.session.previous.unseen": "上一個未讀會話",
+ "command.session.next.unseen": "下一個未讀會話",
"command.session.archive": "封存工作階段",
"command.palette": "命令面板",
@@ -144,6 +144,43 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}} 已連線",
"provider.connect.toast.connected.description": "現在可以使用 {{provider}} 模型了。",
+ "provider.custom.title": "自訂提供商",
+ "provider.custom.description.prefix": "設定與 OpenAI 相容的提供商。請參閱",
+ "provider.custom.description.link": "提供商設定文件",
+ "provider.custom.description.suffix": "。",
+ "provider.custom.field.providerID.label": "提供商 ID",
+ "provider.custom.field.providerID.placeholder": "myprovider",
+ "provider.custom.field.providerID.description": "使用小寫字母、數字、連字號或底線",
+ "provider.custom.field.name.label": "顯示名稱",
+ "provider.custom.field.name.placeholder": "我的 AI 提供商",
+ "provider.custom.field.baseURL.label": "基礎 URL",
+ "provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
+ "provider.custom.field.apiKey.label": "API 金鑰",
+ "provider.custom.field.apiKey.placeholder": "API 金鑰",
+ "provider.custom.field.apiKey.description": "選填。若您透過標頭管理驗證,可留空。",
+ "provider.custom.models.label": "模型",
+ "provider.custom.models.id.label": "ID",
+ "provider.custom.models.id.placeholder": "model-id",
+ "provider.custom.models.name.label": "名稱",
+ "provider.custom.models.name.placeholder": "顯示名稱",
+ "provider.custom.models.remove": "移除模型",
+ "provider.custom.models.add": "新增模型",
+ "provider.custom.headers.label": "標頭(選填)",
+ "provider.custom.headers.key.label": "標頭",
+ "provider.custom.headers.key.placeholder": "Header-Name",
+ "provider.custom.headers.value.label": "值",
+ "provider.custom.headers.value.placeholder": "value",
+ "provider.custom.headers.remove": "移除標頭",
+ "provider.custom.headers.add": "新增標頭",
+ "provider.custom.error.providerID.required": "提供商 ID 為必填",
+ "provider.custom.error.providerID.format": "請使用小寫字母、數字、連字號或底線",
+ "provider.custom.error.providerID.exists": "該提供商 ID 已存在",
+ "provider.custom.error.name.required": "顯示名稱為必填",
+ "provider.custom.error.baseURL.required": "基礎 URL 為必填",
+ "provider.custom.error.baseURL.format": "必須以 http:// 或 https:// 開頭",
+ "provider.custom.error.required": "必填",
+ "provider.custom.error.duplicate": "重複",
+
"provider.disconnect.toast.disconnected.title": "{{provider}} 已中斷連線",
"provider.disconnect.toast.disconnected.description": "{{provider}} 模型已不再可用。",
"model.tag.free": "免費",
@@ -377,6 +414,7 @@ export const dict = {
"error.dev.rootNotFound": "找不到根元素。你是不是忘了把它新增到 index.html? 或者 id 屬性拼錯了?",
"error.globalSync.connectFailed": "無法連線到伺服器。是否有伺服器正在 `{{url}}` 執行?",
+ "directory.error.invalidUrl": "URL 中的目錄無效。",
"error.chain.unknown": "未知錯誤",
"error.chain.causedBy": "原因:",