i1n
i1n
あらゆる言語でアプリを。コマンド一つで。

コードとしてのローカリゼーション。翻訳キーをプッシュし、AIが182言語に翻訳し、型安全なTypeScript定義をプルします。開発者、AIエージェント、プロダクトチームのために構築されました。
ずっと無料 · クレジットカード不要 · i1n.ai
なぜi1nなのか?
従来のi18nは、数十個のJSONファイル、型安全性の欠如、何時間ものコピー&ペースト、そして深夜2時に壊れるデプロイを意味していました。既存のツールは月額120ドル以上かかり、ブラウザベースのワークフローを必要とします。
i1nは違います:
コマンド一つ —
i1n push --translate es,fr,jaで完了型安全 — IDEの完全なオートコンプリートを備えた自動生成される
i1n.d.tsAIネイティブ — Cursor、Claude Code、Windsurf用のMCPサーバー。エージェントがあなたの代わりにi18nを処理します
移行コストゼロ — ブリッジモードで既存のi18next/next-intl/vue-i18nをラップ
6倍安価 — 無料枠あり。Proは月額19ドル(Lokaliseは月額120ドル)
📦 インストール
# To use the CLI (global)
npm install -g i1n
# To use the SDK + types (in your app)
npm install i1n
# Local CLI usage (optional)
npm install -D i1nnpm、pnpm、yarn、bunをサポートしています。
🏁 クイックスタート
# 1. Initialize (auth + auto-detect setup)
i1n init
# 2. Push your translation keys
i1n push
# 3. Pull translations + auto-generated TypeScript types
i1n pull✨ 主な機能とコマンド
🛠️ i1n init
ワークスペースを準備するインタラクティブなセットアップ。
APIキーによる認証。
初めてですか? まだキーをお持ちでない場合、CLIが開始方法を明確に案内します。
フレームワーク(Next.js、Vite、Expo、Flutter、Railsなど)を自動検出。
設定を
i1n.config.jsonに保存(.gitignoreで自動的に除外されます)。AIオーケストレーション: AIコーディングツール用のルールをオプションで設定します。
⬆️ i1n push
ローカルの翻訳をi1nに同期します。
新しいキーとソースの変更を検出。
スマート翻訳: 続行前にコスト見積もりとともに、不足しているキーの翻訳を提案します。
効率的なキャッシュレイヤー — 繰り返し翻訳は新規翻訳よりも低コストです。
⬇️ i1n pull
翻訳をダウンロードし、型安全なIDを生成します。
設定した形式でローカルのロケールファイルを更新。
IDEの完全なオートコンプリートのために
i1n.d.tsを生成。
📊 i1n limits
リアルタイムの利用状況追跡。
現在のプランとクレジット使用量を確認。
アクティブな言語スロットと利用可能な容量を監視。
🧠 i1n setup-ai
IDEをローカリゼーションの専門家に変えます。
Cursor (
.mdc)、Claude Code (CLAUDE.md)、Windsurf などのプロジェクト固有のルールを生成。AIエージェントが命名規則、ファイル構造、ブランドボイスに従うことを保証します。
🔌 i1n mcp
AIコーディングアシスタント用MCPサーバー。
Model Context Protocol サーバーを起動し、Cursor、Claude Code、Windsurf、その他のAIアシスタントがIDEから直接i1nコマンドを実行できるようにします。
# Add to Claude Code
claude mcp add i1n -- npx i1n mcp
# Or add to .mcp.json / cursor config{
"mcpServers": {
"i1n": {
"command": "npx",
"args": ["i1n", "mcp"]
}
}
}7つのツールが利用可能:
ツール | 説明 |
| プロジェクトのステータス、プラン、制限、アクティブな言語を取得 |
| 自動差分検出機能付きでローカル翻訳ファイルをプッシュ |
| 翻訳をプルし、型安全なTypeScript定義を生成 |
| AIを使用してキーを指定言語に翻訳 |
| オプションの自動翻訳付きで新しい言語を追加 |
| コードから文字列を抽出し、キーとしてプッシュし、全言語に翻訳 |
| 名前または値で既存の翻訳キーを検索 |
キラーワークフロー — AIエージェントに「このコンポーネントを国際化して」と伝えるだけ:
エージェントがファイルを読み取り、ハードコードされた文字列を特定
抽出された文字列で
i1n_extract_and_translateを呼び出すi1nがキーをプッシュし、全アクティブ言語に翻訳し、型を生成
エージェントが
t('key')呼び出しでコンポーネントを書き換える
60分の作業が30秒で完了します。
📁 対応フォーマット
フォーマット | フレームワーク | ファイルサンプル |
Nested JSON | i18next, next-intl, vue-i18n |
|
Flat JSON | React Native, Generic |
|
ARB | Flutter / Dart |
|
YAML | Ruby on Rails |
|
Android XML | Native Android |
|
Apple Strings | iOS / macOS |
|
TypeScript | Type-safe JSON |
|
🧩 SDKの使用方法
i1n パッケージには、WebおよびモバイルJS/TSプロジェクト用のランタイムSDKが含まれています。2つの方法で使用できます:
スタンドアロンモード — i18nライブラリを置き換える
i1nネイティブエンジンを直接使用します。外部依存関係は不要です。
import { init, t, setLocale } from "i1n";
// Load your translation resources
init({
locale: "en_us",
resources: {
en_us: {
auth: { login: "Login", title: "Welcome back, {user}" },
items_one: "One item",
items_other: "{count} items",
},
es_es: {
auth: { login: "Entrar", title: "Bienvenido de nuevo, {user}" },
items_one: "Un elemento",
items_other: "{count} elementos",
},
},
});
// Autocomplete and type-safety work out of the box after 'i1n pull'
t("auth.login"); // "Login"
// Support for default values (useful during development)
t("new.key", { defaultValue: "Coming soon..." }); // "Coming soon..."
// Variables & Plurals
t("auth.title", { user: "Fran" }); // "Welcome back, Fran"
t("items", { count: 5 }); // "5 items"
// Switch language at runtime
setLocale("es_es");
t("auth.login"); // "Entrar"キー解決は、ネストされた構造とフラットな構造の両方で自動的に機能します。プロジェクトが好む形式を使用してください。
ブリッジモード — ライブラリを維持し、型安全性を追加する
すでにi18next、vue-i18n、react-intlを使用していますか?1行でi1nに接続し、完全なオートコンプリートを取得します。
import i18next from "i18next";
import { registerI1n, t } from "i1n";
// Set up i18next as usual
await i18next.init({
lng: "en",
resources: {
/* ... */
},
});
// Connect to i1n — one line
registerI1n((key, params) => i18next.t(key, params));
// Now t() uses i18next under the hood, but with strict type checking
t("common.greeting", { name: "World" }); // Powered by i18next, typed by i1nあらゆるライブラリで動作します:
vue-i18n:
registerI1n((key, params) => i18n.global.t(key, params))react-intl:
registerI1n((key, params) => intl.formatMessage({ id: key }, params))Custom:
registerI1n((key) => myLookup(key))
複数形(Pluralization)
_zero、_one、_other サフィックスを使用して複数形のバリエーションを定義します:
// In your translation files:
// "items_zero": "No items"
// "items_one": "One item"
// "items_other": "{count} items"
t("items", { count: 0 }); // "No items"
t("items", { count: 1 }); // "One item"
t("items", { count: 5 }); // "5 items"補間(Interpolation)
3つの構文が普遍的にサポートされています:{var}, {{var}}, %{var}
JavaScript (TypeScriptなし)
SDKはプレーンなJSでも動作しますが、オートコンプリートは利用できません:
import { init, t } from "i1n";
init({ locale: "en_us", resources: { en_us: { greeting: "Hello {name}" } } });
t("greeting", { name: "World" }); // "Hello World"⚛️ React / Preact 統合
「プラグアンドプレイ」体験のために、このミニマリストなプロバイダーパターンを使用してください。
import { createContext, useContext, useState, useEffect } from "react";
import { init, t, getLocale, setLocale as sdkSetLocale } from "i1n";
// 1. Initialize with wordings
// (In a real app, you'd probably import these from your locales folder)
init({
locale: "en_us",
resources: {
/* ... */
},
});
const STORAGE_KEY = "i1n-locale";
const I1nContext = createContext({
locale: "en_us",
setLocale: (l: string) => {},
});
// 2. Persistent Provider
export function I1nProvider({ children, defaultLocale = "en_us" }) {
const [locale, setLocaleState] = useState(() => {
return localStorage.getItem(STORAGE_KEY) || defaultLocale;
});
// Keep SDK in sync
useEffect(() => {
sdkSetLocale(locale);
}, [locale]);
const setLocale = (newLocale: string) => {
localStorage.setItem(STORAGE_KEY, newLocale);
setLocaleState(newLocale);
};
return (
<I1nContext.Provider value={{ locale, setLocale }}>
{children}
</I1nContext.Provider>
);
}
// 3. Simple Hook
export const useI1n = () => ({ t, ...useContext(I1nContext) });使用方法:
const { t, setLocale } = useI1n();
return (
<div>
<h1>{t("auth.title", { user: "Fran" })}</h1>
<button onClick={() => setLocale("es_es")}>Español</button>
</div>
);非JSプラットフォーム
Flutter、Android、iOSプロジェクトはSDKを使用しません。i1n pull によって生成された翻訳ファイル (.arb, .xml, .strings) をネイティブのローカリゼーションシステムで使用します。
🛡️ 開発者体験
🔒 プライバシーとセキュリティ
自動除外:
i1n initは機密設定ファイルを自動的に.gitignoreに追加します。シークレット管理: APIキーはローカルにのみ保存され、バージョン管理にはコミットされません。
暗号化通信: すべての同期操作は安全なHTTPSチャネル経由で行われます。
🔒 設定不要の型安全性 (TypeScript)
CLIは、プロジェクト固有のキーで i1n パッケージを自動的に拡張する軽量な宣言ファイル (i1n.d.ts) を生成します。
Pull:
i1n pullを実行します。CLIはlocales/i1n.d.tsを生成し、IDEが即座に認識できるようにtsconfig.jsonを自動的に更新します。Usage:
i1nからtをインポートし、完全なオートコンプリートとコンパイル時のチェックを取得します。手動のパスマッピングは不要です。
import { t } from "i1n";
// Full autocomplete & compile-time checking
t("auth.login.title");
// ERROR: Argument of type '"auth.login.titlse"' is not assignable...
t("auth.login.titlse");💳 料金
プラン | 価格 | キー | 言語 | AI翻訳/月 |
Starter | $0 | 600 | 2 | 2,000 |
Pro | $19/月 | 5,000 | 5 | 10,000 |
Business | $49/月 | 15,000 | 12 | 20,000 |
Enterprise | カスタム | カスタム | 182 | カスタム |
CLI、SDK、MCPサーバーはすべてのプランで無料です。Starterプランにクレジットカードは不要です。
Proのライフタイムプランは99ドルから — 最初の200ユーザー限定。
📄 ライセンス
MIT — © 2026 i1n.ai
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Pakvothe/i1n-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server