LocalePack
ChromeFirefoxEdgeOperaSafariCWS 掲載ページ
Vue.jsReact
Next.jsi18nextReact Native
開発者向けガイド導入事例
One format, every major browser

AI ローカリゼーションで browser extensions

元の messages.json をアップロードし、対象言語を選び、1回の支払いで、すぐに公開できる _locales の ZIP をダウンロードできます。

プレースホルダー安全な翻訳
WebExtension の messages.json に準拠
明確な料金体系
messages.json
ソース言語(例)
{
  "appName": {
    "message": "My Extension",
    "description": "Name"
  },
  "welcomeMsg": {
    "message": "Hello, $USER$!",
    "placeholders": {
      "user": {
        "content": "$1"
      }
    }
  }
}
ドイツ語(出力)
{
  "appName": {
    "message": "Meine Erweiterung",
    "description": "Name"
  },
  "welcomeMsg": {
    "message": "Hallo, $USER$!",
    "placeholders": {
      "user": {
        "content": "$1"
      }
    }
  }
}
52 locales

仕組み

browser extension をローカライズするための簡単な3ステップ。翻訳は支払い後に実行され、ジョブをキューに入れて数分で ZIP を生成します。

01

アップロード

元の messages.json ファイルをドロップしてください。すぐに解析し、browser extension の形式を検証します。

02

言語を選択して料金を確認

52言語から選べます。支払い前に、ファイルサイズに基づく明確な料金を確認できます。

03

ZIP をダウンロード

Stripe で1回だけ支払います。すべての _locales/{lang}/messages.json ファイルを生成し、ZIP にまとめます。

リアルタイム料金デモ

明確な料金見積もり

アップロード前に支払い金額を正確に確認できます。最終見積もりは、アップロード後に文字列の長さと選択した言語に基づいて算出されます。

1. ファイルをアップロード

ここにmessages.jsonをドロップ

またはクリックして参照

WebExtension messages.json format. Max 500KB.

2. 言語を選択

|

55言語中3言語を選択

3. お見積もり

選択した言語数3

最終価格は、チェックアウトページでファイルをアップロード後に算出されます

一括払い • サブスクリプションなし

開発者のために設計

browser extensionのロケール形式に特化。汎用的な翻訳ツールではありません。

WebExtension形式に対応

browser extensionのmessages.json構造(message、description、placeholders)に特化して構築されています。

プレースホルダー保護

$PLACEHOLDER$構文をそのまま正確に保持します。変数はすべての言語でそのまま維持されます。

説明のコンテキスト

descriptionフィールドを読み取り、より正確なAI翻訳のためのコンテキストヒントとして活用します。

ZIPでエクスポート可能

正しい_locales/{lang}/messages.jsonのフォルダ構成でZIPをダウンロードできます。拡張機能にそのまま入れるだけです。

並列処理

すべての言語を同時に翻訳します。ほとんどのジョブは5分以内に完了します。

一括払い

サブスクなし、月額料金なし。ジョブごとに一度支払えば、いつでもダウンロードできます。

WebExtension 拡張機能の i18n の仕組み

Every major browser reads the same _locales/{locale}/messages.json structure. Chrome, Edge and Opera expose the chrome.i18n namespace; Firefox and Safari expose browser.i18n. The file format, the placeholder syntax and the default_locale requirement are identical across all of them, which is why a single translated folder ships everywhere.

_locales/ フォルダー構成
_locales/
├── en/
│   └── messages.json   ← default_locale
├── de/
│   └── messages.json
├── fr/
│   └── messages.json
└── ja/
    └── messages.json
messages.json
{
  "appName": {
    "message": "My Extension",
    "description": "Extension name"
  },
  "greeting": {
    "message": "Hello, $USER$!",
    "placeholders": {
      "user": { "content": "$1" }
    }
  }
}

ランタイムAPI

chrome.i18n / browser.i18n

呼び出し例

getMessage("key")

マニフェストで必須

"default_locale"

In-extension strings come from _locales/. Store listing copy is managed separately in each store's own dashboard — translating one does not translate the other.

messages.json format explained →

What actually differs between browsers

The messages.json format is shared across every major browser. Only four things vary, and none of them require re-translating your strings.

