ローカライゼーション — 本質、言語と地域に応じたコンテンツの適応

著者: IT Sectr 公開日: 2026-02-26 読了時間: 7 分

Localization (ローカライゼーション、l10n) — モバイルアプリのコンテンツをターゲット駆の言語、地域、文化的特徴に適応させることです。国際化 (i18n) がコードを翻訳のために準備するのとは対照的に、ローカライゼーションは文字列の翻訳、日付・数値・通貨のフォーマット、画像の選択、ローカルの規範を考慮する実際のプロセスです。iOSでは、翻訳はLocalizable.strings (各言語の .lproj フォルダ) に保存され、Androidでは values-ru、values-de および他のリソースディレクトリに保存されます。詳細はAndroidローカライゼーションガイドをご覧ください。

メインポイント

  • ローカライゼーション (l10n) — 特定の言語と地域に応じたアプリコンテンツの翻訳および適応
  • Localizable.strings — 各言語のキーバリゥー組を含む iOS ファイル
  • values-ru — ロシア語用の Android リソースディレクトリ (strings.xml)
  • 地域適応 — 日付、数値、画像、色、法的要件は国によって異なります
  • 文化的特徴 — 色、アイコン、ジェスチャー、例がローカルの規範に従う必要があります

ローカライゼーション (l10n) とは何か?i18nとの違いは?

ローカライゼーション (略称 l10n — “l”と“n”の間に10文字) は、アプリケーションを特定の言語と地域に適応させるプロセスです。i18nがアーキテクチャの基盤であるならば、l10nはコンテンツです。i18nが翻訳を可能にし、l10nがそれを実行します。ローカライゼーションには、インターフェースのすべてのテキストの翻訳、日付と数値のフォーマット適応、文化的に敏感な画像の置き換え、法的テキスト(プライバシーポリシー、EULA)の調整、地域に応じた決済システムの構成、ターゲットデバイスでのテストが含まれます。

ビジネスROI — ローカライゼーションはコンバージョンに直接影響します。CSA Research (2023) によると、76% のユーザーが母国語のアプリで貼い物を好み、40% は外国語では絶対に貼い物をしません。小売アプリの日本語ローカライゼーションにより、コンバージョンが平均150% 増加します (Google, 2022)。ローカライズ済みアプリは、地域ASO(ターゲット言語のキーワード)により、地域のApp StoreやGoogle Playで2〜3倍多いオーガニックインストールを得ています。

i18n vs l10n — 同じプロセスの両側です。i18n: 文字列をリソースに抽出、RTLサポート、数値フォーマット。開発者が一度だけ行います。l10n: 文字列の翻訳、コンテンツの適応、ローカルテスト。翻訳者とQAが各ロケールについて繰り返し行います。IT Sectrでは、新しい言語ごとにスプリント時間の20〜30% をローカライゼーションに割いています — これには翻訳、レビュー、デバイステスト、バグ修正が含まれます。

iOSでのローカライゼーション: Localizable.stringsとBase Internationalization

Localizable.strings — iOSで翻訳を保存するための主要ファイルです。各ロケールには独自の .lproj フォルダがあります: en.lproj/Localizable.strings、ru.lproj/Localizable.strings、de.lproj/Localizable.strings。フォーマット: “キー” = “値”; (セミコロン付き)。AppleはBase Internationalizationを使用します: StoryboardとXIBは一度作成され (Base.lproj)、インターフェースの文字列は各言語のLocalizable.stringsにエクスポートされます。これにより、各ロケールのXIBのコピーを作成する必要がなくなります。

swift
// en.lproj/Localizable.strings
// "settings.title" = "設定";
// "profile.greeting" = "こんにちは、%@!";
// "items.count" = "%d個のアイテム";

// ru.lproj/Localizable.strings
// "settings.title" = "設定";
// "profile.greeting" = "こんにちは、%@!";
// "items.count" = "%d個のアイテム";

// キーによる文字列の読み込み
navigationItem.title = NSLocalizedString(
    "settings.title",
    comment: "設定画面のタイトル"
)

// パラメータのある文字列
let name = "アンナ"
greetingLabel.text = String.localizedStringWithFormat(
    NSLocalizedString("profile.greeting", comment: ""), name
)

// XLIFFインポート (Xcode → Editor → Import Localizations)
// 翻訳者の作業後に .lproj ファイルを自動更新

Base Internationalization — Appleのアプローチで、インターフェース (Storyboard, XIB) がBase.lprojで一度作成されます。言語を追加すると、XcodeがBaseからXLIFFファイルに文字列をエクスポートします。翻訳者がXLIFFを翻訳します。インポート後、Xcodeが翻訳済み文字列を含む .lproj を作成します。利点: 各言語のXIBを複製する必要がありません。制限: RTL言語(アラビア語、ヘブライ語)では、ミラーレイアウトの別のXIBが必要になる場合があります。

InfoPlist.stringsとメタデータのローカライゼーション

