mirror of
https://github.com/ZSeven-W/openpencil.git
synced 2026-05-31 19:04:29 +07:00
Add five native-platform features to the winit desktop host (op-host-desktop), closing the gap with the Electron app: - Native menu bar (muda) — File / Edit / View / Help plus the macOS app menu; selections route to the same host actions the keyboard shortcuts use. Gated to macOS / Windows — muda needs GTK, which this winit build does not link, so Linux keeps the in-canvas File menu. - Auto-update — a background probe of the GitHub releases API reports status into the settings System tab; a found update offers to open the download page, and a "Check for Updates" menu item re-runs the probe. - File association — argv parsing opens a .op / .pen document on launch; [package.metadata.bundle] declares the OS-level handler. - Window-state persistence — position / size / maximized restore across restarts, with an off-screen guard for monitor changes. - Drag-and-drop — dropping a .op / .pen file opens it. Codex review round 1 findings (1 MAJOR + 3 MINOR) all addressed: monitor-aware restore, failed-startup geometry guard, single-flight update probe, case-insensitive extension match. Also sink the agent-settings modal's hand-maintained EN/ZH string table into the canonical 15-locale op-i18n tables, so the settings chrome (including the new auto-update strings) is fully translated; agent_settings_i18n.rs is now a thin op-i18n adapter. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
924 lines
58 KiB
Python
924 lines
58 KiB
Python
#!/usr/bin/env python3
|
||
"""One-shot: merge the settings-modal `settings.*` strings into the
|
||
15 canonical op-i18n locale tables.
|
||
|
||
The agent-settings modal strings used to live in a hand-maintained
|
||
EN/ZH table (`agent_settings_i18n.rs`). They are now sunk into the
|
||
canonical op-i18n tables so every one of the 15 locales is covered.
|
||
|
||
`settings.title` is intentionally NOT inserted: it already exists in
|
||
op-i18n; re-adding it would create a duplicate match arm.
|
||
|
||
Idempotent: skips a file that already carries `settings.tab.agents`.
|
||
"""
|
||
|
||
import os
|
||
import re
|
||
|
||
I18N_DIR = os.path.join(os.path.dirname(__file__), "..", "crates", "op-i18n", "src", "i18n")
|
||
|
||
# Ordered key list — keeps the emitted block stable across runs.
|
||
KEYS = [
|
||
"settings.tab.agents", "settings.tab.mcp", "settings.tab.images", "settings.tab.system",
|
||
"settings.agents.builtin", "settings.agents.builtinSubtitle", "settings.agents.builtinEmpty",
|
||
"settings.agents.addProvider", "settings.agents.acp", "settings.agents.acpSubtitle",
|
||
"settings.agents.acpEmpty", "settings.agents.addAcp", "settings.agents.title",
|
||
"settings.agents.connect", "settings.agents.disconnect", "settings.agents.claudeHint",
|
||
"settings.mcp.server", "settings.mcp.running", "settings.mcp.stopped", "settings.mcp.port",
|
||
"settings.mcp.start", "settings.mcp.stop", "settings.mcp.terminalIntegrations",
|
||
"settings.mcp.terminalSubtitle1", "settings.mcp.terminalSubtitle2",
|
||
"settings.images.search", "settings.images.ready", "settings.images.notConfigured",
|
||
"settings.images.advanced", "settings.images.oauthLabel", "settings.images.clientId",
|
||
"settings.images.clientSecret", "settings.images.clientIdPlaceholder",
|
||
"settings.images.clientSecretPlaceholder", "settings.images.registerLink",
|
||
"settings.images.test", "settings.images.generation", "settings.images.add",
|
||
"settings.images.empty", "settings.provider.claudeCode", "settings.provider.codexCli",
|
||
"settings.provider.openCode", "settings.provider.githubCopilot", "settings.provider.geminiCli",
|
||
"settings.system.title", "settings.system.autoUpdate", "settings.system.upToDate",
|
||
"settings.system.upToDateDescription", "settings.system.checking",
|
||
"settings.system.checkingDescription", "settings.system.updateAvailable",
|
||
"settings.system.updateAvailableDescription", "settings.system.idle",
|
||
"settings.system.idleDescription", "settings.system.errorStatus",
|
||
"settings.system.errorDescription", "settings.system.currentVersion",
|
||
]
|
||
|
||
EN = {
|
||
"settings.tab.agents": "Agents",
|
||
"settings.tab.mcp": "MCP",
|
||
"settings.tab.images": "Images",
|
||
"settings.tab.system": "System",
|
||
"settings.agents.builtin": "Built-in providers",
|
||
"settings.agents.builtinSubtitle": "Configure API keys directly — no CLI tools needed.",
|
||
"settings.agents.builtinEmpty": "No built-in providers configured.",
|
||
"settings.agents.addProvider": "+ Add provider",
|
||
"settings.agents.acp": "ACP Agent",
|
||
"settings.agents.acpSubtitle": "Connect external ACP-compatible Agents.",
|
||
"settings.agents.acpEmpty": "No ACP Agents configured.",
|
||
"settings.agents.addAcp": "+ Add Agent",
|
||
"settings.agents.title": "Agents",
|
||
"settings.agents.connect": "Connect",
|
||
"settings.agents.disconnect": "Disconnect",
|
||
"settings.agents.claudeHint": "You can set additional environment variables in ~/.claude/settings.json.",
|
||
"settings.mcp.server": "MCP Server",
|
||
"settings.mcp.running": "Running",
|
||
"settings.mcp.stopped": "Stopped",
|
||
"settings.mcp.port": "Port",
|
||
"settings.mcp.start": "Start",
|
||
"settings.mcp.stop": "Stop",
|
||
"settings.mcp.terminalIntegrations": "Terminal MCP integrations",
|
||
"settings.mcp.terminalSubtitle1": "MCP integrations take effect after restarting the terminal.",
|
||
"settings.mcp.terminalSubtitle2": "After upgrading OpenPencil, please reinstall MCP integrations for compatibility.",
|
||
"settings.images.search": "Image Search",
|
||
"settings.images.ready": "Ready",
|
||
"settings.images.notConfigured": "Not configured",
|
||
"settings.images.advanced": "Advanced",
|
||
"settings.images.oauthLabel": "Openverse OAuth (optional, for higher rate limits)",
|
||
"settings.images.clientId": "Client ID",
|
||
"settings.images.clientSecret": "Client Secret",
|
||
"settings.images.clientIdPlaceholder": "your-client-id",
|
||
"settings.images.clientSecretPlaceholder": "your-client-secret",
|
||
"settings.images.registerLink": "Register at Openverse",
|
||
"settings.images.test": "Test",
|
||
"settings.images.generation": "Image Generation",
|
||
"settings.images.add": "+ Add",
|
||
"settings.images.empty": 'No configurations yet. Click "Add" to create one.',
|
||
"settings.provider.claudeCode": "Claude model",
|
||
"settings.provider.codexCli": "OpenAI models",
|
||
"settings.provider.openCode": "75+ LLM providers",
|
||
"settings.provider.githubCopilot": "GitHub Copilot models",
|
||
"settings.provider.geminiCli": "Google Gemini models",
|
||
"settings.system.title": "System",
|
||
"settings.system.autoUpdate": "Auto-update",
|
||
"settings.system.upToDate": "Up to date",
|
||
"settings.system.upToDateDescription": "Running the latest published release.",
|
||
"settings.system.checking": "Checking…",
|
||
"settings.system.checkingDescription": "Contacting the release server for the latest version.",
|
||
"settings.system.updateAvailable": "Update available",
|
||
"settings.system.updateAvailableDescription": "Use “Check for Updates” in the menu to open the download page.",
|
||
"settings.system.idle": "Not checked yet",
|
||
"settings.system.idleDescription": "An update check runs automatically shortly after launch.",
|
||
"settings.system.errorStatus": "Check failed",
|
||
"settings.system.errorDescription": "Couldn't reach the release server — check your connection.",
|
||
"settings.system.currentVersion": "Current version",
|
||
}
|
||
|
||
ZH_CN = {
|
||
"settings.tab.system": "系统",
|
||
"settings.agents.builtin": "内置服务商",
|
||
"settings.agents.builtinSubtitle": "直接配置 API 密钥 — 无需 CLI 工具。",
|
||
"settings.agents.builtinEmpty": "尚未配置内置服务商。",
|
||
"settings.agents.addProvider": "+ 添加服务商",
|
||
"settings.agents.acpSubtitle": "连接外部 ACP 兼容的 Agent。",
|
||
"settings.agents.acpEmpty": "尚未配置 ACP Agent。",
|
||
"settings.agents.addAcp": "+ 添加 Agent",
|
||
"settings.agents.connect": "连接",
|
||
"settings.agents.disconnect": "断开连接",
|
||
"settings.agents.claudeHint": "你可以在 ~/.claude/settings.json 中设置额外的环境变量。",
|
||
"settings.mcp.server": "MCP 服务器",
|
||
"settings.mcp.running": "运行中",
|
||
"settings.mcp.stopped": "已停止",
|
||
"settings.mcp.port": "端口",
|
||
"settings.mcp.start": "启动",
|
||
"settings.mcp.stop": "停止",
|
||
"settings.mcp.terminalIntegrations": "终端中的 MCP 集成",
|
||
"settings.mcp.terminalSubtitle1": "MCP 集成将在重启终端后生效。",
|
||
"settings.mcp.terminalSubtitle2": "升级 OpenPencil 版本后,请重新安装 MCP 集成以确保兼容性。",
|
||
"settings.images.search": "图片搜索",
|
||
"settings.images.ready": "已就绪",
|
||
"settings.images.notConfigured": "尚未配置",
|
||
"settings.images.advanced": "高级",
|
||
"settings.images.oauthLabel": "Openverse OAuth(可选,用于提升速率限制)",
|
||
"settings.images.clientId": "客户端 ID",
|
||
"settings.images.clientSecret": "客户端密钥",
|
||
"settings.images.registerLink": "在 Openverse 注册",
|
||
"settings.images.test": "测试",
|
||
"settings.images.generation": "图片生成",
|
||
"settings.images.add": "+ 添加",
|
||
"settings.images.empty": "尚无配置。点击“添加”创建一个。",
|
||
"settings.provider.claudeCode": "Claude 模型",
|
||
"settings.provider.codexCli": "OpenAI 模型",
|
||
"settings.provider.openCode": "75+ LLM 提供商",
|
||
"settings.provider.githubCopilot": "GitHub Copilot 模型",
|
||
"settings.provider.geminiCli": "Google Gemini 模型",
|
||
"settings.system.title": "系统",
|
||
"settings.system.autoUpdate": "自动更新",
|
||
"settings.system.upToDate": "已是最新",
|
||
"settings.system.upToDateDescription": "当前已是最新发布版本。",
|
||
"settings.system.checking": "检查中…",
|
||
"settings.system.checkingDescription": "正在向发布服务器查询最新版本。",
|
||
"settings.system.updateAvailable": "有可用更新",
|
||
"settings.system.updateAvailableDescription": "使用菜单中的“检查更新”打开下载页面。",
|
||
"settings.system.idle": "尚未检查",
|
||
"settings.system.idleDescription": "启动后将自动检查更新。",
|
||
"settings.system.errorStatus": "检查失败",
|
||
"settings.system.errorDescription": "无法连接发布服务器,请检查网络连接。",
|
||
"settings.system.currentVersion": "当前版本",
|
||
}
|
||
|
||
ZH_TW = {
|
||
"settings.tab.system": "系統",
|
||
"settings.agents.builtin": "內建服務商",
|
||
"settings.agents.builtinSubtitle": "直接設定 API 金鑰 — 無需 CLI 工具。",
|
||
"settings.agents.builtinEmpty": "尚未設定內建服務商。",
|
||
"settings.agents.addProvider": "+ 新增服務商",
|
||
"settings.agents.acpSubtitle": "連接外部 ACP 相容的 Agent。",
|
||
"settings.agents.acpEmpty": "尚未設定 ACP Agent。",
|
||
"settings.agents.addAcp": "+ 新增 Agent",
|
||
"settings.agents.connect": "連接",
|
||
"settings.agents.disconnect": "中斷連線",
|
||
"settings.agents.claudeHint": "你可以在 ~/.claude/settings.json 中設定額外的環境變數。",
|
||
"settings.mcp.server": "MCP 伺服器",
|
||
"settings.mcp.running": "執行中",
|
||
"settings.mcp.stopped": "已停止",
|
||
"settings.mcp.port": "連接埠",
|
||
"settings.mcp.start": "啟動",
|
||
"settings.mcp.stop": "停止",
|
||
"settings.mcp.terminalIntegrations": "終端機中的 MCP 整合",
|
||
"settings.mcp.terminalSubtitle1": "MCP 整合將在重新啟動終端機後生效。",
|
||
"settings.mcp.terminalSubtitle2": "升級 OpenPencil 版本後,請重新安裝 MCP 整合以確保相容性。",
|
||
"settings.images.search": "圖片搜尋",
|
||
"settings.images.ready": "已就緒",
|
||
"settings.images.notConfigured": "尚未設定",
|
||
"settings.images.advanced": "進階",
|
||
"settings.images.oauthLabel": "Openverse OAuth(選用,用於提升速率限制)",
|
||
"settings.images.clientId": "用戶端 ID",
|
||
"settings.images.clientSecret": "用戶端密鑰",
|
||
"settings.images.registerLink": "在 Openverse 註冊",
|
||
"settings.images.test": "測試",
|
||
"settings.images.generation": "圖片生成",
|
||
"settings.images.add": "+ 新增",
|
||
"settings.images.empty": "尚無設定。點擊「新增」建立一個。",
|
||
"settings.provider.claudeCode": "Claude 模型",
|
||
"settings.provider.codexCli": "OpenAI 模型",
|
||
"settings.provider.openCode": "75+ LLM 供應商",
|
||
"settings.provider.githubCopilot": "GitHub Copilot 模型",
|
||
"settings.provider.geminiCli": "Google Gemini 模型",
|
||
"settings.system.title": "系統",
|
||
"settings.system.autoUpdate": "自動更新",
|
||
"settings.system.upToDate": "已是最新",
|
||
"settings.system.upToDateDescription": "目前已是最新發行版本。",
|
||
"settings.system.checking": "檢查中…",
|
||
"settings.system.checkingDescription": "正在向發行伺服器查詢最新版本。",
|
||
"settings.system.updateAvailable": "有可用更新",
|
||
"settings.system.updateAvailableDescription": "使用選單中的「檢查更新」開啟下載頁面。",
|
||
"settings.system.idle": "尚未檢查",
|
||
"settings.system.idleDescription": "啟動後將自動檢查更新。",
|
||
"settings.system.errorStatus": "檢查失敗",
|
||
"settings.system.errorDescription": "無法連線發行伺服器,請檢查網路連線。",
|
||
"settings.system.currentVersion": "目前版本",
|
||
}
|
||
|
||
JA = {
|
||
"settings.tab.images": "画像",
|
||
"settings.tab.system": "システム",
|
||
"settings.agents.builtin": "組み込みプロバイダー",
|
||
"settings.agents.builtinSubtitle": "API キーを直接設定 — CLI ツールは不要です。",
|
||
"settings.agents.builtinEmpty": "組み込みプロバイダーが設定されていません。",
|
||
"settings.agents.addProvider": "+ プロバイダーを追加",
|
||
"settings.agents.acp": "ACP エージェント",
|
||
"settings.agents.acpSubtitle": "外部の ACP 対応エージェントに接続します。",
|
||
"settings.agents.acpEmpty": "ACP エージェントが設定されていません。",
|
||
"settings.agents.addAcp": "+ エージェントを追加",
|
||
"settings.agents.connect": "接続",
|
||
"settings.agents.disconnect": "切断",
|
||
"settings.agents.claudeHint": "~/.claude/settings.json で追加の環境変数を設定できます。",
|
||
"settings.mcp.server": "MCP サーバー",
|
||
"settings.mcp.running": "実行中",
|
||
"settings.mcp.stopped": "停止",
|
||
"settings.mcp.port": "ポート",
|
||
"settings.mcp.start": "開始",
|
||
"settings.mcp.stop": "停止",
|
||
"settings.mcp.terminalIntegrations": "ターミナルの MCP 連携",
|
||
"settings.mcp.terminalSubtitle1": "MCP 連携はターミナルの再起動後に有効になります。",
|
||
"settings.mcp.terminalSubtitle2": "OpenPencil をアップグレードした後は、互換性のため MCP 連携を再インストールしてください。",
|
||
"settings.images.search": "画像検索",
|
||
"settings.images.ready": "準備完了",
|
||
"settings.images.notConfigured": "未設定",
|
||
"settings.images.advanced": "詳細設定",
|
||
"settings.images.oauthLabel": "Openverse OAuth(任意、レート制限の緩和用)",
|
||
"settings.images.clientId": "クライアント ID",
|
||
"settings.images.clientSecret": "クライアントシークレット",
|
||
"settings.images.registerLink": "Openverse で登録",
|
||
"settings.images.test": "テスト",
|
||
"settings.images.generation": "画像生成",
|
||
"settings.images.add": "+ 追加",
|
||
"settings.images.empty": "設定がまだありません。「追加」をクリックして作成してください。",
|
||
"settings.provider.claudeCode": "Claude モデル",
|
||
"settings.provider.codexCli": "OpenAI モデル",
|
||
"settings.provider.openCode": "75+ の LLM プロバイダー",
|
||
"settings.provider.githubCopilot": "GitHub Copilot モデル",
|
||
"settings.provider.geminiCli": "Google Gemini モデル",
|
||
"settings.system.title": "システム",
|
||
"settings.system.autoUpdate": "自動更新",
|
||
"settings.system.upToDate": "最新です",
|
||
"settings.system.upToDateDescription": "最新の公開リリースを使用しています。",
|
||
"settings.system.checking": "確認中…",
|
||
"settings.system.checkingDescription": "最新バージョンをリリースサーバーに問い合わせています。",
|
||
"settings.system.updateAvailable": "更新があります",
|
||
"settings.system.updateAvailableDescription": "メニューの「更新を確認」からダウンロードページを開きます。",
|
||
"settings.system.idle": "未確認",
|
||
"settings.system.idleDescription": "起動後まもなく更新が自動的に確認されます。",
|
||
"settings.system.errorStatus": "確認に失敗",
|
||
"settings.system.errorDescription": "リリースサーバーに接続できません。接続を確認してください。",
|
||
"settings.system.currentVersion": "現在のバージョン",
|
||
}
|
||
|
||
KO = {
|
||
"settings.tab.images": "이미지",
|
||
"settings.tab.system": "시스템",
|
||
"settings.agents.builtin": "내장 제공자",
|
||
"settings.agents.builtinSubtitle": "API 키를 직접 구성 — CLI 도구가 필요 없습니다.",
|
||
"settings.agents.builtinEmpty": "구성된 내장 제공자가 없습니다.",
|
||
"settings.agents.addProvider": "+ 제공자 추가",
|
||
"settings.agents.acp": "ACP 에이전트",
|
||
"settings.agents.acpSubtitle": "외부 ACP 호환 에이전트를 연결합니다.",
|
||
"settings.agents.acpEmpty": "구성된 ACP 에이전트가 없습니다.",
|
||
"settings.agents.addAcp": "+ 에이전트 추가",
|
||
"settings.agents.connect": "연결",
|
||
"settings.agents.disconnect": "연결 해제",
|
||
"settings.agents.claudeHint": "~/.claude/settings.json에서 추가 환경 변수를 설정할 수 있습니다.",
|
||
"settings.mcp.server": "MCP 서버",
|
||
"settings.mcp.running": "실행 중",
|
||
"settings.mcp.stopped": "중지됨",
|
||
"settings.mcp.port": "포트",
|
||
"settings.mcp.start": "시작",
|
||
"settings.mcp.stop": "중지",
|
||
"settings.mcp.terminalIntegrations": "터미널 MCP 통합",
|
||
"settings.mcp.terminalSubtitle1": "MCP 통합은 터미널을 다시 시작한 후 적용됩니다.",
|
||
"settings.mcp.terminalSubtitle2": "OpenPencil 업그레이드 후 호환성을 위해 MCP 통합을 다시 설치하세요.",
|
||
"settings.images.search": "이미지 검색",
|
||
"settings.images.ready": "준비됨",
|
||
"settings.images.notConfigured": "구성되지 않음",
|
||
"settings.images.advanced": "고급",
|
||
"settings.images.oauthLabel": "Openverse OAuth(선택 사항, 더 높은 속도 제한용)",
|
||
"settings.images.clientId": "클라이언트 ID",
|
||
"settings.images.clientSecret": "클라이언트 시크릿",
|
||
"settings.images.registerLink": "Openverse에서 등록",
|
||
"settings.images.test": "테스트",
|
||
"settings.images.generation": "이미지 생성",
|
||
"settings.images.add": "+ 추가",
|
||
"settings.images.empty": "아직 구성이 없습니다. “추가”를 클릭하여 만드세요.",
|
||
"settings.provider.claudeCode": "Claude 모델",
|
||
"settings.provider.codexCli": "OpenAI 모델",
|
||
"settings.provider.openCode": "75개 이상의 LLM 제공자",
|
||
"settings.provider.githubCopilot": "GitHub Copilot 모델",
|
||
"settings.provider.geminiCli": "Google Gemini 모델",
|
||
"settings.system.title": "시스템",
|
||
"settings.system.autoUpdate": "자동 업데이트",
|
||
"settings.system.upToDate": "최신 상태",
|
||
"settings.system.upToDateDescription": "최신 배포 릴리스를 실행 중입니다.",
|
||
"settings.system.checking": "확인 중…",
|
||
"settings.system.checkingDescription": "릴리스 서버에 최신 버전을 요청하는 중입니다.",
|
||
"settings.system.updateAvailable": "업데이트 사용 가능",
|
||
"settings.system.updateAvailableDescription": "메뉴의 “업데이트 확인”으로 다운로드 페이지를 엽니다.",
|
||
"settings.system.idle": "아직 확인하지 않음",
|
||
"settings.system.idleDescription": "시작 직후 업데이트 확인이 자동으로 실행됩니다.",
|
||
"settings.system.errorStatus": "확인 실패",
|
||
"settings.system.errorDescription": "릴리스 서버에 연결할 수 없습니다. 연결을 확인하세요.",
|
||
"settings.system.currentVersion": "현재 버전",
|
||
}
|
||
|
||
FR = {
|
||
"settings.tab.system": "Système",
|
||
"settings.agents.builtin": "Fournisseurs intégrés",
|
||
"settings.agents.builtinSubtitle": "Configurez les clés API directement — aucun outil CLI requis.",
|
||
"settings.agents.builtinEmpty": "Aucun fournisseur intégré configuré.",
|
||
"settings.agents.addProvider": "+ Ajouter un fournisseur",
|
||
"settings.agents.acp": "Agent ACP",
|
||
"settings.agents.acpSubtitle": "Connectez des agents externes compatibles ACP.",
|
||
"settings.agents.acpEmpty": "Aucun agent ACP configuré.",
|
||
"settings.agents.addAcp": "+ Ajouter un agent",
|
||
"settings.agents.connect": "Connecter",
|
||
"settings.agents.disconnect": "Déconnecter",
|
||
"settings.agents.claudeHint": "Vous pouvez définir des variables d'environnement supplémentaires dans ~/.claude/settings.json.",
|
||
"settings.mcp.server": "Serveur MCP",
|
||
"settings.mcp.running": "En cours d'exécution",
|
||
"settings.mcp.stopped": "Arrêté",
|
||
"settings.mcp.port": "Port",
|
||
"settings.mcp.start": "Démarrer",
|
||
"settings.mcp.stop": "Arrêter",
|
||
"settings.mcp.terminalIntegrations": "Intégrations MCP du terminal",
|
||
"settings.mcp.terminalSubtitle1": "Les intégrations MCP prennent effet après le redémarrage du terminal.",
|
||
"settings.mcp.terminalSubtitle2": "Après la mise à niveau d'OpenPencil, veuillez réinstaller les intégrations MCP pour la compatibilité.",
|
||
"settings.images.search": "Recherche d'images",
|
||
"settings.images.ready": "Prêt",
|
||
"settings.images.notConfigured": "Non configuré",
|
||
"settings.images.advanced": "Avancé",
|
||
"settings.images.oauthLabel": "Openverse OAuth (facultatif, pour des limites de débit plus élevées)",
|
||
"settings.images.clientId": "ID client",
|
||
"settings.images.clientSecret": "Secret client",
|
||
"settings.images.registerLink": "S'inscrire sur Openverse",
|
||
"settings.images.test": "Tester",
|
||
"settings.images.generation": "Génération d'images",
|
||
"settings.images.add": "+ Ajouter",
|
||
"settings.images.empty": "Aucune configuration pour l'instant. Cliquez sur « Ajouter » pour en créer une.",
|
||
"settings.provider.claudeCode": "Modèle Claude",
|
||
"settings.provider.codexCli": "Modèles OpenAI",
|
||
"settings.provider.openCode": "Plus de 75 fournisseurs de LLM",
|
||
"settings.provider.githubCopilot": "Modèles GitHub Copilot",
|
||
"settings.provider.geminiCli": "Modèles Google Gemini",
|
||
"settings.system.title": "Système",
|
||
"settings.system.autoUpdate": "Mise à jour automatique",
|
||
"settings.system.upToDate": "À jour",
|
||
"settings.system.upToDateDescription": "Vous utilisez la dernière version publiée.",
|
||
"settings.system.checking": "Vérification…",
|
||
"settings.system.checkingDescription": "Contact du serveur de versions pour la dernière version.",
|
||
"settings.system.updateAvailable": "Mise à jour disponible",
|
||
"settings.system.updateAvailableDescription": "Utilisez « Rechercher les mises à jour » dans le menu pour ouvrir la page de téléchargement.",
|
||
"settings.system.idle": "Pas encore vérifié",
|
||
"settings.system.idleDescription": "Une vérification des mises à jour s'exécute automatiquement peu après le lancement.",
|
||
"settings.system.errorStatus": "Échec de la vérification",
|
||
"settings.system.errorDescription": "Impossible de joindre le serveur de versions — vérifiez votre connexion.",
|
||
"settings.system.currentVersion": "Version actuelle",
|
||
}
|
||
|
||
ES = {
|
||
"settings.tab.images": "Imágenes",
|
||
"settings.tab.system": "Sistema",
|
||
"settings.agents.builtin": "Proveedores integrados",
|
||
"settings.agents.builtinSubtitle": "Configura las claves de API directamente — no se necesitan herramientas CLI.",
|
||
"settings.agents.builtinEmpty": "No hay proveedores integrados configurados.",
|
||
"settings.agents.addProvider": "+ Añadir proveedor",
|
||
"settings.agents.acp": "Agente ACP",
|
||
"settings.agents.acpSubtitle": "Conecta agentes externos compatibles con ACP.",
|
||
"settings.agents.acpEmpty": "No hay agentes ACP configurados.",
|
||
"settings.agents.addAcp": "+ Añadir agente",
|
||
"settings.agents.connect": "Conectar",
|
||
"settings.agents.disconnect": "Desconectar",
|
||
"settings.agents.claudeHint": "Puedes definir variables de entorno adicionales en ~/.claude/settings.json.",
|
||
"settings.mcp.server": "Servidor MCP",
|
||
"settings.mcp.running": "En ejecución",
|
||
"settings.mcp.stopped": "Detenido",
|
||
"settings.mcp.port": "Puerto",
|
||
"settings.mcp.start": "Iniciar",
|
||
"settings.mcp.stop": "Detener",
|
||
"settings.mcp.terminalIntegrations": "Integraciones MCP de terminal",
|
||
"settings.mcp.terminalSubtitle1": "Las integraciones MCP surten efecto tras reiniciar la terminal.",
|
||
"settings.mcp.terminalSubtitle2": "Después de actualizar OpenPencil, reinstala las integraciones MCP para garantizar la compatibilidad.",
|
||
"settings.images.search": "Búsqueda de imágenes",
|
||
"settings.images.ready": "Listo",
|
||
"settings.images.notConfigured": "Sin configurar",
|
||
"settings.images.advanced": "Avanzado",
|
||
"settings.images.oauthLabel": "Openverse OAuth (opcional, para límites de tasa más altos)",
|
||
"settings.images.clientId": "ID de cliente",
|
||
"settings.images.clientSecret": "Secreto de cliente",
|
||
"settings.images.registerLink": "Registrarse en Openverse",
|
||
"settings.images.test": "Probar",
|
||
"settings.images.generation": "Generación de imágenes",
|
||
"settings.images.add": "+ Añadir",
|
||
"settings.images.empty": "Aún no hay configuraciones. Haz clic en « Añadir » para crear una.",
|
||
"settings.provider.claudeCode": "Modelo Claude",
|
||
"settings.provider.codexCli": "Modelos OpenAI",
|
||
"settings.provider.openCode": "Más de 75 proveedores de LLM",
|
||
"settings.provider.githubCopilot": "Modelos GitHub Copilot",
|
||
"settings.provider.geminiCli": "Modelos Google Gemini",
|
||
"settings.system.title": "Sistema",
|
||
"settings.system.autoUpdate": "Actualización automática",
|
||
"settings.system.upToDate": "Actualizado",
|
||
"settings.system.upToDateDescription": "Estás usando la última versión publicada.",
|
||
"settings.system.checking": "Comprobando…",
|
||
"settings.system.checkingDescription": "Contactando con el servidor de versiones para obtener la última versión.",
|
||
"settings.system.updateAvailable": "Actualización disponible",
|
||
"settings.system.updateAvailableDescription": "Usa « Buscar actualizaciones » en el menú para abrir la página de descarga.",
|
||
"settings.system.idle": "Aún no comprobado",
|
||
"settings.system.idleDescription": "La comprobación de actualizaciones se ejecuta automáticamente poco después del inicio.",
|
||
"settings.system.errorStatus": "Error de comprobación",
|
||
"settings.system.errorDescription": "No se pudo conectar con el servidor de versiones — comprueba tu conexión.",
|
||
"settings.system.currentVersion": "Versión actual",
|
||
}
|
||
|
||
DE = {
|
||
"settings.tab.images": "Bilder",
|
||
"settings.tab.system": "System",
|
||
"settings.agents.builtin": "Integrierte Anbieter",
|
||
"settings.agents.builtinSubtitle": "API-Schlüssel direkt konfigurieren — keine CLI-Tools erforderlich.",
|
||
"settings.agents.builtinEmpty": "Keine integrierten Anbieter konfiguriert.",
|
||
"settings.agents.addProvider": "+ Anbieter hinzufügen",
|
||
"settings.agents.acp": "ACP-Agent",
|
||
"settings.agents.acpSubtitle": "Externe ACP-kompatible Agents verbinden.",
|
||
"settings.agents.acpEmpty": "Keine ACP-Agents konfiguriert.",
|
||
"settings.agents.addAcp": "+ Agent hinzufügen",
|
||
"settings.agents.connect": "Verbinden",
|
||
"settings.agents.disconnect": "Trennen",
|
||
"settings.agents.claudeHint": "Du kannst zusätzliche Umgebungsvariablen in ~/.claude/settings.json festlegen.",
|
||
"settings.mcp.server": "MCP-Server",
|
||
"settings.mcp.running": "Läuft",
|
||
"settings.mcp.stopped": "Gestoppt",
|
||
"settings.mcp.port": "Port",
|
||
"settings.mcp.start": "Starten",
|
||
"settings.mcp.stop": "Stoppen",
|
||
"settings.mcp.terminalIntegrations": "MCP-Integrationen im Terminal",
|
||
"settings.mcp.terminalSubtitle1": "MCP-Integrationen werden nach einem Neustart des Terminals wirksam.",
|
||
"settings.mcp.terminalSubtitle2": "Bitte installiere die MCP-Integrationen nach einem Upgrade von OpenPencil zur Kompatibilität neu.",
|
||
"settings.images.search": "Bildersuche",
|
||
"settings.images.ready": "Bereit",
|
||
"settings.images.notConfigured": "Nicht konfiguriert",
|
||
"settings.images.advanced": "Erweitert",
|
||
"settings.images.oauthLabel": "Openverse OAuth (optional, für höhere Ratenlimits)",
|
||
"settings.images.clientId": "Client-ID",
|
||
"settings.images.clientSecret": "Client-Secret",
|
||
"settings.images.registerLink": "Bei Openverse registrieren",
|
||
"settings.images.test": "Testen",
|
||
"settings.images.generation": "Bildgenerierung",
|
||
"settings.images.add": "+ Hinzufügen",
|
||
"settings.images.empty": "Noch keine Konfigurationen. Klicke auf „Hinzufügen“, um eine zu erstellen.",
|
||
"settings.provider.claudeCode": "Claude-Modell",
|
||
"settings.provider.codexCli": "OpenAI-Modelle",
|
||
"settings.provider.openCode": "Über 75 LLM-Anbieter",
|
||
"settings.provider.githubCopilot": "GitHub-Copilot-Modelle",
|
||
"settings.provider.geminiCli": "Google-Gemini-Modelle",
|
||
"settings.system.title": "System",
|
||
"settings.system.autoUpdate": "Automatische Updates",
|
||
"settings.system.upToDate": "Aktuell",
|
||
"settings.system.upToDateDescription": "Du verwendest die neueste veröffentlichte Version.",
|
||
"settings.system.checking": "Wird geprüft…",
|
||
"settings.system.checkingDescription": "Der Versionsserver wird nach der neuesten Version abgefragt.",
|
||
"settings.system.updateAvailable": "Update verfügbar",
|
||
"settings.system.updateAvailableDescription": "Verwende „Nach Updates suchen“ im Menü, um die Downloadseite zu öffnen.",
|
||
"settings.system.idle": "Noch nicht geprüft",
|
||
"settings.system.idleDescription": "Eine Update-Prüfung wird kurz nach dem Start automatisch ausgeführt.",
|
||
"settings.system.errorStatus": "Prüfung fehlgeschlagen",
|
||
"settings.system.errorDescription": "Der Versionsserver ist nicht erreichbar — überprüfe deine Verbindung.",
|
||
"settings.system.currentVersion": "Aktuelle Version",
|
||
}
|
||
|
||
PT = {
|
||
"settings.tab.images": "Imagens",
|
||
"settings.tab.system": "Sistema",
|
||
"settings.agents.builtin": "Provedores integrados",
|
||
"settings.agents.builtinSubtitle": "Configure as chaves de API diretamente — sem necessidade de ferramentas CLI.",
|
||
"settings.agents.builtinEmpty": "Nenhum provedor integrado configurado.",
|
||
"settings.agents.addProvider": "+ Adicionar provedor",
|
||
"settings.agents.acp": "Agente ACP",
|
||
"settings.agents.acpSubtitle": "Conecte agentes externos compatíveis com ACP.",
|
||
"settings.agents.acpEmpty": "Nenhum agente ACP configurado.",
|
||
"settings.agents.addAcp": "+ Adicionar agente",
|
||
"settings.agents.connect": "Conectar",
|
||
"settings.agents.disconnect": "Desconectar",
|
||
"settings.agents.claudeHint": "Você pode definir variáveis de ambiente adicionais em ~/.claude/settings.json.",
|
||
"settings.mcp.server": "Servidor MCP",
|
||
"settings.mcp.running": "Em execução",
|
||
"settings.mcp.stopped": "Parado",
|
||
"settings.mcp.port": "Porta",
|
||
"settings.mcp.start": "Iniciar",
|
||
"settings.mcp.stop": "Parar",
|
||
"settings.mcp.terminalIntegrations": "Integrações MCP do terminal",
|
||
"settings.mcp.terminalSubtitle1": "As integrações MCP entram em vigor após reiniciar o terminal.",
|
||
"settings.mcp.terminalSubtitle2": "Após atualizar o OpenPencil, reinstale as integrações MCP para garantir a compatibilidade.",
|
||
"settings.images.search": "Busca de imagens",
|
||
"settings.images.ready": "Pronto",
|
||
"settings.images.notConfigured": "Não configurado",
|
||
"settings.images.advanced": "Avançado",
|
||
"settings.images.oauthLabel": "Openverse OAuth (opcional, para limites de taxa mais altos)",
|
||
"settings.images.clientId": "ID do cliente",
|
||
"settings.images.clientSecret": "Segredo do cliente",
|
||
"settings.images.registerLink": "Registrar-se no Openverse",
|
||
"settings.images.test": "Testar",
|
||
"settings.images.generation": "Geração de imagens",
|
||
"settings.images.add": "+ Adicionar",
|
||
"settings.images.empty": "Ainda não há configurações. Clique em “Adicionar” para criar uma.",
|
||
"settings.provider.claudeCode": "Modelo Claude",
|
||
"settings.provider.codexCli": "Modelos OpenAI",
|
||
"settings.provider.openCode": "Mais de 75 provedores de LLM",
|
||
"settings.provider.githubCopilot": "Modelos GitHub Copilot",
|
||
"settings.provider.geminiCli": "Modelos Google Gemini",
|
||
"settings.system.title": "Sistema",
|
||
"settings.system.autoUpdate": "Atualização automática",
|
||
"settings.system.upToDate": "Atualizado",
|
||
"settings.system.upToDateDescription": "Você está usando a versão publicada mais recente.",
|
||
"settings.system.checking": "Verificando…",
|
||
"settings.system.checkingDescription": "Contatando o servidor de versões para obter a versão mais recente.",
|
||
"settings.system.updateAvailable": "Atualização disponível",
|
||
"settings.system.updateAvailableDescription": "Use “Verificar atualizações” no menu para abrir a página de download.",
|
||
"settings.system.idle": "Ainda não verificado",
|
||
"settings.system.idleDescription": "Uma verificação de atualizações é executada automaticamente logo após a inicialização.",
|
||
"settings.system.errorStatus": "Falha na verificação",
|
||
"settings.system.errorDescription": "Não foi possível conectar ao servidor de versões — verifique sua conexão.",
|
||
"settings.system.currentVersion": "Versão atual",
|
||
}
|
||
|
||
RU = {
|
||
"settings.tab.images": "Изображения",
|
||
"settings.tab.system": "Система",
|
||
"settings.agents.builtin": "Встроенные провайдеры",
|
||
"settings.agents.builtinSubtitle": "Настройте ключи API напрямую — инструменты CLI не нужны.",
|
||
"settings.agents.builtinEmpty": "Встроенные провайдеры не настроены.",
|
||
"settings.agents.addProvider": "+ Добавить провайдера",
|
||
"settings.agents.acp": "Агент ACP",
|
||
"settings.agents.acpSubtitle": "Подключение внешних ACP-совместимых агентов.",
|
||
"settings.agents.acpEmpty": "Агенты ACP не настроены.",
|
||
"settings.agents.addAcp": "+ Добавить агента",
|
||
"settings.agents.connect": "Подключить",
|
||
"settings.agents.disconnect": "Отключить",
|
||
"settings.agents.claudeHint": "Дополнительные переменные среды можно задать в ~/.claude/settings.json.",
|
||
"settings.mcp.server": "Сервер MCP",
|
||
"settings.mcp.running": "Работает",
|
||
"settings.mcp.stopped": "Остановлено",
|
||
"settings.mcp.port": "Порт",
|
||
"settings.mcp.start": "Запустить",
|
||
"settings.mcp.stop": "Остановить",
|
||
"settings.mcp.terminalIntegrations": "Интеграции MCP в терминале",
|
||
"settings.mcp.terminalSubtitle1": "Интеграции MCP вступают в силу после перезапуска терминала.",
|
||
"settings.mcp.terminalSubtitle2": "После обновления OpenPencil переустановите интеграции MCP для совместимости.",
|
||
"settings.images.search": "Поиск изображений",
|
||
"settings.images.ready": "Готово",
|
||
"settings.images.notConfigured": "Не настроено",
|
||
"settings.images.advanced": "Дополнительно",
|
||
"settings.images.oauthLabel": "Openverse OAuth (необязательно, для повышения лимитов запросов)",
|
||
"settings.images.clientId": "Идентификатор клиента",
|
||
"settings.images.clientSecret": "Секрет клиента",
|
||
"settings.images.registerLink": "Зарегистрироваться в Openverse",
|
||
"settings.images.test": "Проверить",
|
||
"settings.images.generation": "Генерация изображений",
|
||
"settings.images.add": "+ Добавить",
|
||
"settings.images.empty": "Конфигураций пока нет. Нажмите «Добавить», чтобы создать.",
|
||
"settings.provider.claudeCode": "Модель Claude",
|
||
"settings.provider.codexCli": "Модели OpenAI",
|
||
"settings.provider.openCode": "Более 75 провайдеров LLM",
|
||
"settings.provider.githubCopilot": "Модели GitHub Copilot",
|
||
"settings.provider.geminiCli": "Модели Google Gemini",
|
||
"settings.system.title": "Система",
|
||
"settings.system.autoUpdate": "Автообновление",
|
||
"settings.system.upToDate": "Актуально",
|
||
"settings.system.upToDateDescription": "Используется последняя опубликованная версия.",
|
||
"settings.system.checking": "Проверка…",
|
||
"settings.system.checkingDescription": "Запрос последней версии у сервера выпусков.",
|
||
"settings.system.updateAvailable": "Доступно обновление",
|
||
"settings.system.updateAvailableDescription": "Выберите «Проверить обновления» в меню, чтобы открыть страницу загрузки.",
|
||
"settings.system.idle": "Ещё не проверено",
|
||
"settings.system.idleDescription": "Проверка обновлений выполняется автоматически вскоре после запуска.",
|
||
"settings.system.errorStatus": "Ошибка проверки",
|
||
"settings.system.errorDescription": "Не удалось связаться с сервером выпусков — проверьте подключение.",
|
||
"settings.system.currentVersion": "Текущая версия",
|
||
}
|
||
|
||
HI = {
|
||
"settings.tab.images": "छवियाँ",
|
||
"settings.tab.system": "सिस्टम",
|
||
"settings.agents.builtin": "अंतर्निहित प्रदाता",
|
||
"settings.agents.builtinSubtitle": "API कुंजियाँ सीधे कॉन्फ़िगर करें — किसी CLI टूल की आवश्यकता नहीं।",
|
||
"settings.agents.builtinEmpty": "कोई अंतर्निहित प्रदाता कॉन्फ़िगर नहीं किया गया।",
|
||
"settings.agents.addProvider": "+ प्रदाता जोड़ें",
|
||
"settings.agents.acp": "ACP एजेंट",
|
||
"settings.agents.acpSubtitle": "बाहरी ACP-संगत एजेंट कनेक्ट करें।",
|
||
"settings.agents.acpEmpty": "कोई ACP एजेंट कॉन्फ़िगर नहीं किया गया।",
|
||
"settings.agents.addAcp": "+ एजेंट जोड़ें",
|
||
"settings.agents.connect": "कनेक्ट करें",
|
||
"settings.agents.disconnect": "डिस्कनेक्ट करें",
|
||
"settings.agents.claudeHint": "आप ~/.claude/settings.json में अतिरिक्त एनवायरनमेंट वेरिएबल सेट कर सकते हैं।",
|
||
"settings.mcp.server": "MCP सर्वर",
|
||
"settings.mcp.running": "चल रहा है",
|
||
"settings.mcp.stopped": "रुका हुआ",
|
||
"settings.mcp.port": "पोर्ट",
|
||
"settings.mcp.start": "प्रारंभ करें",
|
||
"settings.mcp.stop": "रोकें",
|
||
"settings.mcp.terminalIntegrations": "टर्मिनल MCP एकीकरण",
|
||
"settings.mcp.terminalSubtitle1": "MCP एकीकरण टर्मिनल पुनः आरंभ करने के बाद प्रभावी होते हैं।",
|
||
"settings.mcp.terminalSubtitle2": "OpenPencil अपग्रेड करने के बाद, संगतता के लिए MCP एकीकरण पुनः इंस्टॉल करें।",
|
||
"settings.images.search": "छवि खोज",
|
||
"settings.images.ready": "तैयार",
|
||
"settings.images.notConfigured": "कॉन्फ़िगर नहीं किया गया",
|
||
"settings.images.advanced": "उन्नत",
|
||
"settings.images.oauthLabel": "Openverse OAuth (वैकल्पिक, उच्च दर सीमाओं के लिए)",
|
||
"settings.images.clientId": "क्लाइंट ID",
|
||
"settings.images.clientSecret": "क्लाइंट सीक्रेट",
|
||
"settings.images.registerLink": "Openverse पर रजिस्टर करें",
|
||
"settings.images.test": "परीक्षण करें",
|
||
"settings.images.generation": "छवि निर्माण",
|
||
"settings.images.add": "+ जोड़ें",
|
||
"settings.images.empty": "अभी तक कोई कॉन्फ़िगरेशन नहीं। एक बनाने के लिए “जोड़ें” पर क्लिक करें।",
|
||
"settings.provider.claudeCode": "Claude मॉडल",
|
||
"settings.provider.codexCli": "OpenAI मॉडल",
|
||
"settings.provider.openCode": "75+ LLM प्रदाता",
|
||
"settings.provider.githubCopilot": "GitHub Copilot मॉडल",
|
||
"settings.provider.geminiCli": "Google Gemini मॉडल",
|
||
"settings.system.title": "सिस्टम",
|
||
"settings.system.autoUpdate": "स्वतः अपडेट",
|
||
"settings.system.upToDate": "नवीनतम",
|
||
"settings.system.upToDateDescription": "आप नवीनतम प्रकाशित रिलीज़ चला रहे हैं।",
|
||
"settings.system.checking": "जाँच रहा है…",
|
||
"settings.system.checkingDescription": "नवीनतम संस्करण के लिए रिलीज़ सर्वर से संपर्क किया जा रहा है।",
|
||
"settings.system.updateAvailable": "अपडेट उपलब्ध",
|
||
"settings.system.updateAvailableDescription": "डाउनलोड पृष्ठ खोलने के लिए मेनू में “अपडेट जाँचें” का उपयोग करें।",
|
||
"settings.system.idle": "अभी तक जाँचा नहीं गया",
|
||
"settings.system.idleDescription": "लॉन्च के तुरंत बाद अपडेट जाँच स्वतः चलती है।",
|
||
"settings.system.errorStatus": "जाँच विफल",
|
||
"settings.system.errorDescription": "रिलीज़ सर्वर तक नहीं पहुँच सका — अपना कनेक्शन जाँचें।",
|
||
"settings.system.currentVersion": "वर्तमान संस्करण",
|
||
}
|
||
|
||
TR = {
|
||
"settings.tab.images": "Görseller",
|
||
"settings.tab.system": "Sistem",
|
||
"settings.agents.builtin": "Yerleşik sağlayıcılar",
|
||
"settings.agents.builtinSubtitle": "API anahtarlarını doğrudan yapılandırın — CLI araçlarına gerek yok.",
|
||
"settings.agents.builtinEmpty": "Yapılandırılmış yerleşik sağlayıcı yok.",
|
||
"settings.agents.addProvider": "+ Sağlayıcı ekle",
|
||
"settings.agents.acp": "ACP Aracısı",
|
||
"settings.agents.acpSubtitle": "Harici ACP uyumlu aracıları bağlayın.",
|
||
"settings.agents.acpEmpty": "Yapılandırılmış ACP aracısı yok.",
|
||
"settings.agents.addAcp": "+ Aracı ekle",
|
||
"settings.agents.connect": "Bağlan",
|
||
"settings.agents.disconnect": "Bağlantıyı kes",
|
||
"settings.agents.claudeHint": "~/.claude/settings.json içinde ek ortam değişkenleri ayarlayabilirsiniz.",
|
||
"settings.mcp.server": "MCP Sunucusu",
|
||
"settings.mcp.running": "Çalışıyor",
|
||
"settings.mcp.stopped": "Durduruldu",
|
||
"settings.mcp.port": "Bağlantı noktası",
|
||
"settings.mcp.start": "Başlat",
|
||
"settings.mcp.stop": "Durdur",
|
||
"settings.mcp.terminalIntegrations": "Terminal MCP entegrasyonları",
|
||
"settings.mcp.terminalSubtitle1": "MCP entegrasyonları terminal yeniden başlatıldıktan sonra etkinleşir.",
|
||
"settings.mcp.terminalSubtitle2": "OpenPencil'i yükselttikten sonra uyumluluk için MCP entegrasyonlarını yeniden yükleyin.",
|
||
"settings.images.search": "Görsel arama",
|
||
"settings.images.ready": "Hazır",
|
||
"settings.images.notConfigured": "Yapılandırılmadı",
|
||
"settings.images.advanced": "Gelişmiş",
|
||
"settings.images.oauthLabel": "Openverse OAuth (isteğe bağlı, daha yüksek hız sınırları için)",
|
||
"settings.images.clientId": "İstemci kimliği",
|
||
"settings.images.clientSecret": "İstemci gizli anahtarı",
|
||
"settings.images.registerLink": "Openverse'e kaydol",
|
||
"settings.images.test": "Test et",
|
||
"settings.images.generation": "Görsel oluşturma",
|
||
"settings.images.add": "+ Ekle",
|
||
"settings.images.empty": "Henüz yapılandırma yok. Bir tane oluşturmak için “Ekle”'ye tıklayın.",
|
||
"settings.provider.claudeCode": "Claude modeli",
|
||
"settings.provider.codexCli": "OpenAI modelleri",
|
||
"settings.provider.openCode": "75'ten fazla LLM sağlayıcısı",
|
||
"settings.provider.githubCopilot": "GitHub Copilot modelleri",
|
||
"settings.provider.geminiCli": "Google Gemini modelleri",
|
||
"settings.system.title": "Sistem",
|
||
"settings.system.autoUpdate": "Otomatik güncelleme",
|
||
"settings.system.upToDate": "Güncel",
|
||
"settings.system.upToDateDescription": "En son yayımlanan sürümü çalıştırıyorsunuz.",
|
||
"settings.system.checking": "Denetleniyor…",
|
||
"settings.system.checkingDescription": "En son sürüm için yayım sunucusuyla iletişim kuruluyor.",
|
||
"settings.system.updateAvailable": "Güncelleme mevcut",
|
||
"settings.system.updateAvailableDescription": "İndirme sayfasını açmak için menüdeki “Güncellemeleri Denetle”'yi kullanın.",
|
||
"settings.system.idle": "Henüz denetlenmedi",
|
||
"settings.system.idleDescription": "Güncelleme denetimi başlatmadan kısa süre sonra otomatik olarak çalışır.",
|
||
"settings.system.errorStatus": "Denetim başarısız",
|
||
"settings.system.errorDescription": "Yayım sunucusuna ulaşılamadı — bağlantınızı denetleyin.",
|
||
"settings.system.currentVersion": "Geçerli sürüm",
|
||
}
|
||
|
||
TH = {
|
||
"settings.tab.images": "รูปภาพ",
|
||
"settings.tab.system": "ระบบ",
|
||
"settings.agents.builtin": "ผู้ให้บริการในตัว",
|
||
"settings.agents.builtinSubtitle": "กำหนดค่าคีย์ API โดยตรง — ไม่ต้องใช้เครื่องมือ CLI",
|
||
"settings.agents.builtinEmpty": "ยังไม่ได้กำหนดค่าผู้ให้บริการในตัว",
|
||
"settings.agents.addProvider": "+ เพิ่มผู้ให้บริการ",
|
||
"settings.agents.acpSubtitle": "เชื่อมต่อ Agent ภายนอกที่รองรับ ACP",
|
||
"settings.agents.acpEmpty": "ยังไม่ได้กำหนดค่า ACP Agent",
|
||
"settings.agents.addAcp": "+ เพิ่ม Agent",
|
||
"settings.agents.connect": "เชื่อมต่อ",
|
||
"settings.agents.disconnect": "ยกเลิกการเชื่อมต่อ",
|
||
"settings.agents.claudeHint": "คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมเพิ่มเติมได้ใน ~/.claude/settings.json",
|
||
"settings.mcp.server": "เซิร์ฟเวอร์ MCP",
|
||
"settings.mcp.running": "กำลังทำงาน",
|
||
"settings.mcp.stopped": "หยุดแล้ว",
|
||
"settings.mcp.port": "พอร์ต",
|
||
"settings.mcp.start": "เริ่ม",
|
||
"settings.mcp.stop": "หยุด",
|
||
"settings.mcp.terminalIntegrations": "การผสานรวม MCP ของเทอร์มินัล",
|
||
"settings.mcp.terminalSubtitle1": "การผสานรวม MCP จะมีผลหลังจากรีสตาร์ทเทอร์มินัล",
|
||
"settings.mcp.terminalSubtitle2": "หลังจากอัปเกรด OpenPencil โปรดติดตั้งการผสานรวม MCP ใหม่เพื่อความเข้ากันได้",
|
||
"settings.images.search": "ค้นหารูปภาพ",
|
||
"settings.images.ready": "พร้อม",
|
||
"settings.images.notConfigured": "ยังไม่ได้กำหนดค่า",
|
||
"settings.images.advanced": "ขั้นสูง",
|
||
"settings.images.oauthLabel": "Openverse OAuth (ไม่บังคับ สำหรับขีดจำกัดอัตราที่สูงขึ้น)",
|
||
"settings.images.clientId": "ไคลเอ็นต์ ID",
|
||
"settings.images.clientSecret": "ไคลเอ็นต์ซีเคร็ต",
|
||
"settings.images.registerLink": "ลงทะเบียนที่ Openverse",
|
||
"settings.images.test": "ทดสอบ",
|
||
"settings.images.generation": "การสร้างรูปภาพ",
|
||
"settings.images.add": "+ เพิ่ม",
|
||
"settings.images.empty": "ยังไม่มีการกำหนดค่า คลิก “เพิ่ม” เพื่อสร้าง",
|
||
"settings.provider.claudeCode": "โมเดล Claude",
|
||
"settings.provider.codexCli": "โมเดล OpenAI",
|
||
"settings.provider.openCode": "ผู้ให้บริการ LLM มากกว่า 75 ราย",
|
||
"settings.provider.githubCopilot": "โมเดล GitHub Copilot",
|
||
"settings.provider.geminiCli": "โมเดล Google Gemini",
|
||
"settings.system.title": "ระบบ",
|
||
"settings.system.autoUpdate": "อัปเดตอัตโนมัติ",
|
||
"settings.system.upToDate": "เป็นเวอร์ชันล่าสุด",
|
||
"settings.system.upToDateDescription": "คุณกำลังใช้รุ่นที่เผยแพร่ล่าสุด",
|
||
"settings.system.checking": "กำลังตรวจสอบ…",
|
||
"settings.system.checkingDescription": "กำลังติดต่อเซิร์ฟเวอร์รุ่นเพื่อหาเวอร์ชันล่าสุด",
|
||
"settings.system.updateAvailable": "มีอัปเดต",
|
||
"settings.system.updateAvailableDescription": "ใช้ “ตรวจหาการอัปเดต” ในเมนูเพื่อเปิดหน้าดาวน์โหลด",
|
||
"settings.system.idle": "ยังไม่ได้ตรวจสอบ",
|
||
"settings.system.idleDescription": "การตรวจหาอัปเดตจะทำงานอัตโนมัติไม่นานหลังจากเปิด",
|
||
"settings.system.errorStatus": "ตรวจสอบล้มเหลว",
|
||
"settings.system.errorDescription": "ไม่สามารถเข้าถึงเซิร์ฟเวอร์รุ่นได้ — โปรดตรวจสอบการเชื่อมต่อ",
|
||
"settings.system.currentVersion": "เวอร์ชันปัจจุบัน",
|
||
}
|
||
|
||
VI = {
|
||
"settings.tab.images": "Hình ảnh",
|
||
"settings.tab.system": "Hệ thống",
|
||
"settings.agents.builtin": "Nhà cung cấp tích hợp",
|
||
"settings.agents.builtinSubtitle": "Cấu hình khóa API trực tiếp — không cần công cụ CLI.",
|
||
"settings.agents.builtinEmpty": "Chưa cấu hình nhà cung cấp tích hợp nào.",
|
||
"settings.agents.addProvider": "+ Thêm nhà cung cấp",
|
||
"settings.agents.acp": "Agent ACP",
|
||
"settings.agents.acpSubtitle": "Kết nối các Agent bên ngoài tương thích ACP.",
|
||
"settings.agents.acpEmpty": "Chưa cấu hình Agent ACP nào.",
|
||
"settings.agents.addAcp": "+ Thêm Agent",
|
||
"settings.agents.connect": "Kết nối",
|
||
"settings.agents.disconnect": "Ngắt kết nối",
|
||
"settings.agents.claudeHint": "Bạn có thể đặt thêm biến môi trường trong ~/.claude/settings.json.",
|
||
"settings.mcp.server": "Máy chủ MCP",
|
||
"settings.mcp.running": "Đang chạy",
|
||
"settings.mcp.stopped": "Đã dừng",
|
||
"settings.mcp.port": "Cổng",
|
||
"settings.mcp.start": "Bắt đầu",
|
||
"settings.mcp.stop": "Dừng",
|
||
"settings.mcp.terminalIntegrations": "Tích hợp MCP của terminal",
|
||
"settings.mcp.terminalSubtitle1": "Tích hợp MCP có hiệu lực sau khi khởi động lại terminal.",
|
||
"settings.mcp.terminalSubtitle2": "Sau khi nâng cấp OpenPencil, vui lòng cài đặt lại tích hợp MCP để đảm bảo tương thích.",
|
||
"settings.images.search": "Tìm kiếm hình ảnh",
|
||
"settings.images.ready": "Sẵn sàng",
|
||
"settings.images.notConfigured": "Chưa cấu hình",
|
||
"settings.images.advanced": "Nâng cao",
|
||
"settings.images.oauthLabel": "Openverse OAuth (tùy chọn, để có giới hạn tốc độ cao hơn)",
|
||
"settings.images.clientId": "ID khách hàng",
|
||
"settings.images.clientSecret": "Khóa bí mật khách hàng",
|
||
"settings.images.registerLink": "Đăng ký tại Openverse",
|
||
"settings.images.test": "Kiểm tra",
|
||
"settings.images.generation": "Tạo hình ảnh",
|
||
"settings.images.add": "+ Thêm",
|
||
"settings.images.empty": "Chưa có cấu hình nào. Nhấp “Thêm” để tạo một cấu hình.",
|
||
"settings.provider.claudeCode": "Mô hình Claude",
|
||
"settings.provider.codexCli": "Mô hình OpenAI",
|
||
"settings.provider.openCode": "Hơn 75 nhà cung cấp LLM",
|
||
"settings.provider.githubCopilot": "Mô hình GitHub Copilot",
|
||
"settings.provider.geminiCli": "Mô hình Google Gemini",
|
||
"settings.system.title": "Hệ thống",
|
||
"settings.system.autoUpdate": "Tự động cập nhật",
|
||
"settings.system.upToDate": "Đã cập nhật",
|
||
"settings.system.upToDateDescription": "Bạn đang chạy bản phát hành mới nhất.",
|
||
"settings.system.checking": "Đang kiểm tra…",
|
||
"settings.system.checkingDescription": "Đang liên hệ máy chủ phát hành để lấy phiên bản mới nhất.",
|
||
"settings.system.updateAvailable": "Có bản cập nhật",
|
||
"settings.system.updateAvailableDescription": "Dùng “Kiểm tra cập nhật” trong menu để mở trang tải xuống.",
|
||
"settings.system.idle": "Chưa kiểm tra",
|
||
"settings.system.idleDescription": "Quá trình kiểm tra cập nhật tự động chạy ngay sau khi khởi động.",
|
||
"settings.system.errorStatus": "Kiểm tra thất bại",
|
||
"settings.system.errorDescription": "Không thể kết nối máy chủ phát hành — hãy kiểm tra kết nối của bạn.",
|
||
"settings.system.currentVersion": "Phiên bản hiện tại",
|
||
}
|
||
|
||
ID = {
|
||
"settings.tab.images": "Gambar",
|
||
"settings.tab.system": "Sistem",
|
||
"settings.agents.builtin": "Penyedia bawaan",
|
||
"settings.agents.builtinSubtitle": "Konfigurasikan kunci API secara langsung — tidak perlu alat CLI.",
|
||
"settings.agents.builtinEmpty": "Tidak ada penyedia bawaan yang dikonfigurasi.",
|
||
"settings.agents.addProvider": "+ Tambah penyedia",
|
||
"settings.agents.acp": "Agent ACP",
|
||
"settings.agents.acpSubtitle": "Hubungkan Agent eksternal yang kompatibel dengan ACP.",
|
||
"settings.agents.acpEmpty": "Tidak ada Agent ACP yang dikonfigurasi.",
|
||
"settings.agents.addAcp": "+ Tambah Agent",
|
||
"settings.agents.connect": "Hubungkan",
|
||
"settings.agents.disconnect": "Putuskan",
|
||
"settings.agents.claudeHint": "Anda dapat menyetel variabel lingkungan tambahan di ~/.claude/settings.json.",
|
||
"settings.mcp.server": "Server MCP",
|
||
"settings.mcp.running": "Berjalan",
|
||
"settings.mcp.stopped": "Dihentikan",
|
||
"settings.mcp.port": "Port",
|
||
"settings.mcp.start": "Mulai",
|
||
"settings.mcp.stop": "Hentikan",
|
||
"settings.mcp.terminalIntegrations": "Integrasi MCP terminal",
|
||
"settings.mcp.terminalSubtitle1": "Integrasi MCP berlaku setelah memulai ulang terminal.",
|
||
"settings.mcp.terminalSubtitle2": "Setelah memperbarui OpenPencil, instal ulang integrasi MCP untuk kompatibilitas.",
|
||
"settings.images.search": "Pencarian gambar",
|
||
"settings.images.ready": "Siap",
|
||
"settings.images.notConfigured": "Tidak dikonfigurasi",
|
||
"settings.images.advanced": "Lanjutan",
|
||
"settings.images.oauthLabel": "Openverse OAuth (opsional, untuk batas laju lebih tinggi)",
|
||
"settings.images.clientId": "ID Klien",
|
||
"settings.images.clientSecret": "Rahasia Klien",
|
||
"settings.images.registerLink": "Daftar di Openverse",
|
||
"settings.images.test": "Uji",
|
||
"settings.images.generation": "Pembuatan gambar",
|
||
"settings.images.add": "+ Tambah",
|
||
"settings.images.empty": "Belum ada konfigurasi. Klik “Tambah” untuk membuat satu.",
|
||
"settings.provider.claudeCode": "Model Claude",
|
||
"settings.provider.codexCli": "Model OpenAI",
|
||
"settings.provider.openCode": "75+ penyedia LLM",
|
||
"settings.provider.githubCopilot": "Model GitHub Copilot",
|
||
"settings.provider.geminiCli": "Model Google Gemini",
|
||
"settings.system.title": "Sistem",
|
||
"settings.system.autoUpdate": "Pembaruan otomatis",
|
||
"settings.system.upToDate": "Terbaru",
|
||
"settings.system.upToDateDescription": "Anda menjalankan rilis terbaru yang dipublikasikan.",
|
||
"settings.system.checking": "Memeriksa…",
|
||
"settings.system.checkingDescription": "Menghubungi server rilis untuk versi terbaru.",
|
||
"settings.system.updateAvailable": "Pembaruan tersedia",
|
||
"settings.system.updateAvailableDescription": "Gunakan “Periksa Pembaruan” di menu untuk membuka halaman unduhan.",
|
||
"settings.system.idle": "Belum diperiksa",
|
||
"settings.system.idleDescription": "Pemeriksaan pembaruan berjalan otomatis sesaat setelah peluncuran.",
|
||
"settings.system.errorStatus": "Pemeriksaan gagal",
|
||
"settings.system.errorDescription": "Tidak dapat menjangkau server rilis — periksa koneksi Anda.",
|
||
"settings.system.currentVersion": "Versi saat ini",
|
||
}
|
||
|
||
LOCALES = [
|
||
("en", {}), ("zh_cn", ZH_CN), ("zh_tw", ZH_TW), ("ja", JA), ("ko", KO),
|
||
("fr", FR), ("es", ES), ("de", DE), ("pt", PT), ("ru", RU), ("hi", HI),
|
||
("tr", TR), ("th", TH), ("vi", VI), ("id", ID),
|
||
]
|
||
|
||
NEW_HEADER = [
|
||
"//! Canonical chrome-string table for this locale.\n",
|
||
"//!\n",
|
||
"//! Formerly generated from `apps/web/src/i18n/locales/*.ts` via\n",
|
||
"//! `tools/convert-locales.py`; that TS pipeline is retired and\n",
|
||
"//! these tables are now hand-maintained directly.\n",
|
||
]
|
||
|
||
|
||
def esc(s):
|
||
return s.replace("\\", "\\\\").replace('"', '\\"')
|
||
|
||
|
||
def main():
|
||
for name, ov in LOCALES:
|
||
path = os.path.join(I18N_DIR, name + ".rs")
|
||
with open(path, "r", encoding="utf-8") as f:
|
||
lines = f.readlines()
|
||
|
||
# 1. Refresh the doc-comment header (drop the "generated, do
|
||
# NOT hand-edit" banner — these tables are canonical now).
|
||
if lines and lines[0].startswith("//! Generated from"):
|
||
end = 0
|
||
while end < len(lines) and lines[end].startswith("//!"):
|
||
end += 1
|
||
lines = NEW_HEADER + lines[end:]
|
||
|
||
# 2. Insert the settings.* block before `_ => return None,`.
|
||
if any('"settings.tab.agents"' in ln for ln in lines):
|
||
print(f"{name}: already has settings.* block, skipping insert")
|
||
else:
|
||
table = dict(EN)
|
||
table.update(ov)
|
||
block = [
|
||
' "{}" => "{}",\n'.format(k, esc(table[k])) for k in KEYS
|
||
]
|
||
for i, ln in enumerate(lines):
|
||
if ln.strip() == "_ => return None,":
|
||
lines[i:i] = block
|
||
break
|
||
else:
|
||
raise SystemExit(f"{name}: no `_ => return None,` arm found")
|
||
|
||
with open(path, "w", encoding="utf-8") as f:
|
||
f.writelines(lines)
|
||
print(f"{name}: done")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|