Files
infiplot-web/lib/i18n/locales/fr.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

// French
// Auto-generated by scripts/translate-i18n.mjs
export const fr = {
"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 ? ' (connexion requise pendant la bêta, jeu gratuit)' : '';
return `Entrez vos idées, configurez les styles et cliquez sur "Démarrer" pour jouer${authHint}. Vous pouvez également choisir une histoire sélectionnée ci-dessous pour découvrir rapidement <em>InfiPlot</em>. Cliquez sur "Paramètres" pour entrer votre nom et configurer vos propres clés de texte, d'image, de vision et de TTS—tout est stocké localement dans votre navigateur pour une expérience plus stable.`;
},
"closeAriaLabel": "Ne plus afficher cette astuce"
},
"about": {},
"errors": {
"emptyFile": "",
"fileTooLarge": "",
"unpackFailed": "",
"parseFailed": "",
"cardNotFound": ""
}
},
"play": {},
"settings": {},
"auth": {},
"history": {},
"customForm": {},
"language": {
"title": "",
"current": "",
"select": ""
}
} as const;
export type FrTranslations = typeof fr;