エディタとドキュメントの翻訳

Godot は、英語を知らなかったり、英語になじみがなかったりする人を含め、すべての人がゲーム開発を利用できるようにすることを目指しています。そのため、コミュニティの翻訳努力のおかげで、最も重要なリソースを多くの言語で利用できるように最善を尽くしています。

リソースには以下が含まれています:

  1. The Godot editor's interface.

  2. The class reference, available both online and in the editor.

  3. The online documentation (editor manual and tutorials).

翻訳を行うために、我々はGNU gettex file フォーマット(PO ファイル)と、オープンソースのウェブベース翻訳プラットフォームである Weblate を使います。weblateは多くのコントリビューターが様々なコンポーネントについての翻訳を完成させ、最新の状態に保つのを助けます。上記の太字のリンクをクリックすると、Weblateの各リソースにアクセスできます。

本ページでは、Weblate の一般的な翻訳ワークフローの概要と、キーワードの扱い方や画像のローカライズなど、リソースに特化した説明をいくつか紹介します。

Tip

Translating all the official Godot content is a massive undertaking, so we advise prioritizing the resources as they are listed above: first the editor interface, then the class reference, then the online documentation.

Weblate を用いた翻訳

私たちの翻訳は最終的に Godot エンジンとそのドキュメントの Git リポジトリに保存されますが、翻訳の更新はすべて Weblate を通じて行われるため、Gitリポジトリへの直接のプルリクエストは受け付けていません。翻訳は Weblate と Godot リポジトリの間で、メンテナによって手動で同期されます。

そのためGodotの翻訳に貢献するためには Weblate に登録する必要があります

サインインしたら、貢献したいGodotリソース(このページでは例として エディタ翻訳 を使います)を開いて、すべての言語リストを見つけましょう:

../../_images/l10n_01_language_list.png

参考

詳細についてはWeblateの 翻訳ワークフロー ドキュメントも参照してください。

新しい言語の追加

あなたの翻訳先の言語がすでにリストに存在する場合には、その言語の名前をクリックして概要にアクセスし、このセクションの残りをスキップすることができます。

あなたの言語がリストにない場合は、言語リストの一番下までスクロールし、 "新しい翻訳を開始 " ボタンをクリックし、翻訳したい言語を選択します:

../../_images/l10n_02_new_translation.png

重要

もしあなたの言語がいくつかの国で話されていて、地域的なバリエーションが限られているのであれば、地域的なバリエーション(例: fr_FR はフランス語(フランス)、 fr_CA はフランス語(カナダ)、 fr_DZ はフランス語(アルジェリア))ではなく、一般的なバリエーション(例: fr フランス語)で追加することを検討してください。

Godotには膨大な量の翻訳すべきコンテンツがありますから、同じ言語でも地域によるバリエーションのために翻訳を複製するのは、言語のバリエーションが十分に大きい場合にのみ行うべきです。加えて、地域によるバリエーション用に翻訳が行われた場合、その翻訳を自動的に利用できるユーザーは、その地域にいるユーザー(またはシステム言語がその地域用に設定されているユーザー)だけになります。

地域的なバリエーションが重大で別々の翻訳が必要な場合は、可能であれば、まず一般的なバリエーションを完成させることに集中し、その後、完全に完成した翻訳を地域的なバリエーションに複製し、関連する編集を行うことをお勧めします。これは、例えばスペイン語(最初に es に取り組み、必要に応じて es_ARes_ESes_MX などに複製する)やポルトガル語(pt_BRpt_PT )などに適した戦略です。

翻訳インターフェース

言語を選択すると、翻訳またはレビューが残っている文字列がいくつあるかを含む、翻訳ステータスの概要が表示されます。各項目をクリックして、対応するリストをブラウズすることができます。また、 "翻訳" ボタンをクリックすると、アクションが必要な文字列のリストを開始することができます。

../../_images/l10n_03_translation_overview.png

リストを選択して "翻訳" をクリックすると、全ての作業が行われるメインの翻訳インターフェースが表示されます:

../../_images/l10n_04_translation_interface.png

