Files
infiplot-web/lib/i18n/locales/tr.ts
T
DESKTOP-I1T6TF3\Q 2d35c1d9de feat(i18n): add language switcher with en/ja translations
- 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>
2026-06-18 16:54:35 +08:00

90 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Turkish
// Auto-generated by scripts/translate-i18n.mjs
export const tr = {
"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 ? ' (beta sırasında giriş gerekli, ücretsiz oyun)' : '';
return `Fikirlerinizi girin, stilleri yapılandırın ve oynamak için "Başlat"a tıklayın${authHint}. Aşağıdan küratörlü bir hikaye seçerek <em>InfiPlot</em>'ı hızlıca deneyimleyebilirsiniz. "Ayarlar"a tıklayarak adınızı girebilir ve kendi metin, resim, görü ve TTS anahtarlarınızı yapılandırabilirsiniz—tümü daha stabil bir deneyim için tarayıcınızda yerel olarak saklanır.`;
},
"closeAriaLabel": "Bu ipucunu bir daha gösterme"
},
"about": {},
"errors": {
"emptyFile": "",
"fileTooLarge": "",
"unpackFailed": "",
"parseFailed": "",
"cardNotFound": ""
}
},
"play": {},
"settings": {},
"auth": {},
"history": {},
"customForm": {},
"language": {
"title": "",
"current": "",
"select": ""
}
} as const;
export type TrTranslations = typeof tr;