Avis de traduction IA
Cette documentation a été traduite automatiquement par IA.
Internationalisation
Fichiers d'internationalisation
Dans les plugins, les fichiers multilingues, tant pour le frontend que pour le backend, sont stockés dans le dossier src/locale.
|- /plugin-i18n
|- /src
|- /locale # Dossier multilingue
|- en-US.ts # Anglais
|- zh-CN.ts # Chinois
Il vous suffit d'ajouter les entrées de traduction dans les fichiers multilingues correspondants (/src/locale/${lang}.ts). Si vous ajoutez un nouveau fichier multilingue pour la première fois, vous devrez redémarrer l'application pour que les modifications prennent effet. Vous pouvez vérifier l'API app:getLang pour vous assurer que les entrées de traduction ont été ajoutées avec succès.
URL par défaut : http://localhost:13000/api/app:getLang?locale=zh-CN
API liées à l'i18n
- server
- app.i18n
- app.t(text, options)
- ctx.i18n
- ctx.t(text, options)
- plugin.t()
- client
- ctx.i18n
- ctx.t(text, options)
- plugin.t()
- useT()
- utils
- react-i18next
- useTranslation(ns)
- withTranslation(ns)
Serveur
app.i18n server
app.i18n est l'instance i18n globale, généralement utilisée dans les interfaces en ligne de commande (CLI). Par exemple, elle peut être combinée avec inquirer pour implémenter des interactions en ligne de commande.
import select from '@inquirer/select';
import input from '@inquirer/input';
export class PluginSampleI18nServer extends Plugin {
load() {
this.app.command('test-i18n').action(async () => {
const answer1 = await select({
message: 'Select a language',
choices: [
{
name: '中文',
value: 'zh-CN',
},
{
name: 'English',
value: 'en-US',
},
],
});
await this.app.changeLanguage(answer1);
const answer2 = await input({
message: app.i18n.t('Enter your name'),
});
console.log(app.i18n.t(`Your name is {{name}}`, { name: answer2 }));
});
}
}
app.t(text, options) server
ctx.i18n server
ctx.i18n est une cloneInstance de l'instance app.i18n globale. Le ctx de chaque requête est entièrement indépendant et répond avec les informations multilingues basées sur la langue du client.
Les paramètres de requête du client peuvent être placés dans la chaîne de requête (query string) :
GET /?locale=en-US HTTP/1.1
Host: localhost:13000
Ou dans les en-têtes de requête (recommandé) :
GET / HTTP/1.1
Host: localhost:13000
X-Locale: en-US
Exemple
export class PluginSampleI18nServer extends Plugin {
load() {
this.app.use(async (ctx, next) => {
if (ctx.path === '/api/test-i18n') {
ctx.body = `${ctx.i18n.t('Hello')} ${ctx.i18n.t('World')}`;
}
await next();
});
}
}
Consultez http://localhost:13000/api/test-i18n?locale=zh-CN
ctx.t(text, options) server
plugin.t() server
Client
ctx.i18n client
ctx.t(text, options) client
plugin.t()
useT()
Fonctions utilitaires
tExpr(text) server client
react-i18next
useTranslation(ns) client
withTranslation(ns) client