このページには、以下のものがあります:

  • ツールバーでは、現在のリストにある文字列を循環したり、別の定義済みリストに変更したり、カスタム検索を行ったりすることができます。シンプルなインターフェイスの "Zen" 編集モードもあります。

  • 「翻訳」パネルに作業している実際の文字列が表示されています。デフォルトでは、英語の原文の文字列と翻訳先の言語のエディットテキストボックスがあるはずです。他の言語に精通している場合は、ユーザー設定でその言語を追加して、翻訳先のテキストボックスを増やすこともできます。現在の文字列の翻訳・編集が終わったら、「保存」ボタンを押して変更を保存し、次のエントリに進みます。または、「スキップ」ボタンでスキップすることもできます。「要編集」チェックボックスは、原文の文字列が更新され、その変更を取り込むために翻訳を見直す必要があることを意味します(POの専門用語では、これはいわゆる「ファジーな(あいまいな)」文字列です)。このような文字列は修正されるまで翻訳として使用されません。

  • 下パネルには翻訳作業を助ける様々なツールがあります。近の文字列による文脈(基本的に同じ編集ツールやドキュメントページからなので、似たような用語を使っているはずです)や、他の翻訳者からのコメント、機械翻訳、そしてこの文字列に対する他の既存の翻訳のリストなどです。

  • 右上には用語集があり、エントリが以前に追加され、かつ現在の文字列に含まれている用語を示しています。 たとえば、Godotの "node" という用語に特定の翻訳をすることをチームの翻訳者と決定した場合、それを用語集に追加して他の翻訳者が同じルールを使うように出来ます。

  • 右下のパネルには、原文の文字列に関する情報が含まれています。 最も関連性の高い項目は、GitHub上の元の文字列にリンクする "原文の記載位置" です。 ページ内の文字列を検索して、原文やその周囲のコンテキストを見つける必要があるかもしれません。

オリジナルコンテンツを探す

PO ファイルは、ソース文字列(msgid)と、その翻訳(msgstr)の順序リストであり、デフォルトでは、Weblate はその順序で文字列を表示します。 そのため、コンテンツがPOファイルでどのように整理されているかを理解すると、元のコンテンツを探し翻訳するときの参照として使用するのに役立つことがあります。

重要

翻訳時には元の文脈を参照として使うのが原則です。多くの単語は文脈に応じていくつかの翻訳が可能なためです。 間違った翻訳をすることは実際にユーザに有害であり、英語のままだった場合よりも理解しにくいものにしてしまう可能性があります。 文脈を使うと、翻訳が文脈の中で意味が通るかを直接確認することができるため、翻訳の作業がより簡単に、より楽しいものになります。

  • エディタインターフェースの翻訳テンプレートは、すべての C++ソースコードを アルファベット順 に解析して生成されています。そのため、指定したファイルで定義されるすべての文字列がグループ化されます。 例えば、 "原文の場所" が editor/code_editor.cpp を表す場合、現在の文字列 (および近くの文字列) は editor/code_editor.cpp のコードファイルで定義されており、Godot (GDScript、シェーダー) のコードエディタに関連しています。

  • オンラインのドキュメントの翻訳テンプレートは 目次 で見られるのと同じ順序で元のRSTファイルから生成されるため、例えば最初の文字列はドキュメントのトップページにあります。 したがって推奨されるワークフローは、翻訳したいページに対応するユニークな文字列を見つけて、同じ原文の場所にあるすべての文字列を英語のオンラインバージョンと比較しながら翻訳することです。 ソース文字列の場所の例として、 ノードとシーン (ノードとシーン)の原文は getting_started/step_by_step/nodes_and_scenes.rst (入門/ステップ・バイ・ステップ/ノードとシーン)になります。

  • クラスリファレンスの翻訳テンプレートは、アルファベット順 のソースXMLファイルから生成されます。これもオンラインバージョンの目次と同じ順番です。したがって、指定したクラスの簡単な説明に対応するソース文字列を見つけられれば、翻訳する最初の文字列を見つけられ、そのクラスの他のすべての記述はWeblateの後続の文字列にあるはずです。 例えば class_Node2D`クラス の記述 は、 ``doc/classes/Node2D.xml` にソース文字列があります。

Weblateの高度な検索機能を使うと特定のページ/クラスを見つけるための便利なツールになります、中でも "原文の記載位置" クエリ(これは location: トークンでも使用でます。 例 location:nodes_and_scenes.rst)です:

../../_images/l10n_05_search_location.png ../../_images/l10n_06_browse_by_location.png

注釈

指定されたソース文字列が複数のソースの場所で使用される場合、それらはすべて1つに連結されます。 たとえば、上記の location:nodes_and_scenes.rst クエリは、テンプレートの中で nodes_and_scenes.rst の前に来るものも含めて多くのページで使われている "Introduction" ソース文字列にまず到達します。 "次へ" ボタンをクリックすることで、上に示した "シーンとノード" の見出し文字列がやってきます。 つまり、ある段落またはセクション見出しがオンライン版のページを読んだときに期待する場所にない可能性があります。

