Discourseのローカライズ

Jeff Atwood
Mar 5, 2013 • 2 min read

Discourseは、あらゆる人間の言語をサポートするディスカッションプラットフォームとして、常にそのような目的で設計されてきました。英語のみのサポートで一ヶ月前にローンチしましたが、デフォルトのRuby on Rails i18n gemを使用しているため、Discourseはお好みの言語に(比較的)簡単に翻訳することができます。

discourse-in-french

先週より、/adminの設定でdefault_localeの設定を変更することで、Discourseインストールのデフォルト言語を指定できるようになりました。

Discourseのコードベースの/config/localesフォルダを参照すると、現在サポートされている各言語のYAMLファイルが、クライアント用とサーバー用の2種類で用意されているのがわかります。すべての言語は、標準的なISO 639-1の2文字コードで識別されます。

  • client.cs.yml
  • server.cs.yml
  • client.fr.yml
  • server.fr.yml

各ファイルの中には、左側にトークン、右側に翻訳が記載されています。

fr:
  js:
    share:
      topic: 'partager un lien vers cette discussion'
      post: 'partager un lien vers ce message'

    edit: 'éditer le titre et la catégorie de cette discussion'
    not_implemented: "Cette fonctionnalité n'a pas encore été implémentée, désolé."
    no_value: "Non"
    yes_value: "Oui"
cs:
  js:
    share:
      topic: 'sdílet odkaz na toto téma'
      post: 'sdílet odkaz na tento příspěvek'

    edit: 'upravit název a kategorii příspěvku'
    not_implemented: "Tato fičura ještě není implementovaná"
    no_value: "Ne"
    yes_value: "Ano"

文字列を表示する際にi18n関数を呼び出すことには細心の注意を払ってきましたが、常に成功していたわけではありません。

kubabreckaやZogStriPをはじめとする多くのコントリビューターの協力を得て、ローンチ以来Discourseのコードベースを整理し、すべての文字列出力が適切なi18n関数を通るようにしてきました。難しいことではありません。ハードコードされた文字列を見つけた箇所で、代わりにトークンを参照する関数に変更するだけです。

 <div class='alert alert-error'>
-    Something went wrong processing your log in, please try again.
+    <% t 'login.omniauth_error_unknown' %>
 </div>

もちろん、国際化とローカライズは複雑なテーマであり、日付や時刻のフォーマット、数値のフォーマット、複数形の違い、右から左へ書く言語、その他数十にのぼる細かな点にはまだ手をつけていません。しかし、少なくともすべての文字列をi18nに通すようにしたことは、正しい方向への大きな一歩です。

Discourseのローカライズにご協力ください!

コントリビュートする時間がある方は、/config/localesに適切な言語コードと構造を持つYMLファイルを作成し、マスターファイルであるserver.en.ymlclient.en.ymlから翻訳を進めてください。それが主な作業ですが、クライアントサイドの翻訳と日付フォーマットを整えるためには、もう少し作業が必要です。

どんな言語であっても、より多くの人がDiscourseを使えるようになれば、より多くの会話が生まれ、世界中からのコントリビュートに対してDiscourseはより魅力的なものになります!

melted-crayon-rainbow

原文はこちら:


Good Loopでは、Discourseのセルフホスティングを安価で提供しています。開発元であるCDCK社の協力のもと、公式ブログ記事の翻訳・公開など、日本での普及にも努めています。

詳しくはこちら: Discourseの導入・運用支援・コンサルティング – Good Loop