InfoPlist.strings — アプリ名 (CFBundleDisplayName)、カメラ/マイク使用許可 (NSCameraUsageDescription) および Info.plist の他の値をローカライズするためのファイルです。.lproj 内に作成されます: ru.lproj/InfoPlist.strings。フォーマット: CFBundleDisplayName = “マイアプリ”; NSCameraUsageDescription = “写真を撮るためにカメラアクセスが必要です”;。InfoPlist.stringsのローカライゼーションがないと、システムダイアログは英語になります。

Androidでのローカライゼーション: values-ruとローカライズ済みリソース

Androidリソース は、ディレクトリ名のクォリファイアによって組織されます。ロシア語の場合— res/values-ru/、ドイツ語— res/values-de/、ブラジルポルトガル語— res/values-pt-rBR/。Androidは160以上のロケールをサポートしています。システムはデバイス言語 (Locale.getDefault()) に基づいて自動的にリソースを選択します。正確なロケールが見つからない場合は、values/ (ベースロケール、通常 en) からリソースが使用されます。

kotlin
// res/values/strings.xml (ベース — 英語)
<string name="settings_title">Settings</string>
<string name="greeting">Hello, %s!</string>

// res/values-ru/strings.xml (ロシア語)
<string name="settings_title">設定</string>
<string name="greeting">こんにちは、%s!</string>

// res/values-de/strings.xml (ドイツ語)
<string name="settings_title">Einstellungen</string>
<string name="greeting">Hallo, %s!</string>

// Kotlin — すべての言語で共通のコード
textView.text = getString(R.string.settings_title)

// パラメータのある文字列
val greeting = getString(R.string.greeting, userName)

// ローカライズ済み画像
// res/drawable-ru/flag.png — ロシア版の旗
// res/drawable/flag.png — デフォルトの旗

// レイアウトのローカライゼーション (RTL言語用)
// res/layout-ar/activity_main.xml — アラビア語版

文字列以外のローカライゼーション — Androidは画像 (res/drawable-ru/)、色 (res/values-ru/colors.xml)、サイズ (res/values-ru/dimens.xml)、アニメーション、メニュー、さらにはレイアウト全体をローカライズできます。単語の長さが異なる言語 (ドイツ語は英語より30〜40% 長い) では、ボタン幅を広げたローカライズ済みのdimens.xmlを使用します。色のシンボリズムが異なる地域 (中国で白色は収祭) では、ローカライズ済みのcolors.xmlを使用します。

デバイス上でのローカライゼーションテスト

テスト — 設定 → システム → 言語からデバイス言語をターゲット言語に切り替えます。確認: すべての文字列が翻訳されていること、日付が正しくフォーマットされていること、数値が適切な区切り文字で表示されていること、画像が地域に一致していること、長い文字列でレイアウトが崩れないこと。自動化には、LocaleTestRule (Android Testing Library) を使用したEspressoを使用します — これにより、手動で言語を切り替えることなく、複数のロケールでテストを実行できます。

文化的適応: テキスト以外に翻訳すべきもの

文化的特徴 — ローカライゼーションは文字列の翻訳だけではありません。色のシンボリズムは異なります: 赤は中国では幸運、米国では危険、南アフリカでは収祭。白はヨーロッパでは純浄、中国では収祭。ジェスチャーアイコン: 米国ではサムズアップがポジティブ、中東では軾りです。人物画像: アラブ诸国ではビキニの女性画像は不可可です。宗教的シンボル: クロス、三つ月、ダビデの星は適切な文脈でのみ使用すべきです。

法的要件 — 各国にはデジタル製品に関する独自の法律があります。GDPR (欧州連合) — Cookieとデータ処理に対する強制な同意。CCPA (カリフォルニア) — データ削除権。個人データ法 (ロシア、152-FZ) — ロシアのサーバーへのデータ保管。LGPD (ブラジル) — GDPRに相当。決済: 中国ではAlipay/WeChat Pay、インドではUPI、ブラジルではBoletoとPIXが必要です。ローカライゼーションを開始する前に、地域に応じた決済ゲートウェイを構成してください。

項目米国中国UAEドイツ
決済システムApple Pay、カードAlipay、WeChat Payカード、Apple PayPayPal、Giropay
ブランド色何でも赤 — 幸運緑 — イスラム黒/黄
ソーシャルネットワークInstagram, XWeChat, DouyinWhatsApp, XWhatsApp, X
日付MM/dd/yyyyyyyy/MM/dddd/MM/yyyydd.MM.yyyy
データ法CCPAPIPLPDPLGDPR

例とコンテンツ — 例を地域に合わせてください。ドイツ語ローカライゼーションではメトル法 (kg、km) を使用し、米国系ではインペリアル法 (lb、mi) を使用します。電話番号、郵便番号、住所 — すべて異なる形式です。通貨の例: 日本では¥1000、米国では$9.99、ロシアでは999₽。食べ物、衣類、インテリアの画像は地域の標準に合わせる必要があります。IT Sectrでは、文化的適応を検証するためにローカルコンサルタントを雇用することをおすすめしています。

