TIP
Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
Internationalisatie
Internationalisatiebestanden
Binnen plugins vindt u de meertalige bestanden voor zowel de frontend als de backend in de map src/locale.
|- /plugin-i18n
|- /src
|- /locale # Map voor meertalige bestanden
|- en-US.ts # Engelse taal
|- zh-CN.ts # Chinese taal
U kunt vertaalitems toevoegen in de corresponderende meertalige bestanden (/src/locale/${lang}.ts). Als u voor het eerst een meertalig bestand toevoegt, moet u de applicatie opnieuw opstarten om de wijzigingen door te voeren. U kunt de app:getLang API gebruiken om te controleren of de vertaalitems succesvol zijn toegevoegd.
Standaard URL: http://localhost:13000/api/app:getLang?locale=zh-CN
Gerelateerde i18n API's
- 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)
Server
app.i18n server
app.i18n is de globale i18n-instantie, die doorgaans in de CLI wordt gebruikt. U kunt deze bijvoorbeeld combineren met inquirer om interacties via de commandoregel te implementeren.
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 is een klooninstantie van de globale app.i18n. De ctx van elke aanvraag is volledig onafhankelijk en reageert met meertalige informatie op basis van de taal van de client.
Clientaanvraagparameters kunnen in de query string worden geplaatst:
GET /?locale=en-US HTTP/1.1
Host: localhost:13000
Of in de request headers (aanbevolen):
GET / HTTP/1.1
Host: localhost:13000
X-Locale: en-US
Voorbeeld
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();
});
}
}
Bekijk 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()
Hulpprogramma's
tExpr(text) server client
react-i18next
useTranslation(ns) client
withTranslation(ns) client