logologo
Başlangıç
Kılavuz
Geliştirme
Eklentiler
API
Ana Sayfa
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Başlangıç
Kılavuz
Geliştirme
Eklentiler
API
Ana Sayfa
logologo

Hızlı Başlangıç

Eklenti Geliştirmeye Genel Bakış
İlk Eklentinizi Yazma
Proje Dizin Yapısı

Sunucu Taraflı Geliştirme

Genel Bakış
Plugin
Collections
Database İşlemleri
DataSourceManager
ResourceManager
ACL İzin Kontrolü
Middleware
Cache
Event
Context
Migration
Logger
I18n
Command
CronJobManager
Test

İstemci Taraflı Geliştirme

Genel Bakış
Plugin
Context
Router
ACL İzin Kontrolü
DataSourceManager
Resource
Request
Styles & Themes
Logger
I18n
Test

Diğer

Eklenti Yükseltme Kılavuzu
Dil Listesi
Bağımlılık Yönetimi
Derleme
Next PageEklenti Geliştirmeye Genel Bakış
TIP

Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın

#Uluslararasılaştırma

#Uluslararasılaştırma Dosyaları

Eklentilerde, hem ön uç hem de arka uç için çok dilli dosyalar src/locale klasöründe saklanır.

|- /plugin-i18n
  |- /src
    |- /locale      # Çok dilli klasör
      |- en-US.ts   # İngilizce dil dosyası
      |- zh-CN.ts   # Çince dil dosyası

Çeviri girdilerini ilgili çok dilli dosyalara (/src/locale/${lang}.ts) ekleyebilirsiniz. Eğer çok dilli bir dosyayı ilk kez ekliyorsanız, değişikliklerin etkili olması için uygulamayı yeniden başlatmanız gerekir. Çeviri girdilerinin başarıyla eklenip eklenmediğini doğrulamak için app:getLang API'sini kontrol edebilirsiniz.

Varsayılan URL: http://localhost:13000/api/app:getLang?locale=zh-CN

#i18n ile İlgili API'ler

  • 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
    • tExpr(text, options)
  • react-i18next
    • useTranslation(ns)
    • withTranslation(ns)

#Sunucu

#app.i18n server

app.i18n, genellikle CLI'da kullanılan global i18n örneğidir. Örneğin, komut satırı etkileşimlerini uygulamak için inquirer ile birlikte kullanılabilir.

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, global app.i18n'in bir cloneInstance'ıdır. Her isteğin ctx'i tamamen bağımsızdır ve istemcinin diline göre çok dilli bilgilerle yanıt verir.

İstemci istek parametreleri sorgu dizesine yerleştirilebilir:

GET /?locale=en-US HTTP/1.1
Host: localhost:13000

Veya istek başlıklarına yerleştirilebilir (önerilir):

GET / HTTP/1.1
Host: localhost:13000
X-Locale: en-US

Örnek

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();
    });
  }
}

http://localhost:13000/api/test-i18n?locale=zh-CN adresini görüntüleyin.

#ctx.t(text, options) server

#plugin.t() server

#İstemci

#ctx.i18n client

#ctx.t(text, options) client

#plugin.t()

#useT()

#Yardımcı Fonksiyonlar

#tExpr(text) server client

#react-i18next

#useTranslation(ns) client

#withTranslation(ns) client