ローカライゼーションプロセス: ツール、翻訳者、CI/CD

ローカライゼーションツール — プロフェッショナルなプラットフォームがプロセスを自動化します: Lokalise、Crowdin、POEditor、Smartling、Phrase。これらはリポジトリと統合し、新しい文字列を自動インポートし、変更をトラックし (デルタ更新 — 変更のあった文字列だけが翻訳される)、翻訳メモリ (TM — 過去に翻訳されたフレーズの保存)とグロッサリを提供します。プロの翻訳価格の平均: 0.08〜0.15ドル/単語 (言語による)。

プロセス — (1) 開発者がコードにi18nキーを追加し、リポジトリにプッシュします。(2) CI/CD (GitHub Actions / GitLab CI) が新しいキーを自動的にローカライゼーションプラットフォームに送信します。(3) 翻訳者が通知を受け取り、翻訳して保存します。(4) 翻訳済みファイルが自動的にリポジトリにPRを作成します。(5) QAがデバイス上でローカライゼーションを検証します。(6) リリース。1ロケールのサイクル: 2〜5営業日 (ボリュームによる)。10ロケールの場合: 翻訳者の並列作業で5〜15日。

機械翻訳 + 人間レビュー — 現代の標準です。ニューラルネットワーク翻訳 (DeepL、Google Translate、GPT-4) は人気の言語組で80〜90% の品質を提供します。人間翻訳者が確認するもの: 用語、文脈 (単語はスクリーンによって異なる意味をもつことがある)、文化的適応。IT Sectrでは、ハイブリッドアプローチを使用しています: ML翻訳 + 母国語話者によるレビュー。クリティカルな文字列 (法務、決済) については — プロの翻訳だけ。節約: 品質を維持しながらコストを60% 削減。

よくある質問

ローカライゼーションと国際化の違いは何ですか?

国際化 — 翻訳のためにコードを準備すること (文字列の抽出、RTL、フォーマット)。ローカライゼーション — 実際の翻訳と文化的適応。i18nは開発者が一度行い、l10nは翻訳者が各言語について行います。i18nなしのl10n — アプリは翻訳準備ができているが翻訳されていません。l10nなしのi18n — 各言語についてコードを書き直す必要があります。

iOSで翻訳はどこに保存されますか?

.lproj フォルダ内の Localizable.strings ファイルに保存されます。各言語: en.lproj (英語)、ru.lproj (ロシア語)、de.lproj (ドイツ語)。フォーマット: “キー” = “値”;。複数形については Localizable.stringsdict。アプリ設定 (CFBundleDisplayName) は InfoPlist.strings。XcodeはBase Internationalizationを通じて .lproj を管理します。

Androidでの values-ru とは何ですか?

values-ru — ロシア語用の Android リソースディレクトリです。翻訳を含む strings.xml を含みます。他の言語も同様です: values-de (ドイツ語)、values-fr (フランス語)。Androidはシステム言語に基づいてリソースを選択します。values-ruが見つからない場合は、values/ (ベース言語、通常英語) を使用します。

異なる地域の日付をどのようにフォーマットすればよいですか?

常にLocale APIを使用してください。iOS: DateFormatter.locale = Locale(identifier: locale)。Android: DateFormat.getDateInstance(DateFormat.SHORT, locale)。ロシア: 31.12.2024。米国: 12/31/2024。日本: 2024/12/31。固定のフォーマットを指定しないでください — 各国には独自の標準があります。日付入力にはUIDatePicker / DatePickerを使用してください。

グローバルアプリにはいくつのロケールが必要ですか?

グローバルなカバレッジには、10〜15言語で十分です: 英語、スペイン語、フランス語、ドイツ語、日本語、中国語、韓国語、ポルトガル語、ロシア語、イタリア語、アラビア語。地域を対象とする場合は1〜2言語。追加のロケールごとに、対応地域のオーガニックインストールが5〜15% 増加します。App Storeは少なくとも英語ローカライゼーションを必須としています。

まとめ

  • ローカライゼーション (l10n) — 特定の言語と地域に応じたコンテンツの翻訳と文化的適応
  • iOS — .lproj フォルダ内の Localizable.strings、Base Internationalization、InfoPlist.strings
  • Android — values-ru/strings.xml、クォリファイアによるローカライズ済み drawable とレイアウト
  • 文化的適応 — 色、アイコン、ジェスチャー、決済システム、法的要件
  • プロセス — CI/CD → ローカライゼーションプラットフォーム → 翻訳者 → QA → リリース (2〜5日/言語)
  • ハイブリッドアプローチ — ML翻訳 (DeepL、GPT) + 母国語話者レビューで60% のコスト削減
  • ROI — 76% のユーザーが母国語でのみ貼い物をする (CSA Research, 2023)

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください