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 ユーザーインターフェースで、テーマごとに個々のキーを上書きできます。フォールバックはコアと同じ方法で処理されるため、英語以外の言語で不完全な翻訳があっても、英語のキーが使用されます。
管理者は Appearance → Site texts でもこれらの翻訳を管理できます。テーマまたはコンポーネントを選択してそのロケールファイルの文字列を検索し、選択した言語で翻訳を編集するか、上書きをロケールファイルのデフォルトに戻すことができます。選択は /admin/customize/site_texts?theme_id=THEME_ID を使用してリンクできます。Site texts はこれらのエントリを js.theme_translations.THEME_ID.KEY として識別し、編集にはテーマエディタと同じテーマ翻訳の上書きを使用します。
バックグラウンドでは、これらの翻訳はコアの翻訳と一緒に、テーマ固有のネームスペースの下に保存されます。例えば:
theme_translation.{theme_id}.sidebar.welcome
テーマコード内で theme_id をハードコードすることは決してしないでください。翻訳キーを動的に構築するには、themePrefix ヘルパーを使用します:
import { i18n } from "discourse-i18n";
import { themePrefix } from "virtual:theme";
// In JS code:
const result = i18n(themePrefix("my_translation_key"));
console.log("From Javascript", result);
// In a template tag:
<template>{{i18n (themePrefix "blah")}}</template>
テーマで翻訳を使用する完全な例については、@awesomerobot の Fakebook テーマを確認してください: GitHub - discourse/Fakebook · GitHub
このドキュメントはバージョン管理されています - 変更提案は github でどうぞ。


