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
// Korean
|
|
// Auto-generated by scripts/translate-i18n.mjs
|
|
|
|
export const ko = {
|
|
"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 KoTranslations = typeof ko;
|