Runtime namespace
Chrome, Edge, and Opera expose chrome.i18n. Firefox and Safari expose browser.i18n. The method names and arguments are otherwise the same.
Folder location
Most browsers read _locales/ from the extension root. Build frameworks move it: WXT emits public/_locales/, and Plasmo reads locales/ rather than _locales/.
Store listing text
In-extension strings come from _locales/. Store listing copy does not — Chrome Web Store, AMO, and App Store Connect each manage listing translations in their own dashboard.
Locale-code lists
Chromium browsers accept a fixed set of underscore-separated codes and silently ignore anything else. Check your codes before shipping rather than after.

One translated _locales/ folder covers Chrome, Firefox, Edge, Opera, and Safari. The porting work is in the build, never in the strings.

なぜ汎用ツールではダメなのか?

汎用の翻訳ツールはbrowser extension形式を理解しません。

LocalePack
手動翻訳
汎用TMS
セットアップ時間2分言語ごとに数時間30分以上
料金の透明性
WebExtension形式の安全性
プレースホルダー保護
速度(52言語)5分未満週時間
最適な用途Cross-browser extensions小規模プロジェクトエンタープライズ向け Web アプリ

導入事例

LocalePack を使って、最大 52 言語でグローバルなユーザーに届けた実際のプロジェクト。

AstrologerAI AI astrology app localized into 52 languages

AstrologerAI: an AI astrology app localized into 52 languages

How the AstrologerAI app translated its entire experience into 52 languages with LocalePack — 6.3M tokens for $58.73 — to reach a worldwide audience in their own language.

DevToys.pro developer tools web app localized into 52 languages

DevToys.pro: 400% international traffic growth across 52 languages

How the DevToys.pro web app translated its entire UI into 52 languages with LocalePack — 5.8M tokens for $58.44 — and quadrupled its international organic traffic.

DevToys New Tab Chrome extension localized into 52 languages

DevToys New Tab: a Chrome extension localized UI + store listing in 52 languages

How the DevToys New Tab Chrome extension localized both its in-extension UI and its Chrome Web Store listing into 52 languages to reach a global audience.

The LocalePack site localized into 52 languages with LocalePack

LocalePack localized itself into 52 languages — with LocalePack

We used our own tool to translate the entire LocalePack site into 52 languages — 2.9M tokens for $27.37 — so developers worldwide find us in their own language.

成功事例をすべて見る

拡張機能開発者に信頼されています

“面倒な作業を何時間も節約できました。messages.json をアップロードしたら、必要な形式そのままで完璧な翻訳が返ってきました。”

Sarah K.

個人開発者、AdBlock 拡張機能

“We ship the same _locales folder to Chrome, Firefox and Edge. One translation pass covers all three.”

Marcus T.

拡張機能メンテナー

“透明な料金体系が決め手でした。何かをアップロードする前に、支払う金額が正確に分かりました。”

Dev J.

オープンソース貢献者

52

対応ロケール

100%

プレースホルダーを安全に保持

ZIP

すぐにリリース可能

よくある質問

LocalePack について知っておくべきことをまとめました。

Related developer guides

Deep dives on the formats, APIs and errors behind this page — written for developers, not translators.

messages.json format explained (with placeholders)

A complete reference for the WebExtension messages.json format: the message, description, and placeholders fields, $PLACEHOLDER$ syntax, $1 positional substitutions, and common mistakes.

WXT i18n: @wxt-dev/i18n and messages.json

How @wxt-dev/i18n compiles YAML, JSON, JSONC, JSON5 and TOML message files into standard _locales/{lang}/messages.json — setup, nested keys, plurals, substitutions, type safety, and how to translate a WXT project.

Plasmo i18n: the locales/ folder gotcha

Plasmo does not read _locales/ at the project root. The three paths it does accept, where default_locale actually lives, the alphabetical-default trap, and how to place a translated _locales ZIP correctly.

Adding i18n to a CRXJS extension

CRXJS ships no i18n helper and its docs have no i18n page. Here is the working pattern: put _locales under public/, declare default_locale in manifest.config.ts, and call chrome.i18n directly.

Browse all guides →

browser extension を世界中にリリースする準備はできましたか?

一度支払い - ZIP をダウンロード - 世界中にリリース

LocalePackを試す
LocalePack
ガイドプライバシー利用規約サポート

© 2025 LocalePack. All rights reserved.

このプロジェクトは次を使用して翻訳されました LocalePack logoLocalePack