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>
322 lines
13 KiB
TypeScript
322 lines
13 KiB
TypeScript
// Czech
|
|
// Auto-generated by scripts/translate-i18n.mjs
|
|
|
|
export const cs = {
|
|
"layout": {
|
|
"metadata": {
|
|
"title": "InfiPlot — AI interaktivní hra příběhů",
|
|
"description": "InfiPlot je interaktivní hra příběhů, která používá AI k generování obsahu v reálném čase."
|
|
}
|
|
},
|
|
"home": {
|
|
"examples": {
|
|
"male": [
|
|
"Dětství přítelkyně se náhle zčervenal a přiznala mi lásku",
|
|
"Po probuzení se zdá, že všechny dívky ve třídě mě tajně milují",
|
|
"Uplynuly tři roky, ukázalo se, že jsem bohatý syn, čas na pomstu přišel",
|
|
"Vrátil jsem se s nekonečným Tokenem těsně před vznikem internetu..."
|
|
],
|
|
"female": [
|
|
"Přešla jsem do domu generála jako bezcenná dcera, ale chladný regent mě miluje jen mě",
|
|
"Vrátila jsem se noc před rozchodem, tentokrát já jsem odešla první",
|
|
"Probudila jsem se ve hře jako padouchova dcera, musím se vyhnout všem smrtícím koncům"
|
|
],
|
|
"x": [
|
|
"Otevřela se trhlina v čase, různé verze mě z různých světů se náhle objevily",
|
|
"V paláci paměti se zapomenuté fragmenty reformují do nového příběhu",
|
|
"Začala nekonečná hra, každý má jedinou šanci na úspěch",
|
|
"Systémové upozornění: Vaše volba rozhodne o osudu celého vesmíru"
|
|
]
|
|
},
|
|
"options": {
|
|
"gender": "Zaměření pohlaví",
|
|
"artStyle": "Umělecký styl",
|
|
"plotStyle": "Styl příběhu",
|
|
"voice": "Hlasové obsazení",
|
|
"pacing": "Tempo obsahu"
|
|
},
|
|
"genders": {
|
|
"male": "Mužské",
|
|
"female": "Ženské",
|
|
"x": "X"
|
|
},
|
|
"artStyles": {
|
|
"auto": "Automatické",
|
|
"custom": "Vlastní styl",
|
|
"kyoani": "Kyoto Animation",
|
|
"shinkai": "Makoto Shinkai",
|
|
"ghibli": "Studio Ghibli",
|
|
"3d": "3D animace",
|
|
"cyberpunk": "Kyberpunk",
|
|
"gothic": "Gotika",
|
|
"wasteland": "Poustevna",
|
|
"pixel": "Pixel art",
|
|
"realistic": "Realistické",
|
|
"oil": "Klasický olej",
|
|
"monet": "Claude Monet",
|
|
"watercolor": "Akvarel",
|
|
"ink": "Inkoust",
|
|
"ukiyoe": "Ukijo-e",
|
|
"pencil": "Barevná tužka",
|
|
"sketch": "Ruční skica",
|
|
"manga": "Černobílá manga",
|
|
"children": "Dětská kniha",
|
|
"crayon": "Dětská kresba",
|
|
"clay": "Hliněná plastika",
|
|
"dunhuang": "Dunhuangské nástěnné malby",
|
|
"miniature": "Miniatura",
|
|
"mosaic": "Mozaika",
|
|
"stainedGlass": "Skleněná mozaika",
|
|
"vaporwave": "Vaporwave",
|
|
"vector": "Vektorová ilustrace",
|
|
"lowpoly": "Nízký počet polygonů",
|
|
"popart": "Pop art",
|
|
"glitch": "Glitch art",
|
|
"papercut": "Paper cutting",
|
|
"steampunk": "Steampunk",
|
|
"xianxia": "Sien-šia",
|
|
"darkFairytale": "Tmavá pohádka",
|
|
"urbanFantasy": "Městská fantasy"
|
|
},
|
|
"plotStyles": {
|
|
"straightforward": "Přímé a vzrušující",
|
|
"twist": "Vícezávitkové"
|
|
},
|
|
"voiceOptions": {
|
|
"off": "Vypnuto",
|
|
"on": "Zapnuto"
|
|
},
|
|
"pacings": {
|
|
"fast": "Rychlé a strhující",
|
|
"relaxed": "Pomalejší a detailní"
|
|
},
|
|
"stories": {
|
|
"贤者陨落": "Pád mudrce",
|
|
"画中圣手": "Božská ruka v obraze",
|
|
"花魁的刀": "Meč courtesan"
|
|
},
|
|
"ui": {
|
|
"start": "Start",
|
|
"loadStory": "Načíst příběh",
|
|
"settings": "Nastavení",
|
|
"searchPlaceholder": "Hledat styl...",
|
|
"noMatchingStyle": "Žádný odpovídající styl",
|
|
"close": "Zavřít",
|
|
"back": "Zpět",
|
|
"save": "Uložit",
|
|
"cancel": "Zrušit",
|
|
"saveAndSelect": "Uložit a vybrat"
|
|
},
|
|
"styleModal": {
|
|
"title": "Vyberte umělecký styl",
|
|
"subtitle": "Výchozí 'Automatické' · AI automaticky odpovídající styl podle příběhu; 'Vlastní styl' umožňuje zadat popis nebo nahrát referenční obrázek",
|
|
"customTitle": "Vlastní styl",
|
|
"customPlaceholder": "Popište požadovaný styl obrazu, například:\nSnnová akvarelová stylizace, jemné tóny, nostalgická atmosféra\n\n💡 Tip: Některé modely lépe pracují s anglickými popisy, doporučuje použít AI nástroj k vytvoření profesionálního anglického popisu",
|
|
"uploadImage": "Nahrát referenční obrázek",
|
|
"changeImage": "Změnit",
|
|
"remove": "Odebrat",
|
|
"parsing": "Zpracování...",
|
|
"importFromPreset": "Importovat z přednastaveného stylu...",
|
|
"uploadError": "Podporovány jsou pouze obrazové soubory",
|
|
"visionError": "Vision model vrátil prázdný popis stylu",
|
|
"fileReadError": "Čtení souboru selhalo",
|
|
"imageDecodeError": "Dekódování obrazu selhalo",
|
|
"parseError": "Zpracování selhalo",
|
|
"refImageAlt": "Referenční obrázek stylu"
|
|
},
|
|
"hero": {
|
|
"title": "Jaký příběh chcete dnes zažít?",
|
|
"placeholder": "Omlouváme se, ale nemohu splnit tento požadavek.",
|
|
"enterHint": "Enter k odeslání · Shift+Enter nový řádek"
|
|
},
|
|
"hint": {
|
|
"text": (params: { authEnabled?: boolean }) => {
|
|
const authHint = params.authEnabled ? ' (během bety vyžadováno přihlášení, hra zdarma)' : '';
|
|
return `Zadejte své nápady, nakonfigurujte styly a klikněte na "Spustit" pro hraní${authHint}. Můžete si také vybrat kurátorskou příběh z níže pro rychlé zážitky <em>InfiPlot</em>. Klikněte na "Nastavení" pro zadání vašeho jména a konfiguraci vlastních klíčů pro text, obrázky, vizi a TTS—vše uloženo lokálně ve vašem prohlížeči pro stabilnější zážitek.`;
|
|
},
|
|
"closeAriaLabel": "Znovu nezobrazovat tuto nápovědu"
|
|
},
|
|
"about": {
|
|
"title": "InfiPlot",
|
|
"description": "je interaktivní hra příběhů, která používá AI k generování obsahu v reálném čase — obrázky, zvuk a větve příběhu jsou generovány během hraní.",
|
|
"team": "TÝM",
|
|
"teamText": "Pocházíme z univerzit včetně Tsinghua University a Lanzhou University, chceme prozkoumat více možností multimodálních modelů mimo schopnosti jako 'přímé generování obrázků a videí'. Tento projekt je stále v rané fázi, stále rekrutujeme členy. Pokud máte zájem, kontaktujte nás, těšíme se na vás.",
|
|
"contact": "KONTAKT",
|
|
"email": "E-mail",
|
|
"openSource": "OTEVŘENÝ ZDROJ",
|
|
"betaUsers": "BETA TESTERI",
|
|
"qqGroupLabel": "Skupina QQ:",
|
|
"qqGroupAlt": "InfiPlot veřejná beta skupina QR kód (ID skupiny 575404333)",
|
|
"privacyPolicy": "Zásady ochrany soukromí",
|
|
"terms": "Podmínky služby",
|
|
"copyright": "© 2026 InfiPlot. Všechna práva vyhrazena."
|
|
},
|
|
"errors": {
|
|
"emptyFile": "Tento soubor příběhu je prázdný.",
|
|
"fileTooLarge": "Soubor příběhu je příliš velký.",
|
|
"unpackFailed": "Rozbalení souboru příběhu selhalo.",
|
|
"parseFailed": "Zpracování souboru příběhu selhalo.",
|
|
"cardNotFound": "Curated story nebyl nalezen: {cardName}"
|
|
}
|
|
},
|
|
"play": {
|
|
"loading": {
|
|
"firstFrame": "Načítání prvního scény",
|
|
"transitioning": "AI vytváří další scénu",
|
|
"visionThinking": "AI přemýšlí co jste viděli",
|
|
"loadingFirst": "První scény se načítá",
|
|
"awakening": "Načítání"
|
|
},
|
|
"freeform": {
|
|
"placeholder": "Zadejte co chcete říct nebo udělat...",
|
|
"title": "Volný vstup",
|
|
"ariaLabel": "Volný vstup"
|
|
},
|
|
"choiceDisabled": "Sdílený příběh neobsahuje tuto větev",
|
|
"tooltips": {
|
|
"openSettings": "Otevřít nastavení",
|
|
"openHistory": "Historie příběhu",
|
|
"fullscreen": "Režim celé obrazovky (F)",
|
|
"enterFullscreen": "Vstoupit do režimu celé obrazovky",
|
|
"exportGallery": "Exportovat jako interaktivní galerii",
|
|
"exportGalleryLabel": "Exportovat galerii",
|
|
"shareStory": "Exportovat příběh jako .infiplot",
|
|
"shareStoryLabel": "Sdílet aktuální příběh",
|
|
"mute": "Ztlumit",
|
|
"unmute": "Zrušit ztlumení",
|
|
"closeNudge": "Zavřít nápovědu",
|
|
"silenceNudge": "Nejste spokojeni? Zkuste zadat vlastní API klíč",
|
|
"back": "Zpět"
|
|
},
|
|
"imageAlt": "Vygenerovaná scéna",
|
|
"counter": {
|
|
"scene": "Scéna {n}",
|
|
"beat": "Beat {n}",
|
|
"middle": "·"
|
|
},
|
|
"buttons": {
|
|
"fullscreen": "F · klávesa · celá obrazovka",
|
|
"exportGallery": "Exportovat galerii",
|
|
"shareStory": "Sdílet příběh",
|
|
"muted": "Ztlumeno",
|
|
"sound": "Se zvukem"
|
|
},
|
|
"error": {
|
|
"title": "Došlo k chybě",
|
|
"back": "Zpět"
|
|
},
|
|
"previousStep": "Předchozí krok",
|
|
"settingsFooter": "Po uložení se TTS klíč okamžitě uplatní, použijte svůj limit k syntéze zvuku pro aktuální scénu.",
|
|
"shareErrors": {
|
|
"notFound": "Soubor příběhu nebyl nalezen.",
|
|
"invalid": "Sdílený soubor příběhu neobsahuje platný příběh.",
|
|
"noImage": "Sdílený soubor postrádá první obrázek scény.",
|
|
"noNextImage": "Sdílený soubor postrádá další obrázek scény.",
|
|
"noMemory": "Sdílený soubor postrádá počáteční paměť příběhu.",
|
|
"packFailed": "Balení sdíleného příběhu selhalo"
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Nastavení",
|
|
"subtitle": "Volitelné · Tato nastavení jsou uložena pouze v místním prohlížeči",
|
|
"tabs": {
|
|
"general": "Obecné",
|
|
"models": "Modely"
|
|
},
|
|
"general": {
|
|
"playerName": "Jméno hráče",
|
|
"playerNamePlaceholder": "Prázdné použije 'vy'",
|
|
"playerNameHint": "NPC budou oslovoováni tímto jménem v dialogu.",
|
|
"visionClick": "Kliknutí pro identifikaci scény",
|
|
"visionOn": "Zapnuto",
|
|
"visionOff": "Vypnuto",
|
|
"visionHint": "Po zapnutí kliknutí na scénu ve výběrovém uzlu spustí AI identifikaci a vygeneruje novou větev příběhu."
|
|
},
|
|
"models": {
|
|
"corsNotice": "Ujistěte se, že váš API endpoint podporuje CORS požadavky z prohlížeče. Většina hlavních poskytovatelů (OpenAI, Anthropic, Gemini, Runware atd.) již ve výchozím nastavení podporuje.",
|
|
"textModel": "Textový model",
|
|
"imageModel": "Obrazový model",
|
|
"visionModel": "Vision model",
|
|
"baseUrl": "Základní URL",
|
|
"apiKey": "API klíč",
|
|
"model": "Model",
|
|
"provider": "Poskytovatel (volitelné)",
|
|
"providerHint": "Při prázdném systém automaticky odvodí protokol podle základní URL.",
|
|
"providerAuto": "Automatické odvození (doporučeno)",
|
|
"show": "Zobrazit",
|
|
"hide": "Skrýt"
|
|
},
|
|
"tts": {
|
|
"title": "Model hlasového doprovodu",
|
|
"description": 'Zadejte svůj <span class="text-clay-800">Xiaomi MiMo API klíč</span>, hlasový doprovod bude syntetizován lokálně v prohlížeči, klíč je uložen pouze lokálně. MiMo TTS je nyní<span class="text-clay-800">zdarma</span>.',
|
|
"keyType": "Typ klíče",
|
|
"payg": "Pay-as-you-go",
|
|
"paygSub": "Začíná na sk-",
|
|
"tokenPlan": "Token plán",
|
|
"tokenPlanSub": "Začíná na tp-",
|
|
"region": "Regionální uzel",
|
|
"regionHint": "Vyberte uzel odpovídající vaší oblasti předplatného.",
|
|
"apiKeyPlaceholderPayg": "Vložte klíč začínající na sk-",
|
|
"apiKeyPlaceholderToken": "Vložte klíč začínající na tp-",
|
|
"keyMismatchPayg": "Tento klíč nezačíná na sk-",
|
|
"keyMismatchToken": "Tento klíč nezačíná na tp-",
|
|
"tutorialLink": "Jak získat klíč zdarma? Zobrazit tutoriál"
|
|
},
|
|
"actions": {
|
|
"save": "Uložit",
|
|
"clearAll": "Vymazat vše"
|
|
}
|
|
},
|
|
"auth": {
|
|
"steps": {
|
|
"pick": "Přihlaste se pro pokračování",
|
|
"email": "Přihlášení e-mailem",
|
|
"otp": "Ověřovací kód"
|
|
},
|
|
"googleLogin": "Přihlášení Google",
|
|
"githubLogin": "Přihlášení GitHub",
|
|
"emailLogin": "Přihlášení ověřovacím kódem e-mailem",
|
|
"or": "Nebo",
|
|
"emailPlaceholder": "your@email.com",
|
|
"sendCode": "Odeslat kód",
|
|
"sending": "Odesílání...",
|
|
"codeSent": "Ověřovací kód byl odeslán na {email}",
|
|
"codePlaceholder": "6místný ověřovací kód",
|
|
"verify": "Potvrdit",
|
|
"verifying": "Ověřování...",
|
|
"resend": "Znovu odeslat",
|
|
"back": "Zpět",
|
|
"close": "Zavřít",
|
|
"ariaLabel": "Přihlášení"
|
|
},
|
|
"history": {
|
|
"title": "Historie příběhu",
|
|
"close": "Zavřít",
|
|
"closeAriaLabel": "Zavřít historii příběhu",
|
|
"noHistory": "Zatím žádná historie.",
|
|
"scene": "Scéna {n}",
|
|
"choice": "Volba",
|
|
"action": "Akce",
|
|
"ariaLabel": "Historie příběhu"
|
|
},
|
|
"customForm": {
|
|
"world": "Svět · Světový názor",
|
|
"style": "Styl · Vizuální styl",
|
|
"worldPlaceholder": "Příklad: Jihočínský okresální město koncem 90. let. Hlavní postava je přestupující student v posledním ročníku střední školy, který v deštivém červnu potkává spolužáka, který čte básně na střeše.",
|
|
"stylePlaceholder": "Příklad: Akvarelové měkké světlo, teplé odpolední světlo, styl vizuální novely, tradiční panel dialogu...",
|
|
"status": {
|
|
"ready": "Připraven",
|
|
"needMore": "Je třeba ještě dva odstavce",
|
|
"starting": "První scény se načítá..."
|
|
},
|
|
"start": "Spustit"
|
|
},
|
|
"language": {
|
|
"title": "Jazyk",
|
|
"current": "Aktuální jazyk",
|
|
"select": "Vybrat jazyk"
|
|
}
|
|
} as const;
|
|
|
|
export type csTranslations = typeof cs;
|