Skip to main content
Glama

i1n

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

npm license MCP

demo

コードとしてのローカリゼーション。翻訳キーをプッシュし、AIが182言語に翻訳し、型安全なTypeScript定義をプルします。開発者、AIエージェント、プロダクトチームのために構築されました。

ずっと無料 · クレジットカード不要 · i1n.ai


なぜi1nなのか?

従来のi18nは、数十個のJSONファイル、型安全性の欠如、何時間ものコピー&ペースト、そして深夜2時に壊れるデプロイを意味していました。既存のツールは月額120ドル以上かかり、ブラウザベースのワークフローを必要とします。

i1nは違います:

  • コマンド一つi1n push --translate es,fr,ja で完了

  • 型安全 — IDEの完全なオートコンプリートを備えた自動生成される i1n.d.ts

  • AIネイティブ — 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 i1n

npmpnpmyarnbunをサポートしています。


🏁 クイックスタート

# 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つのツールが利用可能:

ツール

説明

i1n_status

プロジェクトのステータス、プラン、制限、アクティブな言語を取得

i1n_push

自動差分検出機能付きでローカル翻訳ファイルをプッシュ

i1n_pull

翻訳をプルし、型安全なTypeScript定義を生成

i1n_translate

AIを使用してキーを指定言語に翻訳

i1n_add_language

オプションの自動翻訳付きで新しい言語を追加

i1n_extract_and_translate

コードから文字列を抽出し、キーとしてプッシュし、全言語に翻訳

i1n_search

名前または値で既存の翻訳キーを検索

キラーワークフロー — AIエージェントに「このコンポーネントを国際化して」と伝えるだけ:

  1. エージェントがファイルを読み取り、ハードコードされた文字列を特定

  2. 抽出された文字列で i1n_extract_and_translate を呼び出す

  3. i1nがキーをプッシュし、全アクティブ言語に翻訳し、型を生成

  4. エージェントが t('key') 呼び出しでコンポーネントを書き換える

60分の作業が30秒で完了します。


📁 対応フォーマット

フォーマット

フレームワーク

ファイルサンプル

Nested JSON

i18next, next-intl, vue-i18n

en/common.json

Flat JSON

React Native, Generic

locales/en.json

ARB

Flutter / Dart

app_en.arb

YAML

Ruby on Rails

en.yml

Android XML

Native Android

strings.xml

Apple Strings

iOS / macOS

Localizable.strings

TypeScript

Type-safe JSON

locales/en.ts


🧩 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) を生成します。

  1. Pull: i1n pull を実行します。CLIは locales/i1n.d.ts を生成し、IDEが即座に認識できるように tsconfig.json自動的に更新します。

  2. 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

-
security - not tested
A
license - permissive license
-
quality - not tested

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