chore: refactoring and tests, splitting up files (#12495)
This commit is contained in:
@@ -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": "لوحة الأوامر",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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:",
|
||||
|
||||
@@ -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:",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "コマンドパレット",
|
||||
|
||||
@@ -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": "명령 팔레트",
|
||||
|
||||
@@ -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",
|
||||
|
||||
31
packages/app/src/i18n/parity.test.ts
Normal file
31
packages/app/src/i18n/parity.test.ts
Normal file
@@ -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])
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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ń",
|
||||
|
||||
@@ -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": "Палитра команд",
|
||||
|
||||
@@ -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": "คำสั่งค้นหา",
|
||||
|
||||
@@ -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": "原因:",
|
||||
|
||||
@@ -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": "原因:",
|
||||
|
||||
Reference in New Issue
Block a user