logologo
スタート
マニュアル
開発
プラグイン
API
ホーム
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
ホーム
logologo

クイックスタート

プラグイン開発概要
最初のプラグインを作成
プロジェクトディレクトリ構造

サーバーサイド開発

概要
プラグイン
コレクション
データベース操作
データソース管理
リソース管理
ACL権限制御
ミドルウェア
キャッシュ
イベント
リクエストコンテキスト
マイグレーション
ロガー
I18n 国際化
コマンド
定時タスク管理
テスト

クライアントサイド開発

概要
プラグイン
コンテキスト
ルーター
ACL権限制御
データソース管理
リソース
リクエスト
スタイルとテーマ
ロガー
I18n 国際化
テスト

その他

プラグインアップグレードガイド
言語一覧
依存関係の管理
ビルド
Next Pageプラグイン開発概要
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#国際化

#国際化ファイル

プラグインでは、フロントエンドとバックエンド両方の多言語ファイルがsrc/localeフォルダーに保存されます。

|- /plugin-i18n
  |- /src
    |- /locale      # 多言語フォルダー
      |- en-US.ts   # 英語ファイル
      |- zh-CN.ts   # 中国語ファイル

対応する多言語ファイル(/src/locale/${lang}.ts)に翻訳エントリを追加するだけでOKです。初めて多言語ファイルを追加する場合は、変更を反映させるためにアプリケーションの再起動が必要です。翻訳エントリが正常に追加されたかを確認するには、app:getLang APIをチェックしてください。

デフォルトURL: http://localhost:13000/api/app:getLang?locale=zh-CN

#i18n関連API

  • サーバー
    • app.i18n
    • app.t(text, options)
    • ctx.i18n
    • ctx.t(text, options)
    • plugin.t()
  • クライアント
    • ctx.i18n
    • ctx.t(text, options)
    • plugin.t()
    • useT()
  • ユーティリティ
    • tExpr(text, options)
  • React-i18next
    • useTranslation(ns)
    • withTranslation(ns)

#サーバー

#app.i18n server

app.i18nはグローバルなi18nインスタンスで、通常はCLIで使用されます。例えば、inquirerと組み合わせてコマンドラインのインタラクションを実装する際に利用できます。

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: '言語を選択してください',
        choices: [
          {
            name: '中国語',
            value: 'zh-CN',
          },
          {
            name: '英語',
            value: 'en-US',
          },
        ],
      });
      await this.app.changeLanguage(answer1);
      const answer2 = await input({
        message: app.i18n.t('名前を入力してください'),
      });
      console.log(app.i18n.t(`あなたの名前は{{name}}です`, { name: answer2 }));
    });
  }
}

#app.t(text, options) server

#ctx.i18n server

ctx.i18nはグローバルなapp.i18nのcloneInstanceです。各リクエストのctxは完全に独立しており、クライアントの言語に基づいて多言語情報を提供します。

クライアントからのリクエストパラメータは、クエリ文字列に含めることができます。

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

または、リクエストヘッダーに含めることもできます(推奨)。

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

例

export class PluginSampleI18nServer extends Plugin {
  load() {
    this.app.use(async (ctx, next) => {
      if (ctx.path === '/api/test-i18n') {
        ctx.body = `${ctx.i18n.t('こんにちは')} ${ctx.i18n.t('世界')}`;
      }
      await next();
    });
  }
}

こちらで確認できます: http://localhost:13000/api/test-i18n?locale=zh-CN

#ctx.t(text, options) server

#plugin.t() server

#クライアント

#ctx.i18n client

#ctx.t(text, options) client

#plugin.t()

#useT()

#ユーティリティ関数

#tExpr(text) server client

#React-i18next

#useTranslation(ns) client

#withTranslation(ns) client