マークアップ構文の尊重

各翻訳リソースは異なるソースコード形式から生成されており、各リソースに使用されるマークアップ言語の概念を知っておくことは、翻訳で構文エラーを作成しないようにするために重要です。

エディタインターフェース (C++)

エディタ翻訳はC++文字列が元になっていて、以下の構文を使うでしょう:

  • C書式指定子 例えば %s` (文字列) or %d (数値)。これらの指定子は実行時に別の内容に置き換えられるので、置き換えの後意味が通るように翻訳の中にそのまま残しておく必要があります。どのようなコンテンツが置き換えられるのか不明瞭な場合は原文の位置を参照する必要があるかもしれません。例 (%s はファイル名またはパスと置き換えられます):

    # PO file:
    "There is no '%s' file."
    
    # Weblate:
    There is no '%s' file.
    
  • Cエスケープ指定子 たとえば \n (改行) や \t (タブ)。Weblateエディタでは、 \n 文字は (改行) に、 \t に置き換えられます。タブは多く使われませんが、改行は元の英語の文字列と同じ使い方をしてください(そうしないとWeblateは警告を出します)。改行は縦の空間開けや、特にエディタ翻訳ではそうしないと長すぎる行を手作業でで長い行折り返すために使われることがあります)。例:

    # PO file:
    "Scene '%s' is currently being edited.\n"
    "Changes will only take effect when reloaded."
    
    # Weblate:
    Scene '%s' is currently being edited.↵
    Changes will only take effect when reloaded.
    

注釈

重要なのは文字の論理的な順番で、右から左のテキストでは、書式指定子は s% として表示されます。

オンラインドキュメント (RST)

ドキュメント翻訳は reStructedText (RTS) ファイルが元になっていて、これも独自のマークアップ文法で文字列を整形し、内部または外部へのリンクを作成します。 たとえばこのように:

# "development" is styled bold.
# "Have a look here" is a link pointing to https://docs.godotengine.org/en/latest.
# You should translate "Have a look here", but not the URL, unless there is
# a matching URL for the same content in your language.
# Note: The `, <, >, and _ characters all have a meaning in the hyperlink
# syntax and should be preserved.

Looking for the documentation of the current **development** branch?
`Have a look here <https://docs.godotengine.org/en/latest>`_.

# "|supported|" is an inline reference to an image and should stay unchanged.
# "master" uses the markup for inline code, and will be styled as such.
# Note: Inline code in RST uses 2 backticks on each side, unlike Markdown.
# Single backticks are used for hyperlinks.

|supported| Backwards-compatible new features (backported from the ``master``
branch) as well as bug, security, and platform support fixes.

# The :ref: Sphinx "role" is used for internal references to other pages of
# the documentation.
# It can be used with only the reference name of a page (which should not be
# changed), in which case the title of that page will be displayed:

See :ref:`doc_ways_to_contribute`.

# Or it can be used with an optional custom title, which should thus be translated:

See :ref:`how to contribute <doc_ways_to_contribute>`.

# You may encounter other Sphinx roles, such as :kbd: used for shortcut keys.
# You can translate the content between backticks to match the usual key names,
# if it's different from the English one.

Save the scene. Click Scene -> Save, or press :kbd:`Ctrl + S` on Windows/Linux
or :kbd:`Cmd + S` on macOS.

参考

Sphinx の reStructured Text 入門 を参照して、ソース文字列にあるマークアップ言語の簡単な概要を確認しましょう。 特にインラインマークアップ(太字、斜体、インラインコード)と内部および外部のハイパーリンクマークアップには遭遇することがあるでしょう。

クラス リファレンス (BBCode)

クラスリファレンスはGodotのメインリポジトリでXMLファイルによってドキュメント化されています。そしてBBコード(Bulletin Board Code)のようなマークアップを利用して、レイアウトを整えたりドキュメント内部へのリンクを貼ったりしています。

