mcpField
V
verbaly

verbaly

ローカル
github.com/AronSoto開発ツール4今日更新

verbaly について

Verbalyは、コード内に文言を書き、型付き翻訳とCIチェックを行うアプリ開発チーム向けのi18nコンパイラー兼ランタイムです。メッセージを抽出してキーを生成し、エージェントが翻訳案を作るMCPサーバーも提供しますが、承認は人が行います。

主な機能

  1. 01メッセージの抽出と安定キーの生成
  2. 02文言から型付きパラメーターを推論
  3. 03CIで翻訳の欠落や不整合を検査
  4. 04翻訳ワークフロー向けカタログの出力
  5. 05ローカルパネルで翻訳案を確認

活用シーン

  1. 01アプリの文言を実装しながら翻訳を追加
  2. 02リリース前にパラメーターや複数形の不足を検出
  3. 03エージェントで翻訳案を作成
  4. 04Studioで翻訳案を確認して承認

MCP 対応

@verbaly/mcpは翻訳ワークフローをツールとして提供し、プロジェクト設定とカタログをリソースとして公開します。エージェントは翻訳案を作成できますが、承認は人が行います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"aronsoto-verbaly": {
"command": "npx",
"args": [
"-y",
"@verbaly/mcp"
]
}
}
}
起動コマンドnpx -y @verbaly/mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@verbaly/mcp0.79.0

ツール

9

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
dirstringいいえカタログのディレクトリ(デフォルト:locales)
rootstringいいえverbaly.config を含むプロジェクトルート(デフォルトはサーバーの作業ディレクトリ)
localesarrayいいえソースロケールを含むすべてのロケール
sourceLocalestringいいえ記述に使用する言語(デフォルト:en)

詳細

Verbaly

コードにテキストを書いて、あらゆる言語でリリースしましょう。

React、Vue、Svelte、Next.js、Nuxt、SvelteKit、Astro、プレーンな HTML 向けの i18n コンパイラーと小さなランタイムです。
同期を保つキー管理ファイルは不要です。テキストからパラメーターの型が推論され、CI ゲートが翻訳の不備を防ぎます。

npm バージョン CI カバレッジ Socket サプライチェーンセキュリティ OpenSSF Scorecard npm provenance を使用して公開 gzip 圧縮時のランタイムは 3.35KB ランタイム依存関係ゼロ TypeScript MIT

左側には、t`Welcome back, ${name}`、t`You have ${count} new messages`、t`Open inbox` と書かれたコンポーネントがあります。右側には、英語からスペイン語、ポルトガル語へと切り替わる、同じページを表示したブラウザーがあります。下部には、書く、抽出する、翻訳する、確認する、の 4 つのステップがあります。

React Next.js Vue Nuxt Svelte と SvelteKit Astro Vite webpack、Rollup、esbuild、Rspack フレームワークを使わないプレーンなHTML

アイデア

ほとんどの i18n ツールでは、文ごとにキーを考え、言語ごとにファイルへ記述し、コードに合わせて手作業でファイルを同期し続ける必要があります。Verbaly はその発想を逆転させます。

// with key files: name it, write it in en.json, es.json, pt.json, keep them in sync
t('dashboard.welcome_back', { name });

// with Verbaly: write the sentence where it is used
t`Welcome back, ${name}`;

// and the compiler writes a stable key and a typed call for you
t('ESsQIvlA', { name });

リリースされるランタイムは依存関係ゼロで gzip 圧縮後 3.35 KB です。リリースごとに、このリポジトリのチェックゲート(pnpm --filter verbaly size)で測定しています。

クイックスタート

pnpm add verbaly @verbaly/vite
pnpm add -D @verbaly/compiler   # the verbaly command: init, extract, check
npx verbaly init
// vite.config.ts
import verbaly from '@verbaly/vite';

export default { plugins: [verbaly()] };
// anywhere in your app: extracted and typed on save
import { t, setLocale } from 'verbaly/app';

t`Hello ${name}`;
await setLocale('es'); // loads only the Spanish module

verbaly/app はプロジェクト独自のモジュールです。プラグインが設定をもとに、言語とカタログを組み込んで生成します。Next.js、Nuxt、SvelteKit、Astro にはそれぞれ1行で設定する方法があります。上の一覧から該当するものを選ぶか、https://verbaly-web.vercel.app/docs で完全なドキュメントをご覧ください。

Verbaly を選ぶ理由

✍️ キーファイル不要
文を書くだけです。コンパイラーが名前を付け、すべての言語ファイルをコードと同期させます。
🧷 テキストから型を推論
{name}、複数形、通貨、日付はメッセージ自体から定義されるため、誤ったパラメーターや不足しているパラメーターはコンパイル時にエラーになります。
🛑 問題のあるものは出荷されない
verbaly check は、翻訳の不足や、{param}、タグ、複数形のケースが失われた翻訳を、分かりやすく検出します。
🪶 小さく高速
依存関係ゼロ、言語ごとに1つのモジュールを用意し、すべてのリリースで i18next と比較したホットパスのベンチマークを実施します。
🔄 あらゆるワークフローに対応
翻訳者向けのプレーンな JSON、XLIFF、CSV、gettext PO、Android と iOS 向けのエクスポート、そして人が承認する AI の下書きに対応します。
🤖 エージェント対応
MCP サーバー、Agent Skill、llms.txt を備え、エージェントが下書きを作成できても承認はできない仕組みです。
## パネルで翻訳をレビューする
npx verbaly-studio

