2d35c1d9de
- New client-side i18n via React Context (useI18n, tArray, I18nProvider) - Catalog ships 21 locale stubs; only zh-CN/en/ja have reviewed translations - Header language switcher (globe icon + short label) before settings gear - All hardcoded Chinese UI text migrated to keys: typewriter, options, hints (with embedded gear icon via dangerouslySetInnerHTML), settings panel, footer/about, play page hints - AI output language follows user-selected locale via trailing one-liner directive appended to Architect/Writer/CharacterDesigner/InsertBeat user messages (preserves system-prompt cacheability) - Per-locale separator rule: zh uses middot between every glyph; en/ja use plain spaces - Option value → i18n key suffix maps preserve Chinese as the underlying identifier so analytics unions and STYLE_MAP keys stay byte-stable Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
90 lines
2.6 KiB
TypeScript
90 lines
2.6 KiB
TypeScript
// Thai
|
|
// Auto-generated by scripts/translate-i18n.mjs
|
|
|
|
export const th = {
|
|
"layout": {
|
|
"metadata": {
|
|
"title": "InfiPlot",
|
|
"description": "InfiPlot"
|
|
}
|
|
},
|
|
"home": {
|
|
"examples": {
|
|
"male": [],
|
|
"female": [],
|
|
"x": []
|
|
},
|
|
"options": {
|
|
"gender": "",
|
|
"artStyle": "",
|
|
"plotStyle": "",
|
|
"voice": "",
|
|
"pacing": ""
|
|
},
|
|
"genders": {
|
|
"male": "",
|
|
"female": "",
|
|
"x": ""
|
|
},
|
|
"artStyles": {},
|
|
"plotStyles": {
|
|
"straightforward": "",
|
|
"twist": ""
|
|
},
|
|
"voiceOptions": {
|
|
"off": "",
|
|
"on": ""
|
|
},
|
|
"pacings": {
|
|
"fast": "",
|
|
"relaxed": ""
|
|
},
|
|
"stories": {},
|
|
"ui": {
|
|
"start": "",
|
|
"loadStory": "",
|
|
"settings": "",
|
|
"searchPlaceholder": "",
|
|
"noMatchingStyle": "",
|
|
"close": "",
|
|
"back": "",
|
|
"save": "",
|
|
"cancel": "",
|
|
"saveAndSelect": ""
|
|
},
|
|
"styleModal": {},
|
|
"hero": {
|
|
"title": "",
|
|
"placeholder": " ",
|
|
"enterHint": ""
|
|
},
|
|
"hint": {
|
|
"text": (params: { authEnabled?: boolean }) => {
|
|
const authHint = params.authEnabled ? ' (ต้องล็อกอินระหว่างเบต้า, เล่นฟรี)' : '';
|
|
return `ป้อนแนวคิดของคุณ กำหนดค่าสไตล์ และคลิก "เริ่ม" เพื่อเล่น${authHint} คุณยังสามารถเลือกเรื่องราวที่คัดสรรจากด้านล่างเพื่อสัมผัส <em>InfiPlot</em> ได้อย่างรวดเร็ว คลิก "การตั้งค่า" เพื่อป้อนชื่อและกำหนดค่าคีย์ข้อความ รูปภาพ การมองเห็น และ TTS ของคุณเอง—ทั้งหมดจะถูกเก็บไว้ในเบราว์เซอร์ของคุณเพื่อประสบการณ์ที่มีเสถียรภาพมากขึ้น`;
|
|
},
|
|
"closeAriaLabel": "ไม่แสดงคำแนะนำนี้อีก"
|
|
},
|
|
"about": {},
|
|
"errors": {
|
|
"emptyFile": "",
|
|
"fileTooLarge": "",
|
|
"unpackFailed": "",
|
|
"parseFailed": "",
|
|
"cardNotFound": ""
|
|
}
|
|
},
|
|
"play": {},
|
|
"settings": {},
|
|
"auth": {},
|
|
"history": {},
|
|
"customForm": {},
|
|
"language": {
|
|
"title": "",
|
|
"current": "",
|
|
"select": ""
|
|
}
|
|
} as const;
|
|
|
|
export type ThTranslations = typeof th;
|