タイトル
サブタイトル
タイトル
段落1
段落2
段落3
タイトル
段落1
段落2
段落3
タイトル
サブタイトル
ロケール識別子(BCP 47)
en-US や zh-Hans-CN といった BCP 47 タグは、言語、文字体系、および地域を指定します。これらはあらゆる国際化(i18n)システムの基盤であり、どの翻訳、フォーマット、ルールが適用されるかを決定します。
Unicode と UTF-8
Unicodeは、あらゆる文字体系のすべての文字に固有のコードポイントを割り当てています。UTF-8はウェブ上で主流のエンコーディングであり、言語に関係なくテキストが正しく表示されることを保証します。
翻訳キー
翻訳キーは、ロケール固有の文字列に対応付けられた一意の識別子です。これにより、ソースコードと翻訳対象のコンテンツが分離され、開発と翻訳を並行して進めることが可能になります。
複数形化(ICU)
言語によって複数形のルールは異なります。英語には2つの形がありますが、アラビア語には6つあります。ICU MessageFormatは、単一の構文で複数形、性別、および選択式を処理します。
RTLのサポート
アラビア語、ヘブライ語、およびその他の文字体系は右から左へ読みます。RTL(右から左)対応には、レイアウトの反転、アイコンの向き変更、および「left」や「right」の代わりにCSSの論理プロパティを使用することが必要です。
日付 / 番号 / 通貨
日付、数値、通貨の表示形式はロケールによって異なります。Intl API や date-fns などのライブラリはロケールに応じた書式設定機能を提供しているため、1,000.50 はドイツ語では 1.000,50 と表示されます。
タイトル
サブタイトル
JSON
Webアプリ(React、Vue、Angular)で最も広く利用されています。人間が読みやすい形式で、ネスト構造をサポートしているため、キー構造を整理して管理できます。組み込みの複数形変換機能は備えていないため、ICU MessageFormatなどのライブラリがその役割を果たしています。
XLIFF
ツール間の翻訳データ交換のためのXMLベースの業界標準。すべてのプロフェッショナル向けTMSプラットフォームでサポートされています。記述は詳細ですが機能豊富で、注釈、ステータス追跡、メタデータへの対応が組み込まれています。
PO/POT (Gettext)
Python、PHP、Rubyのエコシステムで広く採用されている定番のオープンソース形式です。専用の複数形表記構文による組み込みの複数形対応機能を備えています。翻訳者や翻訳ツールから広く支持されています。
ARB
Application Resource Bundleは、FlutterおよびDartの標準フォーマットです。JSONをベースとし、ICUメッセージ構文をサポートしているため、複数形や選択項目をネイティブに扱えます。Flutterのgen-l10nツールで使用されています。
.strings / .stringsdict
iOSおよびmacOS開発向けのAppleプラットフォーム固有のフォーマットです。.stringsは単純なキーと値のペアを扱い、.stringsdictは複数形化ルールにXML形式のplist構造を使用します。
.resx
C#およびVB.NETアプリケーションで使用される.NETリソースファイル形式。XMLベースであり、Visual Studioとの強力な統合機能を備えています。文字列、画像、その他のアセットに対する型付きリソースをサポートしています。
タイトル
サブタイトル
コードベースの監査
ハードコードされた文字列、日付形式、およびロケールに依存するパターンをすべて特定します。抽出が必要なユーザー向けテキストが含まれているコンポーネントやページを特定します。
文字列の外部化
ユーザー向けのテキストをすべて構造化されたリソースファイル(JSON、XLIFF、またはPO)に移行します。インライン文字列を、キーを参照する翻訳関数の呼び出しに置き換えます。
ツールを選択してください
フレームワークに適したi18nライブラリと、共同作業用の翻訳管理システム(TMS)を選択し、人間による翻訳、AI翻訳、あるいはそのハイブリッドといったワークフローのいずれを採用するか決定してください。
統合・出荷
i18nライブラリをルーティングおよびレンダリングに組み込み、TMSをCI/CDに接続して自動同期を行い、CDN経由でロケールバンドルをデプロイして高速配信を実現します。
タイトル
サブタイトル
開発者向けインテグレーション
CLIツール、SDKサポート、Gitベースのワークフロー、CI/CDフックを評価してください。優れたTMSプラットフォームは開発パイプラインに直接統合され、コード変更に合わせて翻訳が自動的に同期されます。
翻訳メモリ
翻訳メモリは、以前に承認された翻訳を保存し、類似または同一の文字列に対して提案します。これにより、翻訳コストを削減し、納期を短縮し、製品全体の一貫性を維持できます。
コラボレーション機能
レビュワーのワークフロー、インラインコメント、共有用語集、承認チェーンをお探しください。これらの機能により、翻訳者・レビュワー・開発者がボトルネックやコミュニケーション不足なく協力して作業できます。
AIと自動化
現代のTMSプラットフォームは、機械翻訳の提案、自動品質チェック、一括操作、スマートルーティングを提供しています。AIを活用したワークフローにより、翻訳品質を維持しながら手作業の負担を軽減できます。
タイトル
サブタイトル
React
react-intl、react-i18next、および FormatJS の活用例
Next.js
App Router、ミドルウェア、およびサーバーコンポーネントの国際化(i18n)
Vue
Vue-i18nのコンポジションAPIとSFCの統合
Angular
i18n、ngx-translate、およびTranslocoが組み込まれています
Svelte
svelte-i18n、SvelteKitのルーティング、およびストア
Flutter
intl パッケージ、ARB ファイル、および gen-l10n ツール
React Native
i18next、Expoのローカライズ、およびネイティブモジュール
Nuxt
自動ルーティング機能を備えた @nuxtjs/i18n モジュール
タイトル
サブタイトル
文字列の連結
語順が異なる言語では、文の断片をつなぎ合わせて文を作成すると不自然になります。代わりに、プレースホルダーを使用したICU MessageFormatをご利用ください。
ハードコーディングされた文字列
ユーザー向けのテキストをソースコードに直接埋め込むと、コードを変更せずに翻訳することができなくなります。最初からすべての文字列を外部化してください。
複数形を無視する
単数形と複数形を区別する単純なif/else構文は、英語でのみ機能します。多くの言語には複数の複数形が存在するため、適切なICUの複数形ルールが必要です。
後付けの翻訳
リリース後に国際化(i18n)機能を後付けすると、多額のコストがかかるリファクタリングが必要になります。最初から国際化を念頭に置いて設計すれば、時間を節約でき、アーキテクチャの負債を防ぐことができます。
タイトル
サブタイトル
- ユーザー向けのすべての文字列をリソースファイルに外部化しました
- ロケール検出機能を実装(ブラウザ、URL、ユーザー設定)
- すべての対象言語において、ICU MessageFormat を使用して複数形処理を行う
- 日付、時刻、数値、通貨の書式設定には、Intl API または同等の機能を使用します
- CSSの論理プロパティを使用したRTLレイアウトのサポートをテストしました
- 翻訳が欠落している場合に設定されるフォールバックロケール
- 翻訳キーには一貫した命名規則が適用されています
- CIパイプラインは、翻訳キーの欠落や未使用がないことを検証します
タイトル
サブタイトル
- 擬似
- ビジュアル
- 自動化
- 言語的
- 展開
タイトル
サブタイトル
i18nとL10nの違いは何ですか?
国際化(i18n)とは、ソフトウェアが複数の言語や地域に対応できるよう設計する技術的なプロセスを指します。一方、ローカライズ(L10n)とは、テキストの翻訳、フォーマットの調整、文化的適切性の確保など、特定のロケールに合わせてソフトウェアを適応させるコンテンツ関連のプロセスを指します。i18nはコードベースに対して一度行われるのに対し、L10nはサポートするすべてのロケールに対して行われます。
どのi18nライブラリを使用すべきですか?
最適なライブラリはフレームワークによって異なります。Reactではreact-intl(FormatJS)とreact-i18nextが最も広く採用されています。Vueの開発者は通常vue-i18nを使用します。Angularには組み込みのi18nサポートのほか、Translucoなどのコミュニティオプションがあります。Svelteプロジェクトはsvelte-i18nを使用します。バンドルサイズ、ICUサポート、レンダリングモデルとの統合性を基準に各オプションを評価してください。
最初にいくつの言語でリリースすべきですか?
既存のユーザーデータやターゲット市場調査に基づき、影響度の高い2〜3言語から始めてください。これにより、i18nアーキテクチャ、翻訳ワークフロー、QAプロセスを管理しやすい規模で検証できます。信頼性の高いパイプラインが整ったら追加言語に拡張し、アナリティクスを活用して次に追加するロケールの優先順位を付けてください。
アプリに機械翻訳を使用できますか?
ハイブリッドアプローチが効果的です。初稿や大量かつ重要度の低いコンテンツには機械翻訳を使用し、マーケティングコピー、エラーメッセージ、法的テキストなど品質が重要な文字列は人間のレビュアーが精査します。現代のニューラル機械翻訳は大幅に向上していますが、ニュアンス、ブランドボイス、文化的正確性においては人間によるレビューが依然として不可欠です。
疑似ローカライゼーションとは何ですか?
疑似ローカライゼーションとは、意味を変えずにテキストをアクセント付きまたは拡張文字に置き換えるテスト手法です(例:「Hello」を「[~Hellllo~]」にする)。実際の翻訳が利用可能になる前に、ハードコードされた文字列、テキストの切り捨て、レイアウトの問題を開発者が発見するのに役立ちます。ほとんどのi18nライブラリやTMSツールは疑似ローカライズされた出力の自動生成をサポートしています。
動的コンテンツのローカライゼーションはどのように処理しますか?
文字列を連結する代わりに、ICU MessageFormatプレースホルダーを補間に使用してください(例:「こんにちは、{name}さん」)。複数形には、各言語のルールに対応するICU複数形構文を使用してください。語順は言語によって異なるため、断片から文を組み立てることは避けてください。リッチテキストには、マークアップを壊すことなく翻訳者がHTML要素を並び替えられるタグ付きプレースホルダーを使用してください。