国際化に向けた取り組み

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

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

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

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

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

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

プラットフォーム

推奨するファイル形式

Android

Android 文字列リソース

iOS

Apple iOS 文字列

Qt

Qt Linguist .ts

Python

GNU gettext

PHP

GNU gettext 1

C/C++

GNU gettext

C#

.XML リソース ファイル

Perl

GNU gettext

Ruby

Ruby YAML ファイル

Web 拡張機能

WebExtension JSON

Java

XLIFF 2

JavaScript

JSON i18next ファイル 3

1

PHP 純正の Gettext 対応はバグが多く、Windows のビルド版は不完全です。代わりに、サードパーティのライブラリ motranslator を使用してください。

2

複数形が必要ない場合、Java プロパティ を使用してください。

3

複数形が必要ない場合、プレーンの JSON ファイル も使用できます。

次の章で説明する、一部のファイル形式のより詳細なワークフロー: