Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/fixes/16657-th-untranslated-ui-strings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- **fix(i18n):** UI strings of the Thai locale were still English (the quota-share time windows, the Codex cooldown and paid credits, the proxy subscription core errors, the per-model concurrency caps, the request timeline labels); they are now translated with the wording of the neighbouring th keys ([#16657](https://github.com/diegosouzapw/OmniRoute/pull/16657)) — thanks @pacocartones.
122 changes: 61 additions & 61 deletions src/i18n/messages/th.json
Original file line number Diff line number Diff line change
Expand Up @@ -5268,11 +5268,11 @@
}
},
"providers": {
"codexReleaseCooldown": "Clear local cooldown",
"codexReleaseCooldownHint": "Allow this Codex account to be tried again. Does not redeem a reset credit or change upstream limits.",
"codexReleasingCooldown": "Clearing…",
"codexCooldownReleased": "Local cooldown cleared.",
"codexCooldownReleaseFailed": "Could not clear cooldown. Please try again.",
"codexReleaseCooldown": "ล้างคูลดาวน์ในเครื่อง",
"codexReleaseCooldownHint": "อนุญาตให้ลองใช้บัญชี Codex นี้อีกครั้ง ไม่ใช้เครดิตรีเซ็ตและไม่เปลี่ยนขีดจำกัดของอัปสตรีม",
"codexReleasingCooldown": "กำลังล้าง…",
"codexCooldownReleased": "ล้างคูลดาวน์ในเครื่องแล้ว",
"codexCooldownReleaseFailed": "ไม่สามารถล้างคูลดาวน์ได้ โปรดลองอีกครั้ง",
"title": "ผู้ให้บริการ",
"Account Deactivated": "บัญชีถูกปิดใช้งาน",
"allProviders": "ผู้ให้บริการทั้งหมด",
Expand Down Expand Up @@ -5543,7 +5543,7 @@
"modelsImported": "นำเข้าโมเดลแล้ว {count} รายการ",
"allModelsAlreadyImported": "นำเข้าโมเดลทั้งหมดแล้ว",
"noNewModelsToImport": "ไม่มีโมเดลใหม่ที่จะนำเข้า — โมเดลทั้งหมดมีอยู่แล้วในรีจิสทรีหรือรายการโมเดลที่กำหนดเอง",
"localCatalogFallbackStatus": "Couldn't reach the provider's model list — showing the built-in catalog",
"localCatalogFallbackStatus": "ไม่สามารถเข้าถึงรายการโมเดลของผู้ให้บริการได้ — กำลังแสดงแค็ตตาล็อกที่มีมาในตัว",
"skippingExistingModels": "ข้าม {count} โมเดลที่มีอยู่",
"autoSync": "ซิงค์อัตโนมัติ",
"autoSyncShort": "ซิงค์",
Expand Down Expand Up @@ -6729,16 +6729,16 @@
"searchByModelAria": "ค้นหาตามรุ่น",
"selectSupportedEndpoint": "เลือกจุดสิ้นสุดที่รองรับอย่างน้อยหนึ่งจุด",
"antigravityClientProfileHarness": "Harness / CLI",
"rateLimitOverridesModelConcurrencyLabel": "Per-model concurrency caps",
"rateLimitOverridesModelConcurrencyLabel": "ขีดจำกัดการทำงานพร้อมกันต่อโมเดล",
"rateLimitOverridesModelConcurrencyPlaceholder": "glm-5=1\nglm-4.7=3",
"rateLimitOverridesModelConcurrencyHint": "Optional: one model=cap per line, matched against the exact upstream model id. Queues excess requests locally; blank means no per-model cap.",
"rateLimitOverridesModelConcurrencyInvalid": "Invalid per-model concurrency entry \"{entry}\" — use model=cap with a whole number from 1 to {max}.",
"codexPaidCreditsShort": "Extra credits",
"codexPaidCreditsToggleTitle": "Allow paid Codex credits after subscription quota runs out (additional charges may apply)",
"codexPaidCreditsEnabled": "Codex paid credits enabled (additional charges may apply)",
"codexPaidCreditsDisabled": "Codex paid credits disabled",
"failedUpdateCodexPaidCredits": "Failed to update Codex paid-credit policy",
"allowCodexPaidCreditsLabel": "Allow paid Codex credits",
"rateLimitOverridesModelConcurrencyHint": "ไม่บังคับ: หนึ่ง model=cap ต่อบรรทัด จับคู่กับ ID โมเดลอัปสตรีมที่ตรงกันทุกตัวอักษร คำขอส่วนเกินจะเข้าคิวในเครื่อง ปล่อยว่างหมายถึงไม่จำกัดต่อโมเดล",
"rateLimitOverridesModelConcurrencyInvalid": "รายการการทำงานพร้อมกันต่อโมเดล \"{entry}\" ไม่ถูกต้อง — ใช้ model=cap โดย cap เป็นจำนวนเต็มตั้งแต่ 1 ถึง {max}",
"codexPaidCreditsShort": "เครดิตเพิ่มเติม",
"codexPaidCreditsToggleTitle": "อนุญาตเครดิต Codex แบบชำระเงินหลังโควตาการสมัครสมาชิกหมด (อาจมีค่าใช้จ่ายเพิ่มเติม)",
"codexPaidCreditsEnabled": "เปิดใช้เครดิต Codex แบบชำระเงินแล้ว (อาจมีค่าใช้จ่ายเพิ่มเติม)",
"codexPaidCreditsDisabled": "ปิดใช้เครดิต Codex แบบชำระเงินแล้ว",
"failedUpdateCodexPaidCredits": "อัปเดตนโยบายเครดิต Codex แบบชำระเงินไม่สำเร็จ",
"allowCodexPaidCreditsLabel": "อนุญาตเครดิต Codex แบบชำระเงิน",
"allowCodexPaidCreditsDescription": "Allow this account to use paid credits after its subscription quota reaches the cutoff. Requires available credits reported by OpenAI; may incur charges. Spark limits and upstream cooldowns still apply. Credit availability is checked even if quota preflight is disabled."
},
"settings": {
Expand Down Expand Up @@ -7089,10 +7089,10 @@
"NEEDS_CORE_NOT_CONFIGURED": "การสมัครสมาชิกนี้มีโหนดที่ต้องใช้ proxy core ภายในเครื่อง (SS/VMess/Trojan/VLESS); โหนดเหล่านั้นจะไม่ถูกกำหนดเส้นทางจนกว่าคุณจะกำหนดค่าปลายทาง SOCKS5 ของ local-core",
"NO_USABLE_NODES": "การสมัครสมาชิกไม่พบโหนดที่ใช้งานได้ (http/https/socks5 หรือโหนดที่มีปลายทาง local core)",
"SELECTOR_SWITCH_FAILED": "การเรียกควบคุมพร็อกซีคอร์ล้มเหลว เส้นทางเดิมยังคงใช้งานได้ โปรดตรวจสอบ URL และซีเคร็ตควบคุมแล้วรีเฟรช",
"CORE_CONFIG_NOT_GENERATED": "The local-core config was not generated; the adopted file is unchanged. Check the path and refresh.",
"CORE_CONFIG_NOT_GENERATED": "ไม่ได้สร้างการกำหนดค่าคอร์ในเครื่อง ไฟล์ที่นำมาใช้ไม่มีการเปลี่ยนแปลง ตรวจสอบเส้นทางแล้วรีเฟรช",
"CORE_CONFIG_NOT_APPLIED": "การตั้งค่าหลักที่สร้างขึ้นไม่สามารถแทนที่ไฟล์ที่ยอมรับได้ จึงเก็บสำเนาที่อยู่ข้างๆ ไว้แทน",
"CORE_RELOAD_UNDECLARED": "No reload channel is declared for the replaced core config. Declare one: a control URL on a compatible core, the OMNIROUTE_PROXY_CORE_RELOAD_COMMAND variable as a JSON argument array, or the value external for an outside observer.",
"CORE_RELOAD_FAILED": "The proxy core reload failed; the new config file stays in place. Check the reload command, then refresh.",
"CORE_RELOAD_UNDECLARED": "ยังไม่ได้ประกาศช่องทางโหลดใหม่สำหรับการกำหนดค่าคอร์ที่ถูกแทนที่ โปรดประกาศหนึ่งอย่าง: URL ควบคุมบนคอร์ที่เข้ากันได้ ตัวแปร OMNIROUTE_PROXY_CORE_RELOAD_COMMAND เป็นอาร์เรย์อาร์กิวเมนต์ JSON หรือค่า external สำหรับผู้สังเกตการณ์ภายนอก",
"CORE_RELOAD_FAILED": "โหลดคอร์พร็อกซีใหม่ไม่สำเร็จ ไฟล์การกำหนดค่าใหม่ยังคงอยู่ที่เดิม ตรวจสอบคำสั่งโหลดใหม่แล้วรีเฟรช",
"CORE_CONFIG_ENTRIES_SKIPPED": "บางรายการถูกข้ามระหว่างการสร้าง ดูบันทึกของเซิร์ฟเวอร์"
},
"description": "วางลิงก์การสมัครพร็อกซีของคุณ เมื่อเปิดใช้งานแล้ว การรับส่งข้อมูลจะถูกส่งผ่านพร็อกซีพูลในโหมดส่วนกลางหรือโหมดกฎ (ผู้ให้บริการที่ระบุ) โหนดการสมัครใช้งานจะซิงค์กับพร็อกซีพูลโดยอัตโนมัติ และนำกลไกการโพล การตรวจสอบสภาพ และการป้องกันการรั่วไหลที่มีอยู่กลับมาใช้ใหม่",
Expand Down Expand Up @@ -7180,17 +7180,17 @@
"lastSwitchMember": "สมาชิกที่ให้บริการ",
"nextSwitch": "การสลับครั้งถัดไปที่ทำได้",
"nextSwitchNow": "ตอนนี้",
"coreConfigPath": "Core config file",
"coreConfigPath": "ไฟล์การกำหนดค่าคอร์",
"coreConfigPathPlaceholder": "/var/lib/omniroute/sing-box/config.json",
"coreConfigPathDesc": "Absolute .json path (lowercase extension). Empty = no generation. Each sync writes '<path>'.generated beside the adopted file, never into it.",
"lastSwitchKind": "Switch reason",
"coreConfigPathDesc": "เส้นทาง .json แบบสัมบูรณ์ (นามสกุลตัวพิมพ์เล็ก) ว่าง = ไม่สร้าง การซิงก์แต่ละครั้งจะเขียน '<path>'.generated ไว้ข้างไฟล์ที่นำมาใช้ และไม่เขียนลงในไฟล์นั้นเอง",
"lastSwitchKind": "เหตุผลของการสลับ",
"switchKind": {
"ip_quota_429": "quota",
"proxy_unreachable": "unreachable",
"transport": "transport",
"slow": "slow"
"ip_quota_429": "โควตา",
"proxy_unreachable": "เข้าถึงไม่ได้",
"transport": "การส่งผ่าน",
"slow": "ช้า"
},
"coreReloadAppliedBy": "Applied by: {mode}",
"coreReloadAppliedBy": "ใช้โดย: {mode}",
"coreBinaryPath": "เส้นทางไบนารีหลัก",
"coreBinaryPathPlaceholder": "/usr/bin/sing-box",
"coreBinaryPathHelp": "ไม่บังคับ: ตรวจสอบไฟล์ที่สร้างขึ้นด้วยไบนารีหลักก่อนแทนที่ไฟล์ที่ยอมรับ ปล่อยว่างไว้เพื่อเขียนไว้ข้างๆ ต่อไป ไดเรกทอรีจะถูกสร้างขึ้นหากไม่มี"
Expand Down Expand Up @@ -10123,10 +10123,10 @@
"lastRefreshed": "รีเฟรชล่าสุดเมื่อ",
"providerQuota": "โควตาผู้ให้บริการ",
"providerQuotaHomeHint": "สถานะแบบเรียลไทม์ของบัญชีที่เชื่อมต่อทั้งหมด",
"codexPaidCreditsLabel": "Paid Codex credits",
"codexPaidCreditsAvailable": "Available (balance not reported)",
"codexPaidCreditsUnavailable": "Unavailable or spending limit reached",
"codexPaidCreditsUnlimited": "Unlimited"
"codexPaidCreditsLabel": "เครดิต Codex แบบชำระเงิน",
"codexPaidCreditsAvailable": "พร้อมใช้งาน (ไม่รายงานยอดคงเหลือ)",
"codexPaidCreditsUnavailable": "ไม่พร้อมใช้งานหรือถึงขีดจำกัดการใช้จ่ายแล้ว",
"codexPaidCreditsUnlimited": "ไม่จำกัด"
},
"modals": {
"waitingAuth": "รอการอนุญาต",
Expand Down Expand Up @@ -12147,33 +12147,33 @@
"accountQuotaNone": "—",
"logTitle": "บันทึกการใช้งาน",
"logEmpty": "ยังไม่มีการใช้งาน",
"schedulesTitle": "Time windows",
"schedulesHint": "Say when OmniRoute may use these accounts, and how much it may take. Allow windows act as a whitelist: add one and the pool is closed outside it. A block window is a blackout and always wins over an allow window it overlaps.",
"schedulesEmpty": "No time windows — the pool is available around the clock",
"schedulesAdd": "Add window",
"schedulesRemove": "Remove window",
"schedulesEnabled": "Window enabled",
"schedulesMode": "Window type",
"schedulesModeAllow": "Allow",
"schedulesModeBlock": "Block",
"schedulesFrom": "From",
"schedulesTo": "To",
"schedulesReserve": "Keep free",
"schedulesReserveHint": "Stop using the account once less than this share of a quota window is left. Counts everyone's usage, so someone else working on the same account pushes OmniRoute out first. Add one floor per window: a weekly reserve that protects the whole week would throttle every short burst if it also governed the 5h window.",
"schedulesReserveNone": "no floor — OmniRoute may use the account down to empty",
"schedulesReserveAdd": "Add floor",
"schedulesReserveRemove": "Remove floor",
"schedulesReserveWindow": "Quota window this floor guards",
"schedulesReserveWindowAny": "any window",
"schedulesBudget": "OmniRoute budget",
"schedulesBudgetHint": "How much OmniRoute itself may spend in this window. Counts only its own traffic, so usage by anyone else neither eats nor inflates it.",
"schedulesBudgetUnit": "Budget unit",
"schedulesBudgetWindow": "Budget window",
"schedulesTimezone": "Time zone",
"schedulesPriority": "Priority",
"schedulesSaved": "Time windows saved",
"schedulesSaveError": "Could not save the time windows",
"schedulesLoadError": "Could not load the time windows",
"schedulesTitle": "ช่วงเวลา",
"schedulesHint": "ระบุว่า OmniRoute ใช้บัญชีเหล่านี้ได้เมื่อใดและได้มากเท่าใด ช่วงเวลาอนุญาตทำงานเหมือนรายการที่อนุญาต: เพิ่มหนึ่งช่วง พูลจะปิดนอกช่วงนั้น ช่วงเวลาบล็อกคือช่วงหยุดการใช้งานและมีผลเหนือช่วงอนุญาตที่ทับซ้อนกันเสมอ",
"schedulesEmpty": "ไม่มีช่วงเวลา — พูลพร้อมใช้งานตลอดเวลา",
"schedulesAdd": "เพิ่มช่วงเวลา",
"schedulesRemove": "ลบช่วงเวลา",
"schedulesEnabled": "เปิดใช้ช่วงเวลา",
"schedulesMode": "ประเภทช่วงเวลา",
"schedulesModeAllow": "อนุญาต",
"schedulesModeBlock": "บล็อก",
"schedulesFrom": "จาก",
"schedulesTo": "ถึง",
"schedulesReserve": "เว้นว่างไว้",
"schedulesReserveHint": "หยุดใช้บัญชีเมื่อเหลือน้อยกว่าสัดส่วนนี้ของช่วงโควตา นับการใช้งานของทุกคน ดังนั้นหากมีคนอื่นใช้บัญชีเดียวกัน OmniRoute จะถูกผลักออกก่อน เพิ่มเกณฑ์ขั้นต่ำหนึ่งค่าต่อช่วง: ส่วนสำรองรายสัปดาห์ที่ปกป้องทั้งสัปดาห์จะบีบทุกช่วงการใช้งานสั้น ๆ หากมีผลกับช่วง 5 ชั่วโมงด้วย",
"schedulesReserveNone": "ไม่มีเกณฑ์ขั้นต่ำ — OmniRoute ใช้บัญชีได้จนหมด",
"schedulesReserveAdd": "เพิ่มเกณฑ์ขั้นต่ำ",
"schedulesReserveRemove": "ลบเกณฑ์ขั้นต่ำ",
"schedulesReserveWindow": "ช่วงโควตาที่เกณฑ์ขั้นต่ำนี้ปกป้อง",
"schedulesReserveWindowAny": "ช่วงใดก็ได้",
"schedulesBudget": "งบประมาณของ OmniRoute",
"schedulesBudgetHint": "จำนวนที่ OmniRoute เองใช้ได้ในช่วงนี้ นับเฉพาะทราฟฟิกของตัวเอง การใช้งานของผู้อื่นจึงไม่ทำให้ลดลงหรือเพิ่มขึ้น",
"schedulesBudgetUnit": "หน่วยงบประมาณ",
"schedulesBudgetWindow": "ช่วงงบประมาณ",
"schedulesTimezone": "เขตเวลา",
"schedulesPriority": "ลำดับความสำคัญ",
"schedulesSaved": "บันทึกช่วงเวลาแล้ว",
"schedulesSaveError": "ไม่สามารถบันทึกช่วงเวลาได้",
"schedulesLoadError": "ไม่สามารถโหลดช่วงเวลาได้",
"groupLabel": "กลุ่ม",
"newGroup": "กลุ่มใหม่",
"renameGroup": "เปลี่ยนชื่อกลุ่ม",
Expand Down Expand Up @@ -14635,11 +14635,11 @@
"day": "วัน",
"unknownModel": "ไม่ทราบ",
"pending": "รอดำเนินการ",
"allApiKeys": "All API keys",
"allApiKeys": "คีย์ API ทั้งหมด",
"mcp": "MCP",
"mcpTool": "MCP tool",
"scope": "Scope",
"apiKey": "API key"
"mcpTool": "เครื่องมือ MCP",
"scope": "ขอบเขต",
"apiKey": "คีย์ API"
},
"metadata": {
"compressionTitle": "การบีบอัด",
Expand Down
Loading