コンテンツへスキップ
バッジ

タイトル

サブタイトル

i18n · once

タイトル

  • ロケール識別子(BCP 47)
  • Unicode と UTF-8
  • 翻訳キー
  • 複数形化(ICU)
t("cart.items", { count })

L10n · per locale

タイトル

  • tr-TRreviewed
  • de-DEreviewed
  • ja-JPin review
  • ar-EGrtl · queued

Foundations

タイトル

サブタイトル

タイトル

段落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

.json

React · Vue · Angular

Webアプリ(React、Vue、Angular)で最も広く利用されています。人間が読みやすい形式で、ネスト構造をサポートしているため、キー構造を整理して管理できます。組み込みの複数形変換機能は備えていないため、ICU MessageFormatなどのライブラリがその役割を果たしています。

XLIFF

.xlf

TMS interchange

ツール間の翻訳データ交換のためのXMLベースの業界標準。すべてのプロフェッショナル向けTMSプラットフォームでサポートされています。記述は詳細ですが機能豊富で、注釈、ステータス追跡、メタデータへの対応が組み込まれています。

PO/POT (Gettext)

.po / .pot

Python · PHP · Ruby

Python、PHP、Rubyのエコシステムで広く採用されている定番のオープンソース形式です。専用の複数形表記構文による組み込みの複数形対応機能を備えています。翻訳者や翻訳ツールから広く支持されています。

ARB

.arb

Flutter · Dart

Application Resource Bundleは、FlutterおよびDartの標準フォーマットです。JSONをベースとし、ICUメッセージ構文をサポートしているため、複数形や選択項目をネイティブに扱えます。Flutterのgen-l10nツールで使用されています。

.strings / .stringsdict

.strings

iOS · macOS

iOSおよびmacOS開発向けのAppleプラットフォーム固有のフォーマットです。.stringsは単純なキーと値のペアを扱い、.stringsdictは複数形化ルールにXML形式のplist構造を使用します。

.resx

.resx

.NET · C#

C#およびVB.NETアプリケーションで使用される.NETリソースファイル形式。XMLベースであり、Visual Studioとの強力な統合機能を備えています。文字列、画像、その他のアセットに対する型付きリソースをサポートしています。

バッジ

タイトル

サブタイトル

  1. コードベースの監査ハードコードされた文字列、日付形式、およびロケールに依存するパターンをすべて特定します。抽出が必要なユーザー向けテキストが含まれているコンポーネントやページを特定します。
  2. 文字列の外部化ユーザー向けのテキストをすべて構造化されたリソースファイル(JSON、XLIFF、またはPO)に移行します。インライン文字列を、キーを参照する翻訳関数の呼び出しに置き換えます。
  3. ツールを選択してくださいフレームワークに適したi18nライブラリと、共同作業用の翻訳管理システム(TMS)を選択し、人間による翻訳、AI翻訳、あるいはそのハイブリッドといったワークフローのいずれを採用するか決定してください。
  4. 統合・出荷i18nライブラリをルーティングおよびレンダリングに組み込み、TMSをCI/CDに接続して自動同期を行い、CDN経由でロケールバンドルをデプロイして高速配信を実現します。

タイトル

サブタイトル

  • ユーザー向けのすべての文字列をリソースファイルに外部化しました
  • ロケール検出機能を実装(ブラウザ、URL、ユーザー設定)
  • すべての対象言語において、ICU MessageFormat を使用して複数形処理を行う
  • 日付、時刻、数値、通貨の書式設定には、Intl API または同等の機能を使用します
  • CSSの論理プロパティを使用したRTLレイアウトのサポートをテストしました
  • 翻訳が欠落している場合に設定されるフォールバックロケール
  • 翻訳キーには一貫した命名規則が適用されています
  • CIパイプラインは、翻訳キーの欠落や未使用がないことを検証します

バッジ

タイトル

サブタイトル

  • 開発者向けインテグレーション

    CLIツール、SDKサポート、Gitベースのワークフロー、CI/CDフックを評価してください。優れたTMSプラットフォームは開発パイプラインに直接統合され、コード変更に合わせて翻訳が自動的に同期されます。

  • 翻訳メモリ

    翻訳メモリは、以前に承認された翻訳を保存し、類似または同一の文字列に対して提案します。これにより、翻訳コストを削減し、納期を短縮し、製品全体の一貫性を維持できます。

  • コラボレーション機能

    レビュワーのワークフロー、インラインコメント、共有用語集、承認チェーンをお探しください。これらの機能により、翻訳者・レビュワー・開発者がボトルネックやコミュニケーション不足なく協力して作業できます。

  • AIと自動化

    現代のTMSプラットフォームは、機械翻訳の提案、自動品質チェック、一括操作、スマートルーティングを提供しています。AIを活用したワークフローにより、翻訳品質を維持しながら手作業の負担を軽減できます。

Quality

タイトル

サブタイトル

  • 文字列の連結

    語順が異なる言語では、文の断片をつなぎ合わせて文を作成すると不自然になります。代わりに、プレースホルダーを使用したICU MessageFormatをご利用ください。

  • ハードコーディングされた文字列

    ユーザー向けのテキストをソースコードに直接埋め込むと、コードを変更せずに翻訳することができなくなります。最初からすべての文字列を外部化してください。

  • 複数形を無視する

    単数形と複数形を区別する単純なif/else構文は、英語でのみ機能します。多くの言語には複数の複数形が存在するため、適切なICUの複数形ルールが必要です。

  • 後付けの翻訳

    リリース後に国際化(i18n)機能を後付けすると、多額のコストがかかるリファクタリングが必要になります。最初から国際化を念頭に置いて設計すれば、時間を節約でき、アーキテクチャの負債を防ぐことができます。

タイトル

サブタイトル

  • 擬似
  • ビジュアル
  • 自動化
  • 言語的
  • 展開

By framework

タイトル

サブタイトル

バッジ

タイトル

サブタイトル

タイトル

サブタイトル