使用されるタグの一部はBBCodeオリジナルのもの(例: [b]Bold[/b][i]Italics[/i])のものもありますが、他はGodot固有のもので、用途はインラインコード(例: [code]true[/code] ) 、他のクラスへのリンク(例:[Node2D]) 、特定のクラスのプロパティ(例: [member Node2D.position)、または複数行のコードブロックなどです。 例:

Returns a color according to the standardized [code]name[/code] with [code]alpha[/code] ranging from 0 to 1.
[codeblock]
red = ColorN("red", 1)
[/codeblock]
Supported color names are the same as the constants defined in [Color].

上述の例で、 [code]name[/code][code]alpha[/code] 、 そして [Color] は翻訳しては いけません 。これらはそれぞれ Godot API の引数名とクラス名です。同じように、[codeblock] の中身は翻訳してはいけません。 ColorN は Godot API の関数で "red" はこれがサポートする色名だからです。せいぜい、翻訳できるのは結果を保持する変数名ぐらいです (red = ...)。

またXMLにおいて、それぞれの行は別々の段落になります。原文の中に存在しない改行を追加しないように注意してください。

参考

クラスリファレンスで使われる BBCCode 的なタグのリスト については、クラスリファレンスの書き方についてのドキュメントを参照してください。

オフラインでの翻訳とテスト

翻訳の際にはWeblateのインターフェースを使うのがおすすめですが、POファイルをローカルにダウンロードして好きなPOファイル編集アプリケーション、例えば PoeditLokalize など、を使うこともできます。

POファイルをローカルにダウンロードするには、翻訳したい言語の概要ページを開き、 "ファイル" メニューの最初の項目を選択します:

../../_images/l10n_07_download_po_file.png

編集が終わったら、同じメニュー内の「翻訳のアップロード」ボタンを押下してファイルを選択してください。そして「翻訳として追加」を選択してファイルのアップロードモードに入ってください。

注釈

POファイルをダウンロードしてから、編集したバージョンをアップロードするまでにかなり時間が経っている場合、その間に他のコントリビュータが翻訳を作成しており、あなたの翻訳が他の人の翻訳を上書きしてしまう危険性があります。このようなリスクを避けるため、常に最新のバージョンで作業できるようにオンラインのインターフェイスで作業することをお勧めします。

ローカルで変更をテストしたい場合は(特にエディタの翻訳のために)、POファイルをダウンロードして :ref:`Godotのソースからのコンパイル <toc-devel-compiling>`で使用できます。

エディタ翻訳のPOファイルを <言語>.po (例: エスペラントなら eo.po) のように名前を変更し、 editor/translations/ (GitHub) フォルダに置きます。

クラスリファレンスの変更も同様の方法でテストできます。POファイルを同じように名前変更して doc/translations/ フォルダ (GitHub) に設置してください。

ドキュメント画像のローカライズ

オンライン・ドキュメントには、Godot エディタのスクリーンショット、カスタムメイドのグラフ、その他あらゆる種類のビジュアルコンテンツなど、多くの画像が含まれています。中にはテキストを含むものもあり、あなたの言語にローカライズに関係しているかもしれません。

この部分はWeblateでは扱われませんが、Weblateからドキュメント翻訳が同期されているgodot-docs-l10n Gitリポジトリで直処理しています。

注釈

これは簡単なワークフローではありません。Gitの知識も必要です。私たちはシンプルなWebツールを構築する予定です。このWebツールを使うことによって複雑なステップは省略され、画像のローカライズを行う上で便利に利用できるでしょう。

画像を翻訳するためには、まず原文の英語ドキュメントで位置を確認する必要があります。そのためにはドキュメントで関連するページを開いてください、 例: はじめてのGodotエディタ 。右上の "Edit on GitHub" リンクをクリックしてください:

../../_images/l10n_08_edit_on_github.png

GitHubでは、翻訳したい画像をクリックします。該当するものがあれば、"ダウンロード"をクリックしてローカルにダウンロードし、画像編集ツールで編集します。この先で必要になるので、画像のフルパス (ここでは getting_started/step_by_step/img/project_manager_first_open.png)をメモしておいてください。

../../_images/l10n_09_path_to_image.png

画像の翻訳版を作成してください。英語の画像を編集するか、エディタのスクリーンショットなら翻訳言語のものを撮ってください。画像によってはSVG形式のソースファイルが用意されているものもあるので、画像が入っている img/ フォルダを開いて確認してください。

翻訳した画像にはオリジナルの画像と同じ名前を付けますが、拡張子の前に言語コードを付けます、例: project_manager_first_open.png はフランス語に翻訳すると project_manager_first_open.fr.png となります。

最後に、godot-docs-l10nimages サブフォルダ (GitHub) に元の画像と同じフォルダ構造を再作成し、そこに翻訳した画像を配置します。この例では、最終的に images/getting_started/step_by_step/img/project_manager_first_open.fr.png となります。

他の画像についてもこれを繰り返し、 プルリクエストを作成します