現代のアプリにはローカライゼーションの問題があります。それは翻訳の問題ではありません。
この10年間、ローカライゼーション業界は翻訳ワークフロー――翻訳者の管理、文字列のレビュー、多言語コンテンツの配信をチームが行えるようにするツール――に焦点を当ててきました。
Phrase、Lokalise、Crowdin、Transifexといったツールは、翻訳管理に関しては非常に優れています。しかし、これらはすべて、ある重要な前提を暗黙のうちに置いています。それは「あなたのアプリケーションはすでに国際化済みである」というものです。実際には、ほとんどのアプリはそうなっていません。そしてAI生成コードの台頭により、このギャップは巨大な問題になろうとしています。
ローカライゼーションツールが見落としている、隠れたi18n層とは何か?
ローカライゼーションと国際化はしばしば混同されますが、両者は同じものではありません。
ローカライゼーション(l10n)――アプリをさまざまな言語に翻訳すること。
国際化(i18n)――そもそも翻訳を可能にするために、コードベースを整えること。
国際化とは、具体的には次のようなことを指します。UI文字列の抽出、翻訳キーの生成、ロケールファイルの作成、複数形ルールへの対応、数値や日付の書式設定、右から左に書く言語(RTL)への対応、そしてUIテキストのハードコーディングを避けることです。ほとんどのローカライゼーションツールは、この工程が終わったところからスタートします。しかし、実際の多くのコードベースでは、この工程自体が一度も行われていません。
適切に国際化されたコードとはどのようなものか
きちんと構造化されたアプリでは、UIテキストは翻訳キーを介して参照されます。
<button>{t("checkout.submit_order")}</button>
実際のテキストはロケールファイルの中にあります。
/locales/en.json
{
"checkout.submit_order": "Submit order"
}
この構造により、翻訳ツールや翻訳エンジンが確実に機能します。
実際のところ、多くのアプリはこうなっている
現実には、多くのアプリはこのようになっています。
<button>Submit order</button>
<h1>Welcome back</h1>
<p>Your payment was successful</p>
一見これは無害に見えるかもしれません。しかし、これが数百ものコンポーネント、数千のUI文字列に及ぶとしたらどうでしょう。コードベース全体が「英語オンリー」を前提としたものになってしまいます。そして別の言語に対応しようとした瞬間、あらゆる場所で問題が噴出し始めます。
- ドイツ語のテキストは約30%長くなります。ボタンからはみ出してしまいます。
- アラビア語は右から左へのレイアウトを必要とします。インターフェース全体が崩れます。
- 複数形のルールは言語によって異なります。メッセージが文法的に不自然になります。
国際化のアーキテクチャがなければ、ローカライゼーションはあっという間に大規模なリファクタリングプロジェクトへと膨れ上がります。
AIによるコード生成は、なぜローカライゼーションをより難しくしたのか?
現代の開発は、Cursor、GitHub Copilot、ChatGPT、Replit、Lovable、Boltといった、AIによるコーディングツールへの依存をますます強めています。これらのツールが最適化しているのはスピードと「動くUI」であり、アーキテクチャではありません。
典型的な生成コードは、このような見た目になります。
<button>Submit</button>
<h2>Welcome back</h2>
<p>Your order has been confirmed</p>
典型的なAI生成プロジェクトを見渡すと、次のようなものが見つかるでしょう――ハードコードされたUI文字列が数百から数千個、重複したインターフェーステキスト、翻訳キーなし、ロケールファイルなし、複数形への対応なし。つまり、デモとしては完璧でも、ローカライゼーションのアーキテクチャとしてはお粗末、というわけです。
このパターンは予測可能です。チームは素早く構築し、ローンチし、支持を集めます。そしてある時こう気づくのです。「うちのUI、全部英語がハードコードされてるじゃないか」と。この段階になると、ローカライゼーションの導入にはUIコードベースの大部分に手を入れる必要が出てきます。
私たちが実際に目にしているパターン
小規模なAI生成SaaSプロジェクトをスキャンすると、あるパターンがすぐに浮かび上がります。私たちが分析したあるReactのプロトタイププロジェクトでは、312ファイルにわたって1,284個のUI文字列が存在し、国際化の構造は皆無でした。例えば次のようなものです。
<h1>Welcome back</h1>
<button>Start free trial</button>
<p>Your payment failed</p>
ローカライゼーションを導入するために、チームは以下を行う必要がありました。数百のコンポーネントからUI文字列を抽出し、翻訳キーを導入し、ロケールファイルを構築し、UIロジックを書き直す――これらすべてを、翻訳を始める前の段階でこなさなければなりません。私たちはこのパターンを、AI生成プロジェクトで繰り返し目にしています。
なぜ従来のローカライゼーションツールは、AI生成コードに対応できないのか?
ほとんどのローカライゼーションツールは、開発者ではなく翻訳チームのために設計されています。そのワークフローは、開発チームがすでに次のものを実装済みであることを前提としています。i18nフレームワーク、翻訳キー、ロケールファイルの構造、文字列抽出のパイプラインです。しかし現代のコードベース――特にAI生成のものは、こうした基盤そのものが欠落していることが少なくありません。そのため、チームは予想外の現実に直面します。何かを翻訳する前に、まずUI層全体をリファクタリングしなければならないのです。
ローカライゼーションのスタックに欠けている層
今日のローカライゼーションのスタックは、たいてい次のような構成になっています。
しかし、そこには重要な何かが欠けています。本来必要とされる構成は次のようなものです。
その欠けている層がすべきことは、コードベースをスキャンし、UI文字列を抽出し、翻訳キーを生成し、ロケールファイルを構築し、重複した文字列を検出し、用語集を作成することです。そこまで済んで初めて、翻訳ワークフローが始められます。
なぜこの問題は今まさに爆発しようとしているのか
3つの大きな潮流が衝突しています。
- AIファーストの開発。 より多くのアプリがAI支援によるコーディングで構築されるようになっています。今やスタートアップのコードベースの中には、大部分がAI生成というものも珍しくありません。アーキテクチャは、素早くリリースすることに対して二の次になりがちです。
- インディーハッカーの爆発的増加。 毎週何千もの新しいSaaSプロダクトがローンチされています。そのほとんどは英語ファーストでローンチされます。
- 初日からのグローバルユーザー。 小さなプロダクトでさえ、あっという間にドイツ、ブラジル、インド、日本などからユーザーを獲得します。海外ユーザーが到着した瞬間、ローカライゼーションは急務となります。しかし、アーキテクチャは通常まだ準備できていません。
発想を変えたアプローチ
もし国際化を自動化できるとしたら?それこそがglobalize.nowでリポジトリを接続することで実現できることです。最初の変換はアプリ内で一度だけ実行され、見つかった内容がレポートとして返ってきます。
✔ Found 128 UI strings
✔ Generated 92 translation keys
✔ Created /locales/en.json
✔ Updated 41 files
Done in 2.7s
このツールは、コードベースをスキャンし、ユーザー向けの文字列を抽出し、構造化された翻訳キーを生成し、ロケールファイルを作成し、UIコードを自動的に書き換えます。つまり、こういうコードを
<button>Submit order</button>
こう変えるのです。
<button>{t("checkout.submit_order")}</button>
すると突然、コードベース全体が翻訳可能な状態になります。
新しいカテゴリー――AI対応ローカライゼーション
次世代のローカライゼーションツールは、翻訳者から始まるのではありません。コードの変換から始まるのです。ワークフローはこのようなものになっていくでしょう。
今日のローカライゼーションのエコシステムにおける最大のギャップは、この最初のステップ――グローバルユーザーに向けてコードベースを整える工程――の自動化です。
globalize.nowが開発者チーム向けにこれをどう自動化しているかをご覧ください。
CATツールからAIネイティブなワークフローへの歴史的な流れについては、AI時代におけるローカライゼーションの3つの段階をお読みください。
ローカライゼーションの未来
かつてローカライゼーションは翻訳の問題でした。AI開発の時代において、それはコードアーキテクチャの問題になりつつあります。この層を解決したチームこそが、今後10年間のグローバルソフトウェアの作られ方を定義するでしょう。
globalize.nowは、ハードコードされたアプリ内テキストを翻訳可能なロケールファイルに変換し、リリースのたびに自動で最新の状態を保ちます。
globalize.nowを無料で試す