バッジとグループをローカライズ(多言語化)するにはどうすればよいですか?

バッジとグループをローカライズ(多言語化)するにはどうすればよいですか?セットアップ中に、バッジとグループのタイトルがテーマの言語に切り替わらないことに気づきました。バッジとグループをテーマの切り替えに従わせるにはどうすればよいですか?

「いいね!」 3

多言語サイト向けにカスタムバッジやグループをローカライズする機能はまだありません。現時点では、投稿、カテゴリ、タグのみをローカライズできます。

「いいね!」 1

了解しました、ありがとうございます。しかし、このウェブサイト(meta.discourse.org)のバッジがテーマと同時に言語を切り替えるのはなぜですか?これは翻訳機能によるものですか?公式チームに、バッジ、グループ、タグの多言語カスタマイズ設定を追加することを提案します。そうしないと、多言語ユーザーはバッジ、グループ、タグの内容を理解できません。

「いいね!」 2

すべてのサイトには、Crowdin 経由で国際化 (i18n) されているシードバッジがいくつかあります。

カスタムバッジは、名前と説明をデータベースにプレーンテキストとして保存します。I18n.t (国際化機能) が badges.my_custom_badge.name のようなキーで呼び出された場合、一致する翻訳がないため、保存されているデータベースの値にフォールバックします。これにより、すべてのロケールで同じテキストが表示されます。

管理者がカスタムバッジキーの翻訳をロケールごとに手動で追加できる回避策があります。

サイトのテキストは、<your site>/admin/customize/site_texts でカスタマイズできます。


具体的な手順

  1. バッジを作成する
  • /admin/badges → 新しいバッジ に移動します。
  • 通常どおり、名前、説明、アイコンなどを設定します。
  1. i18n キーを見つける
  • キーのパターンは badges.{snake_case_name}.name です。
  • snake_case_name は、バッジ名を小文字にし、スペースをアンダースコアに置き換えたものです。
  • 例:「Pokémon Master」 → badges.pokémon_master.name
  1. 翻訳の上書きを追加する
  • /admin/customize/site_texts に移動します。
  • badges.pokémon_master を検索します。
  • 次のようなキーが表示されます。
    • badges.pokémon_master.name
    • badges.pokémon_master.description
    • badges.pokémon_master.long_description
  • 対象のロケール (例: 简体中文) に切り替え、キーをクリックして翻訳されたテキストを入力します。
  1. ロケールごとに繰り返す
  • ドロップダウンでロケールを切り替え、必要な各言語の翻訳を追加します。
    • .name - バッジのタイトル
    • .description - バッジカードに表示される短い説明
    • .long_description - バッジの詳細ページに表示される完全な説明

english

japanese

「いいね!」 4

こんにちは!ご返信ありがとうございます!2番目の手順である「i18n key」の検索はどのように実現されているのでしょうか、i18n keyの場所が見つかりませんでした。

「いいね!」 1

「見つける」というよりは、バッジに付ける名前から導き出すだけです(2番目のステップを「見つける」から「導き出す」に変更します)。

したがって、バッジ名に「Bug Finder」を使用する場合、キーは badges.bug_finder.name になります。

「いいね!」 1

何らかの理由で、/admin/customize/site_textsで何を検索しても「No matching site texts found」と表示されます。原因をご存知でしょうか?

「いいね!」 1

おっと、申し訳ありません。前の手順を修正する必要があります!
サイトテキスト管理ページ(/admin/customize/site_texts)では、Discourse の翻訳ファイルに既に存在するキーしか見つけることができません。したがって、badges.pokémon_master.name のようなカスタムバッジのキーはそこには存在せず、それらを検索しても何も返されません(これが現在発生している問題です)。

私が共有したスクリーンショットは、Railsコンソール経由で翻訳エントリを作成したセットアップからのものです。私が提供した管理UIの手順は、書かれた通りには機能しません。混乱させて申し訳ありません。コンソールアクセスがある場合に実際に機能する方法は、カスタムバッジの翻訳オーバーライドを作成することです。

# キーのパターンは次のとおりです: badges.{name_in_snake_case}.{name|description|long_description}
# 例:「Pokemon Master」というバッジの場合:
TranslationOverride.upsert!("zh_CN", "badges.pokemon_master.name", "宝可梦大师")
TranslationOverride.upsert!("zh_CN", "badges.pokemon_master.description", "あなたの説明")

コンソール経由で作成されると、翻訳は /admin/customize/site_texts に表示され、それ以降はそこから編集できるようになります。

コンソールアクセスがない場合、これは現在不可能です。@awesomerobot が言及したように、カスタムバッジのローカライズはまだサポートされていません。

「いいね!」 4