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.1 KiB
TypeScript
90 lines
2.1 KiB
TypeScript
// 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;
|