5.5 国際化とローカライゼーション
概要と動機
国際化(i18n)とは、ソフトウェアがコードを変えずに、あらゆる言語、地域、文化に適応できるよう築くエンジニアリングの仕事です。ローカライゼーション(l10n)は、それに続く仕事です。テキストを翻訳し、日付や数値を書式化し、レイアウトを調整し、文化的な期待を考慮して、特定のロケール向けにプロダクトを実際に適応させます。この二つは別物です。国際化はアーキテクチャの中で一度だけ行われます。ローカライゼーションはコンテンツの中で何度も行われます。アーキテクチャを最初に正しく整えれば、すべてのローカライゼーションは安くなります。間違えれば、それぞれが苦痛で間違いやすい後付けになります。
大きなチームにとって、i18nは基礎的なアーキテクチャの決定です。データの保存、文字列の処理、レイアウト、コンテンツのパイプラインと、あらゆる層に触れます。早期に確立し、共有ライブラリとリントのルールで徹底しなければ、チームは英語の文字列をハードコードし、翻訳された断片を連結し、ラテン文字を前提にします。その負債は、プロダクトが新しい市場に入る前に解きほぐさなければなりません。共有のi18nフレームワークとローカライゼーションのワークフローにより、数十のチームが、それぞれが配管を再発明することなく、多くの言語でプロダクトを出荷できます。
企業と政府にとっての関連性は直接的です。多国籍企業は、国、言語、規制の制度にまたがって顧客と従業員に仕えなければなりません。政府は、言語的に多様な人口に仕えなければなりません。多くの国は公式に多言語で、多くは、右から左へ書く文字や先住民・少数言語を含む、複数の言語でサービスを提供することを法的に求められています。公共サービスにとって、言語アクセスは公平性と法律の問題です。利用可能な唯一の言語を読めない市民は、事実上サービスを拒否されています。
主要原則
- アーキテクチャを一度だけ国際化し、コンテンツを何度もローカライズします。
- ユーザー向けのテキストを決してハードコードせず、すべての文字列を管理されたリソースに外部化します。
- あらゆる所でUnicode(UTF-8)を使います。テキストがどんな文字体系でもありうると想定します。
- 翻訳された断片を決して連結しません。文法と語順は言語によって異なります。
- テキストの伸長、右から左の文字体系、複雑な複数形と性のルールに備えます。
- 日付、数値、通貨、名前を、コードではなくロケールに従って書式化します。
- 翻訳者がソースに決して触れないよう、翻訳可能なコンテンツをコードから分離します。
- ローカライゼーションは言語的なだけでなく文化的です。色、画像、例が重要です。
推奨事項
健全な国際化のアーキテクチャを築く
すべてのテキストを、データベース、API、UIまで端から端まで、Unicode(UTF-8)として保存し処理し、どんな文字体系も表現できるようにします。すべてのユーザー向けの文字列を、コードやマークアップに埋め込むのではなく、識別子をキーとするリソースファイルあるいはメッセージカタログに外部化します。ロケールを言語プラス地域(必要なら文字体系)として表し、たとえば一つの言語の国ごとの変種を区別できるようにします。書式化のロジックは、日付、数値、通貨の書式化を手作りするのではなく、よくテストされた国際化ライブラリに保ちます。データは中立で曖昧さのない形(UTCのタイムスタンプ、ISOの国と通貨のコード、基本単位)で保存し、表示の層でだけ書式化します。
言語の複雑さを正しく扱う
テキストの長さを想定せず、十分な余裕を許してください。翻訳はしばしば英語よりずっと長くなるので、切り詰めたり重なったりするのではなく、折り返すレイアウトを設計します。物理的ではなく論理的なレイアウトのプロパティを使い、適切な所ではインターフェースを反転させて、双方向(右から左)の文字体系をサポートします。素朴な単数/複数のロジックではなく、i18nライブラリを通じてロケールの複数形のルールを使います(言語には一つから六つの複数形があります)。言語が求める所では、性と文法的な一致を扱います。連結で文を組み立てず、翻訳者が語順を制御できるよう、完全でパラメータ化されたメッセージテンプレートを使います。
ローカライゼーションのワークフローと翻訳管理を確立する
ローカライゼーションを、ローンチ前のバッチではなく、継続的なパイプラインとして扱います。文字列を自動的に抽出し、翻訳管理システムに送り、完了した翻訳を取り込み、理想的にはCIと統合して、新しい文字列に旗が立ち、ローカライズされたバージョンが同期を保つようにします。翻訳者に文脈を与えます。スクリーンショット、説明、文字数の制限、用語とトーンを一貫させる言語ごとの用語集とスタイルガイド。翻訳メモリを使って、過去の仕事を再利用してコストを削ります。機械翻訳が許容される場所(リスクが低く量が多いコンテンツ)と、人間による翻訳とレビューが必要な場所(法律、医療、安全、ブランドに重大なもの)を意図して決めます。早期に疑似ローカライズを行い、文字列を長くされアクセントの付いたプレースホルダーに置き換え、本物の翻訳が始まる前に、ハードコードされた文字列、切り詰め、エンコードのバグを捉えます。
言葉だけでなく、書式、文化、コンテンツをローカライズする
日付、時刻、数値、通貨、住所、電話番号、名前を、ロケールごとに、地域の慣習(日付の順序、小数点と桁区切り、通貨の位置、名前の順序)を尊重して書式化します。記号や色は文化によって異なる含意を持つので、画像、アイコン、色、例、比喩を、地域の文化的な意味に適応させます。地域の法的、規制上のコンテンツの違いを考慮します。全体の一貫性(ブランド、中核の機能)と地域への適応(コンテンツ、例、コンプライアンス)を区別し、どの要素が固定でどれが柔軟かを明示的に決めます。
i18nを共有のインフラストラクチャとして統治する
チームが誤ってテキストをハードコードできないよう、共有のi18nライブラリ、文字列外部化のリントルール、標準のロケール解決の仕組みを提供します。ローカライゼーションのパイプラインと用語集の所有者を確立します。回帰が自動的に捉えられるよう、右から左のロケールと長いテキストの疑似ロケールを含む複数のロケールで、CIでテストします。
トレードオフ: 長所と短所
| 決定 | 長所 | 短所 |
|---|---|---|
| 初日から国際化する | 後の市場参入が安い。後付けが不要 | 二つ目のロケールが必要になる前から事前のコスト |
| 後でi18nを後付けする | 世界的な必要性が不確かなら、コストを先送りできる | ハードコードされた想定を解きほぐすのが非常に高価でリスクが高い |
| 人間による翻訳 | 高品質で文化的に正確 | より遅く、コストが高い |
| 機械翻訳 | 速く、安く、巨大な量にスケールする | 品質と正確さのリスク。重大なコンテンツには不向き |
| 継続的なローカライゼーションのパイプライン | ロケールが同期を保つ。ローンチ前の追い込みがない | ツールとプロセスへの投資 |
| 地域ごとの深い文化的適応 | より良い地域への適合と信頼 | 築き保守するコンテンツの変種が増える |
決定的なトレードオフは、いつ国際化に投資するかです。ハードコードされ、連結され、ラテン文字を前提とするコードだらけのプロダクトにi18nを後付けすることは、返済する技術的負債の中でも最も高価なものの一つです。国際的あるいは多言語の野心がありうる組織、本質的にはすべての大企業と多言語の政府にとって、アーキテクチャを早期に国際化することは、見返りが先送りされるとしても、後付けよりはるかに安いのです。
チームで議論すべき問い
文字列の外部化をリントルールで徹底し、本物の翻訳の前に、CIで疑似ローカライゼーションを実行していますか。 国際化を高価にする負債(ハードコードされた英語の文字列、連結された文の断片、ラテン文字の想定)は、ツールがコミット時にそれを止めなければ、静かに積み上がります。ハードコードされたユーザー向けのテキストに旗を立てるリントルールと、CIで実行される長いテキストでアクセント付きの疑似ロケールが、切り詰め、重なり、エンコードのバグを、修正が安い間に捉えます。これが、数十のチームが、それぞれが配管を再発明したり、期限の最中に想定を解きほぐしたりせずに、一つのプロダクトを多くの言語で出荷できるようにするものです。ハードコードされた文字列の検索を持ち込み、どのチームでも今日誤って出荷しうるかを問ってください。パイプラインに捉えるものが何もないなら、それが最初に塞ぐべきギャップです。
正規のデータはどこに保存され、書式化は表示の層に限られていますか。 タイムスタンプをUTCとして、国と通貨をISOコードとして、金額を基本単位で保存すれば、どのロケールも縁で正しく書式化でき、データ層に焼き込まれた書式化のロジックは、解きほぐすのが苦痛なバグを生みます。日付、数値、通貨、住所、名前が、手作りのコードではなく、よくテストされたライブラリを通じて、表示でのみ書式化されることに合意してください。これは、市民が自分の慣習で正しい日付の順序、小数点、名前の順序を見る必要がある、多国籍企業と多言語の政府で重要です。システムがすでに書式化して保存している値の例を持ち込み、新しいロケールがそれを異なって必要とするとき、何が壊れるかをたどってください。データと表示が絡み合っているなら、ロケールを加える前に、どう解きほぐすかを決めてください。
機械翻訳が許容されるのは正確にどこで、ローカライゼーションのパイプラインをバッチではなく継続的に保つにはどうしますか。 機械翻訳は、リスクが低く量が多いコンテンツには速く安いですが、誤訳が本物の害を引き起こす法律、医療、安全、ブランドに重大なテキストには不向きなので、境界はチームごとの推測ではなく、明示的な方針であるべきです。同じく、ローカライゼーションをローンチ前のバッチとして扱うと、翻訳の追い込みが保証され、文字列を自動的に抽出して翻訳管理システムを通じて同期すれば、すべてのロケールが最新に保たれます。パイプライン、用語集、重大な文字列の人間によるレビューのゲートを誰が所有するかを決めてください。最近のリリースを持ち込み、その新しい文字列がすべての言語に現れるのにどれだけかかったかを問ってください。リリースの間でロケールが同期からずれるなら、パイプラインは偽装されたバッチです。
右から左のロケールと長いテキストの疑似ロケールを自動でテストしていますか。それとも、ラテン文字と英語の長さのレイアウトを静かに想定していますか。 双方向(右から左)のサポートとテキストの伸長は、新しい市場で最も目に見えて壊れる想定です。反転されるはずが反転されなかったインターフェースや、ドイツ語やフィンランド語が英語より40パーセント長くなると切り詰められるボタン。相反する引力は速度です。物理的ではなく論理的なレイアウトのプロパティの上に築き、アクセント付きの疑似ロケールを継続的インテグレーション(CI)に配線するのは、本物の顧客が必要とする前に労力がかかるからです。最も忙しい画面を右から左のロケールと長くした疑似ロケールで描画したスクリーンショットを持ち込み、重なり、切れたラベル、固まった矢印を数えてください。右から左や少数言語での提供を法的に求められる多国籍企業や政府にとって、反転できないレイアウトは、見た目の欠陥ではなく、作り直しなしには満たせない市場や法定の義務です。
プロダクトのどの部分が世界的に固定で、どれが地域によって柔軟で、誰が決める権限を持ちますか。 ローカライゼーションは単に言語的ではなく文化的なので、色、画像、例、敬称、さらには提供される機能さえも市場によって異なりうるが、許すすべての地域の変種は、永遠に築き、翻訳し、レビューし、保守すべき成果物がもう一つ増えることです。緊張は、信頼とコンバージョンを築く地域への適合と、ブランドを一貫させ保守の負担を有界に保つ一貫性の間にあります。提案された新しいロケールが、翻訳された文字列を超えて何を変えるかの具体的な一覧を持ち込み、各変種の最初の構築だけでなく、継続的な維持のコストを見積もってください。大企業では、地域のチームが場当たりにプロダクトをフォークできないよう、この決定に名前のある所有者が必要で、政府では、法域によって異なり任意ではない、法的でアクセシビリティのコンテンツ規則を尊重しなければなりません。
実際にどのロケールにコミットし、それらの間で用語をどう一貫させ、何の証拠がその一覧を駆動していますか。 言語を加えるのは約束するのは易しく、維持するのは高価です。それぞれが、用語集、スタイルガイド、重大な文字列の人間によるレビュー、素朴な単数か複数かのロジックがほとんどの言語で間違える、正しい複数形と性の扱いを必要とするからです。相反する考慮は、到達範囲対コストです。下手に仕えられた市場や人口は、仕えられないよりも悪いことがあります。各候補ロケールの背後の人口あるいは収益、ライブラリがそれに提供する複数形のルールと書式化のカバレッジ、その用語集を誰が所有するかを持ち込んでください。多国籍企業では、駆動要因は、言語ごとの対象市場とサポートのコストであり、政府では、法的な言語アクセスの義務と公平性で、その言語でしか取引できない住民の数で定量化されます。
セクター別の視点
スタートアップ。 安いアーキテクチャの選択を初日に行い、そこで止めてください。端から端までUTF-8、すべてのユーザー向けの文字列をメッセージカタログに、日付、数値、通貨をロケールを認識するライブラリで書式化。一つの言語で出荷する間はほとんどコストがかからず、最初の大きな顧客が二つ目の言語を求めたとき、書き直しを省いてくれます。翻訳のパイプラインを立ち上げたり、まだ誰も払っていないロケールをサポートしたりしてはいけません。家全体に家具を置くのではなく、扉を開けておくのです。
小規模事業者。 国際化の専門家がおらず予算も厳しいので、パイプラインを自分で築くのではなく、すでにフレームワークにあるi18nの機能と、ホスト型の翻訳管理サービスに頼ってください。リスクが低く量が多いコンテンツには機械翻訳を使い、間違いが顧客を失わせたり規則に違反したりする所、たとえば法律、安全、請求のテキストにだけ、人間による翻訳に支払います。特定の市場が、継続的な翻訳とレビューのコストを明らかに正当化するときにだけ、ロケールにコミットしてください。
大企業。 問題は多くのチームにわたるガバナンスです。共有のi18nライブラリ、ハードコードされた文字列を拒否するリントルール、翻訳メモリと言語ごとの用語集を備えた継続的なローカライゼーションのパイプライン、右から左と長いテキストの疑似ロケールを含む複数ロケールのCI。グループが配管を再発明したり同期がずれたりするのをやめるよう、ローカライゼーションを明確な所有者を持つ共有インフラストラクチャとして運営します。言語のカバレッジ、ローカライゼーションの品質、新しいロケールのローンチまでの時間を測定し、場当たりに市場を立ち上げるのではなく、それらの数字でロケールのポートフォリオを管理します。
政府。 言語アクセスはしばしば法的義務で、公用語、右から左の文字体系、先住民・少数言語をカバーするので、透明性と公平性があらゆる選択を形づくります。機関にわたって共有のi18nフレームワークと翻訳ワークフローを築き、法律と安全の用語には人間によるレビューを求め、サービス間で用語が一貫するよう用語集を公開します。調達は契約でロケール、右から左、アクセシビリティのサポートを要求すべきで、各言語で仕える人口が、公衆に支出を正当化する指標です。
事例
スタートアップ。 英語でしか出荷しない小さなスタートアップは、それでも初日にいくつかの安いアーキテクチャの選択をしました。あらゆる所でUTF-8、ユーザー向けのすべての文字列をハードコードではなくメッセージカタログに引き出し、日付と通貨をロケールを認識するライブラリで書式化。一つの言語の間は、ほとんどコストがかかりませんでした。一年後、最大の見込み客がフランス語とドイツ語のバージョンを求めたとき、それらのロケールを加えることは、ほとんど請負業者に渡す翻訳の作業で、書き直しではなく、四半期のエンジニアリング作業を先送りする代わりに数週間で取引を成立させました。
大企業。 世界的なEコマース企業は、プラットフォームを早期に国際化しました。全体でUTF-8、外部化された文字列、ロケールを認識する書式化ライブラリ、翻訳メモリと言語ごとの用語集を備えた継続的なローカライゼーションのパイプライン。新しい市場への参入は、エンジニアリングのプロジェクトではなく、おおむねコンテンツの作業(翻訳、レビュー、画像の調整)になり、会社は数週間で新しいロケールにローンチできました。論理的なレイアウトのプロパティの上に築かれた右から左のサポートにより、アラビア語とヘブライ語の市場は、新しいUIの仕事をほとんど必要としませんでした。
政府。 右から左の文字体系と少数言語を含む、複数の公用語でサービスを提供することを法的に求められた国の政府は、機関にわたって使われる共有のi18nフレームワークと翻訳ワークフローを築きました。CIでの疑似ローカライゼーションが、ローンチ前にハードコードされた文字列と切り詰めを捉え、共有の用語集が、サービスと言語にわたって法律用語を一貫させました。市民は、自分の言語で、正しい日付、数値、名前の書式で、税、医療、給付の取引を完了でき、言語アクセスの法律を満たし、多数派でない言語の話者の公平性を改善しています。
ビジネスケース: 動機、ROI、TCO
国際化のROIは、市場へのアクセスと速度です。よく国際化されたプロダクトは、新しい国と言語の市場に素早く安く参入でき、各新しいロケールを、大きなプロジェクトではなく、追加の収益や市民への到達にします。ローカライゼーションの質は、各市場でのコンバージョン、信頼、サポートのコストを駆動します。プロダクトがその言葉を正しく話し、慣習を尊重するとき、ユーザーはより多く取引し、サポートへの連絡が減ります。
TCOでは、採用のコストは国際化への事前のエンジニアリングと、継続的な翻訳とパイプラインのコストです。採用しないコストは、高価な後付けです。コードベース全体にわたって、ハードコードされた文字列、連結、エンコードのバグ、レイアウトの想定を解きほぐすことで、しばしば市場や法的要件に駆動される期限の中で行われます。貧しいローカライゼーションには隠れたコストもあります。下手に仕えられた市場での失われた販売、混乱する書式によるサポートの負担、誤訳された重大なコンテンツによる法的、評判上の損害。継続的なローカライゼーションは、高価なローンチ前の翻訳の追い込みを避けます。
リーダーシップに論拠を示すには、国際化を将来の市場へのオプションとして枠づけます。将来のあらゆる市場参入のコストと時間を劇的に下げる、控えめな事前の投資です。政府にとって、駆動要因は法的な言語アクセスの義務と公平性で、各言語で仕える人口で定量化されます。
アンチパターンと落とし穴
- ハードコードされた文字列: コードに焼き込まれたユーザー向けのテキストで、ロケールごとのコードの変更を強いる。
- 文字列の連結: 断片から文を組み立て、文法と語順を壊すこと。
- 非Unicodeの想定: エンコードのバグ、文字化け(文字エンコーディングの不一致で壊れたテキスト)、文字体系を表現できないこと。
- 英語のテキストの長さの想定: 翻訳されると切り詰められたり重なったりするレイアウト。
- 右から左の無視: 反転できない物理的な左右のレイアウトを使うこと。
- 素朴な複数形処理: ほとんどの言語で間違っている単数/複数のロジック。
- ロケールを意識しない書式化: ハードコードされた日付、数値、通貨の書式。
- 文脈なしの翻訳: 翻訳者が意味を推測し、間違いを生むこと。
- バッチで土壇場のローカライゼーション: 継続的なパイプラインの代わりの、ローンチ前の追い込み。
- 文化への無頓着: 地域で不快にしたり混乱させたりする画像、色、例。
成熟度モデル
レベル1: 開始。 単一の言語、ハードコードされた文字列、非Unicodeの想定、連結で組み立てられたテキスト。国際化は反応的です。新しいロケールはコードの変更を意味し、エンコードとレイアウトのバグは、本番で偶然に見つかります。
レベル2: 発展。 一部の文字列が外部化され、場所によってUnicodeが使われますが、実践はチーム間で一貫しません。ローカライゼーションは、手作業でバッチの、ローンチ前の労力で、書式化、複数形の処理、右から左のサポートは、チームごとに異なって(あるいはまったく)扱われます。
レベル3: 標準化。 共有のi18nアーキテクチャとロケールを認識する書式化ライブラリが、文書化され、組織全体で徹底される標準です。文字列の外部化はリントルールでチェックされ、翻訳管理システムと継続的なパイプラインが、用語集と翻訳メモリとともに整い、疑似ローカライゼーションと(右から左と長いテキストのロケールを含む)複数ロケールのテストがCIで走ります。
レベル4: 管理。 ローカライゼーションのプログラムが、ベースラインに対して測定され、制御されています。チームは、言語のカバレッジ、ローカライゼーションの品質と欠陥率、コミットから翻訳されたリリースまでの文字列の同期の遅延、リリースごとに捉えられた切り詰めと右から左の描画の欠陥、ロケールごとの翻訳コスト、新しいロケールのローンチまでの時間を追跡し、これらの指標がリリースをゲートし、人間のレビュー対機械翻訳にどこへ投資するかを駆動します。
レベル5: オーケストレーション。 国際化とローカライゼーションは、継続的に改善され、組織全体に統合されています。ローカライゼーションは継続的で、機械翻訳と人間による翻訳はコンテンツのクラスごとに意図して選ばれ、文化的適応は体系的です。組織は市場と公平性の証拠に応じてロケールを追加し、退役させ、再スコープし、新しいロケールは後付けなしに、高い品質で素早くローンチします。
議論のためのアイデア
- 国際的な需要が不確かな場合、プロダクトはどれだけ早く国際化すべきですか。
- 機械翻訳が許容されるのはどこで、人間がレビューしなければならないのはどこですか。
- 多くの言語とチームにわたって、用語をどう一貫させますか。
- 追加の変種の保守に見合う、地域の文化的適応はどれくらいですか。
- 右から左と少数言語のサポートを、どう優先順位づけしてテストすべきですか。
- パイプラインを遅くせずに、翻訳者に十分な文脈をどう与えますか。
要点
- アーキテクチャを一度国際化し、コンテンツを何度もローカライズします。
- あらゆる所でUnicodeを使い、すべての文字列を外部化し、翻訳を決して連結しません。
- テキストの伸長、右から左の文字体系、ロケール固有の複数形と書式のルールに備えます。
- 翻訳メモリ、用語集、文脈を備えた継続的なローカライゼーションのパイプラインを運用します。
- 本物の翻訳の前にi18nのバグを捉えるために、CIで早期に疑似ローカライズします。
- ローカライゼーションは言語的なだけでなく文化的です。
- 早期の国際化は後付けよりはるかに安く、政府にとっては法的な公平性の要件です。
参考文献とさらなる読み物
- The Unicode Consortium, The Unicode Standard and Common Locale Data Repository (CLDR)
- W3C Internationalisation (i18n) Activity, techniques and best practices
- Richard Ishida, W3C internationalisation articles and tutorials
- Bert Esselink, A Practical Guide to Localisation
- John Yunker, Beyond Borders: Web Globalisation Strategies
- Unicode Technical Standard #35 (locale data markup) and ICU library documentation
- IETF BCP 47 language tags
- Government multilingual service and language-access guidance
- Nielsen Norman Group and W3C articles on RTL, text expansion, and localisation UX