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

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

#I18n

NocoBase eklentilerinde, hem ön uç hem de arka uç için çok dilli uluslararasılaştırma (i18n) desteği bulunur. Tek tip bir mekanizma sayesinde, eklentilerinizde çok dilli içerikleri kolayca uygulayabilirsiniz.

#Çok Dilli Dosya Yönetimi

Eklenti çok dilli dosyaları, src/locale dizininde tek tip olarak saklanır. Dosyaları dil dosyasına göre adlandırmanız önerilir, örneğin:

|- /plugin-hello
  |- /src
    |- /locale
      |- en-US.json   # İngilizce
      |- zh-CN.json   # Çince

Her dil dosyası, o dile ait tüm çeviri girdilerini içeren bir JSON nesnesi dışa aktarır, örneğin:

// zh-CN.json
{
  "Hello": "你好",
  "World": "世界",
  "Enter your name": "请输入你的名字",
  "Your name is {{name}}": "你的名字是 {{name}}"
}
// en-US.json
{
  "Hello": "Hello",
  "World": "World",
  "Enter your name": "Enter your name",
  "Your name is {{name}}": "Your name is {{name}}"
}

Dil dosyalarını ilk kez eklediğinizde, etkili olmaları için uygulamayı yeniden başlatmanız gerekir. Çeviri girdilerini API aracılığıyla doğrulayabilirsiniz:
http://localhost:13000/api/app:getLang?locale=zh-CN

#Global i18n Örneği

app.i18n, global i18n örneğidir ve CLI veya eklenti global senaryoları için uygundur. Komut satırı etkileşimlerini uygulamak için inquirer ile birleştirilebilir:

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.i18n.t(text, options), metin çevirmek ve şablon değişkenlerini desteklemek için kullanılır.

#İstek Bağlamı i18n

Her isteğin ctx.i18n'i, global i18n örneğinin bir klonudur ve istemcinin diline göre çok dilli bilgileri bağımsız olarak yanıtlar.

İstemci Dilini Ayarlama

  • Query String:
GET /?locale=en-US HTTP/1.1
Host: localhost:13000
  • İstek Başlığı (Önerilen):
GET / HTTP/1.1
Host: localhost:13000
X-Locale: en-US

Middleware'de Kullanım

export class PluginSampleI18nServer extends Plugin {
  load() {
    this.app.use(async (ctx, next) => {
      if (ctx.path === '/api/test-i18n') {
        ctx.body = ctx.t('Hello', { ns: '@my-project/plugin-hello' });
      }
      await next();
    });
  }
}

http://localhost:13000/api/test-i18n?locale=zh-CN adresine eriştiğinizde 你好 (Çince 'Merhaba') döndürülür.

#Eklenti İçindeki i18n

Eklentiler, çevirileri almak için doğrudan plugin.t(key, options) kullanabilir:

export class PluginSampleI18nServer extends Plugin {
  load() {
    this.app.use(async (ctx, next) => {
      if (ctx.path === '/api/plugin-i18n') {
        ctx.body = this.plugin.t('Hello');
      }
      await next();
    });
  }
}

plugin.t(text), ctx.t(text, { ns }) ile eşdeğerdir.

#İlgili API'ler

  • app.i18n
  • app.t(text, options)
  • ctx.i18n
  • ctx.t(text, options)
  • plugin.t()
  • tExpr(text, options)