Discourseテーマまたはテーマコンポーネントにカスタム言語や翻訳を追加したい方に向けて、UIコンポーネントで使用可能なローカライズされた文字列をインクルードできるようになりました。翻訳はコア/プラグインの翻訳と同じ形式で保存され、ほぼ同じ方法で使用できます。
テーマは、/locales/{locale}.yml のような形式で翻訳ファイルを提供できます。これらのファイルは有効なYAMLである必要があり、トップレベルのキーは1つで、定義されているロケールと等しくなければなりません。これらは 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 で。