Verbaly Studio:5件が対応待ち、サイトを壊す翻訳が1件、未翻訳のメッセージが2件、誰も確認していない機械翻訳が2件あること、言語とカタログへの最後のコミットを示す概要

Studio は localhost でプロジェクトを表示します。未対応の項目、壊れている項目、機械が生成した内容、コード内の各テキストの場所を確認できます。JSON ファイルがデータベースで、git が履歴です。保存時には verbaly check と同じ検証が実行され、ソーステキストが編集されることはありません。

比較

Verbalyi18nextLinguiParaglidetypesafe-i18n
型安全なキーとパラメーター✅ テキストから推論プラグイン/手動部分的✅✅
実行時サイズ(gzip)3.35KB、依存関係ゼロ13.6KB(+React 19.0)2.2KB(+React 3.3)コンパイル済み1.2KB
セットアップVite プラグイン1つ複雑な設定マクロ + Babel/SWCinlang プロジェクトジェネレーター
キーのメンテナンス不要、抽出済み手動抽出 → コンパイル手順手動手動
動的コンテンツ/CMS コンテンツ✅ 実際の実行時パス✅✅⚠️ 弱い✅
プレーン HTML(フレームワークなし)✅ DOM インタープリター❌❌❌❌
未翻訳の検出ゲート✅ CI でのみ失敗実行時の警告CI の手順✅❌
不適切な翻訳の検出ゲート✅ CI でのみ失敗❌❌❌❌
カタログ形式プレーン JSONJSONPO/JSONinlang 形式TS ファイル

サイズは各ライブラリのメインエントリーを min+gzip で測定したもので、React は外部依存として扱っています。2026-10-15 に同じ方法で測定しました。

コーディングエージェント

claude mcp add verbaly -- npx -y @verbaly/mcp

MCP サーバーは、構造化出力と設定やカタログを読み取るためのリソースを備え、エージェントに一連の作業全体をツールとして提供します。機械翻訳は、人が承認するまで下書きのままです(verbaly review --approve または Studio)。意図的に、承認はツールとして提供していません。Agent Skill では、書き込み、抽出、チェック、翻訳の一連の作業を説明しています(npx degit AronSoto/verbaly/skills/verbaly .claude/skills/verbaly)。また、ドキュメントは llms.txt を公開しています。

パッケージ

パッケージ内容
verbalyランタイム:t、Intl フォーマット、ロケールヘルパー、DOM インタープリター
@verbaly/compiler抽出、型付きコード生成、ゲート、verbaly コマンド
@verbaly/vite · @verbaly/unpluginバンドラープラグイン:Vite、webpack、Rollup、esbuild、Rspack
@verbaly/react · @verbaly/vue · @verbaly/svelteフレームワークアダプター:フックまたはコンポーザブルと <Trans>
@verbaly/next · @verbaly/nuxt · @verbaly/sveltekitサーバーレンダリング:リクエストごとの言語、ちらつきのないハイドレーション
@verbaly/astroAstro 統合:.astro の抽出と言語ごとの静的ビルド
@verbaly/mcpMCP サーバー:エージェント向けツールとしての翻訳サイクル
@verbaly/studio上記のローカルレビュー用パネル

すべて同じバージョン番号を共有し、各リリースは npm provenance 付きで CI から公開されます。

エディター:ホバー時にキーの背後にあるテキストを表示

生成されたキーはハッシュなので、差分にある t('a1B2c3D4') を見ても何もわかりません。i18n-ally 拡張機能をカタログに向けると、実際のテキストがインラインで表示されます。Verbaly の設定変更は不要で、ファイルは 2 つです。

.vscode/settings.json

{
  "i18n-ally.localesPaths": ["locales"],
  "i18n-ally.keystyle": "flat",
  "i18n-ally.sourceLanguage": "en",
  "i18n-ally.displayLanguage": "en"
}

.vscode/i18n-ally-custom-framework.yml

languageIds:
  - javascript
  - typescript
  - javascriptreact
  - typescriptreact
  - vue
  - svelte
  - astro
usageMatchRegex:
  - "[^\\w\\d]t\\(\\s*['\"`]({key})['\"`]"
monopoly: true

keystyle はカタログに合わせる必要があります。ドット区切りのキーには flat、グループには nested を指定します。この拡張機能は読み取りに使い、書き込みには使わないでください。抽出と名前変更のアクションはキーを自分で管理していることを前提としており、ここではコンパイラーが管理するためです。

開発

pnpm install
pnpm build      # tsdown: ESM + CJS + .d.ts
pnpm test       # each package's suite
pnpm typecheck
pnpm --filter verbaly bench   # the hot path against i18next

Verbaly は 0.x であり、マイナーバージョン間でも API が変更される可能性があります。すべての変更は変更履歴に記載されています。貢献を歓迎します。CONTRIBUTING.mdをご覧ください。

フィードバック

  • 問題が起きた、または予想外の動作があった場合: バグを報告してください。最小限のコードスニペットで十分です。
  • 使いづらさを感じた場合: 内容をお知らせください。ロードマップは実際の利用状況に基づいています。
  • 問題なく動作した場合: スターや言及があると、ほかの人にも見つけてもらいやすくなります。

スポンサー

Verbaly は MIT ライセンスで、依存関係がなく、独立して開発されています。時間の節約に役立ったなら、スポンサーになることで、1.0 に向けた取り組み(統合の拡充、リリースの迅速化、長期的なメンテナンス)を支援できます。

GitHub で Verbaly のスポンサーになる

ライセンス

MIT © Aron Soto · @AronSoto

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。