Discourse テーマやテーマコンポーネントにカスタム言語や翻訳を追加したい場合、ローカライズされた文字列を含めることができるようになり、これらは UI コンポーネントで使用可能になります。翻訳はコア/プラグインの翻訳と同じ形式で保存され、ほぼ同じ方法で使用できます。
テーマは /locales/{locale}.yml のような形式で翻訳ファイルを提供できます。これらのファイルは有効な YAML である必要があり、定義されているロケールと等しい単一のトップレベルキーを持つ必要があります。これらは discourse_theme CLI を使用して定義したり、.tar.gz をインポートしたり、GIT リポジトリからインストールしたり、theme-creator.discourse.org のエディタ経由で定義したりできます。
ロケールファイルの例は次のようになります。
en:
theme_metadata:
description: "This is a description for my theme"
settings:
theme_setting_name: "This is a description for the setting `theme_setting_name`"
another_theme_setting_name:
description: "This is a description for the setting `another_theme_setting_name`"
sidebar:
welcome: "Welcome"
back: "back,"
welcome_subhead: "We're glad you're here!"
likes_header: "Share the Love"
badges_header: "Your Top Badges"
full_profile: "View your full profile"
管理者は、/admin/customize/themes ユーザーインターフェースでテーマごとに個々のキーを上書きできます。フォールバックはコアと同じ方法で処理されるため、英語以外の言語の翻訳が不完全であっても、英語のキーが使用されるため問題ありません。
バックグラウンドでは、これらの翻訳はテーマ固有のネームスペースの下でコアの翻訳と並行して保存されます。たとえば次のようになります。
theme_translation.{theme_id}.sidebar.welcome
テーマコードに theme_id をハードコーディングすることは決して避けるべきなので、翻訳にアクセスできるようにするためのいくつかの方法があります。
.hbs ファイルでは、専用のヘルパーを使用できます。
{{theme-i18n "my_translation_key"}}
または、翻訳キーを別のコンポーネントに渡す必要がある場合は、theme-prefix ヘルパーを使用できます。
<DButton @label={{theme-prefix "my_translation_key"}} />
Javascript、または .gjs ファイルでは、themePrefix 関数を使用できます。これは自動的にインジェクトされ、インポートする必要はありません。
const result = I18n.t(themePrefix("my_translation_key"));
<template>{{i18n (themePrefix "blah")}}</template>
テーマで翻訳を使用する完全な例については、@awesomerobot の Fakebook テーマを参照してください: GitHub - discourse/Fakebook
このドキュメントはバージョン管理されています - 変更の提案はgithubで行ってください。


