国際化に向けた取り組み

既にプロジェクトがあり、それを複数の言語に翻訳することを考えてますか?このガイドは役に立つはずです。特殊な例の説明もありますが、多くの例は一般的なものであり、他の状況にも応用できます。

ソフトウェアを翻訳する前に、世界中の言語が本当に異なっていることを理解し、自分の経験に基づいた推測を排除してください。ほとんどの言語では、翻訳された部分から文を連結しようとすると、おかしくなります。また、複数形を適切に処理することが必要です。これは、多くの言語には複雑な規則があり、最終的に使用する国際化フレームワークがこれに対応しているためです。

最後になりますが、翻訳される文字列に何らかのコンテキストを追加しなければならない場合があります。翻訳者が Sun という文字列を翻訳するとします。文脈がわからなければ、ほとんどの人は太陽と解釈しますが、実際には日曜日の省略形として使われるかもしれません。

国際化フレームワークの選択

プラットフォームで標準となるものを選択し、現地語化を処理する独自のフレームワークを作成して、車輪の再発明を避けてください。Weblate は、広く使用されているフレームワークのほとんどに対応していますが、詳細については、現地語化ファイル フォーマット を確認してください(特に 翻訳の種類別の機能)。

下記の表は、各プラットフォームごとに、推奨するファイル形式です。推奨は経験に基づいていますが、すべての使用例を網羅することはできないので、選択をする場合は常に実際に使用する環境を考慮してください。

一部のファイル形式のより詳細なワークフローは以下の章で説明します。

適切な国際化手法について開発者を教育する

ソフトウェアの国際化は、単に文字列を翻訳できるようにするだけではなく、他国のユーザーにとってそのソフトウェア全体が“自分の国のもの”として自然に見えるようにすることです。これには、日付や数値の書式、通貨の表示、文字入力の方向なども含まれます。ほとんどのソフトウェア フレームワークはこれに対応しているため、各分野についてフレームワークの指示に従ってください。

文字列の翻訳は、必ずしも単純な作業ではありません。特にキャプションやボタンラベルのような短い文字列ではその傾向が強くなります。言語ごとに異なる規則があり、同じ文字列が常に同じように翻訳されるとは限りません。また、多くの場面で適切な訳し方が明確でないこともあり、単語が動詞なのか名詞なのかを判断することさえ難しい場合があります。

すべての開発者はこれを理解し、異なるスコープで使用される文字列を一意に識別する必要があります。たとえば、「ユーザーがいない」という意味の None は、「項目がない」という意味の None とは異なる訳になる可能性があります。翻訳者が区別できるように、異なるキーやコンテキストを使用してください。Weblate では、Screenshots and visual context解説 などの追加コンテキストを提供できます。

The technical side is only part of the work. Translators also notice the project workflow around strings, releases, and communication. A few practices make collaboration much easier:

  • Respond to translator questions and comments, and make sure the advertised contact channel is actually monitored.

  • Avoid unnecessary churn in source strings. Rewording or replacing existing strings without a user-visible reason creates avoidable translation work.

  • Add enough context for translators to understand short or ambiguous strings. Avoid concatenating sentences from fragments, use placeholders that can be reordered, and rely on built-in plural handling.

  • Ship translations regularly so completed work does not stay unused in Weblate for long periods.

  • Communicate workflow or policy changes, and keep contribution requirements realistic for smaller language teams.

  • If a project is no longer maintained, reflect that in the translation workflow instead of leaving components open indefinitely.

Weblate can help with some of these issues. In particular, regular automatic commits from Weblate make translation progress visible in the source code history and reduce the risk that finished work is forgotten before a release. See 継続的ローカリゼーション for automation options.

参考