すべてのユーザーが すべての投稿を読む。
API一回の呼び出しで30以上の言語に対応します。出力はその言語のネイティブが実際に書くような自然な文章で、2010年頃の翻訳ツールにありがちな不自然さはありません。ソウルやサンパウロのユーザーも、ロンドンのユーザーと同じプロダクトを、それぞれの言語で見られます。
curl https://auto18n.com/api/v1/translate \
-H "X-API-Key: $AUTO18N_KEY" \
-d '{
"text": "You have 3 new messages.",
"targetLanguage": "ja"
}'
{
"translatedText":
"新しいメッセージが3件あります。",
"detectedLanguage": "en",
"cached": false,
"usage": {
"inputTokens": 152,
"outputTokens": 23,
"cost": 0.000055
}
}
{
"translatedText":
"新しいメッセージが3件あります。",
"detectedLanguage": "en",
"cached": true,
"usage": {
"inputTokens": 0,
"outputTokens": 0,
"cost": 0
}
}
実際のAPI呼び出しをそのまま掲載しています。2回目はcacheヒット:コスト0、約100msで返ります。
試してみる
ユーザーが見る画面
デフォルトではあなたの言語で表示されます。実際に書かれた文を見たいときは、どれかの「原文を表示」を押せば切り替わり、もう一度押せば戻ります。再読み込みは発生しません。
今日のランチは渋谷の新しいラーメン屋に行ってきた。味噌ラーメンが絶品だった!並ぶ価値あり。
バックエンドをRustに移行したら、レイテンシが4分の1になった。この手のサービスでNodeに戻ることはもうない。
下のパン屋のクロワッサンがおいしすぎて、他のところで朝ごはんを食べなくなった。
たった今、人生初のフルマラソンを走り終えた。これのために2年間練習してきた。まだ実感が湧かない。
チーム全員がフルリモートになって半年。生産性はむしろ上がって、退職者もゼロ。オフィスって何のためにあったんだろう。
金曜の夕方5時にデプロイ。まあ、大丈夫でしょ。
投稿を1回の呼び出しで翻訳
ユーザーが書いた文章を送れば、読む人の言語で返ってきます。読まれるそばからその場で翻訳することも、これまでの投稿をまとめて埋めることもできます。
TypeScript SDK
投稿やチャットの描画処理に差し込むだけ。依存ゼロ、型付きエラー、Node 18+とedgeランタイム対応。
npm install auto18n
import Auto18n from "auto18n";
const a18n = new Auto18n({
apiKey: process.env.AUTO18N_API_KEY,
});
// translate a post into the reader's language
const { translatedText } = await a18n.translate({
text: post.body,
targetLanguage: reader.locale,
});素のHTTP
投稿やメッセージごとにPOST1回。ヘッダーで認証、JSONを送ってJSONが返ります。
curl https://auto18n.com/api/v1/translate \
-H "X-API-Key: $AUTO18N_KEY" \
-d '{
"text": "lol that's so real",
"targetLanguage": "fr"
}'まとめて埋める
何年分もの投稿がすでにある?バックグラウンドで送れば、アーカイブの処理が終わったときにwebhookで通知します。
// backfill old posts, 200 at a time
const { jobId } = await a18n.translateBulk({
items: batch.map((p) => ({
text: p.body,
targetLanguage: "es",
})),
});ローカライズチームを抱えなくても、プロダクト全体をどの言語でも動かせます。
UGC、プロダクトコピー、通知、サポートチケットなど、何を投げても同じエンドポイントで処理します。最初のリクエストでモデルに問い合わせ、結果をcacheに保存し、それ以降の同じ文字列のリクエストはすべてcacheから返します。再翻訳は走りません。社内に翻訳者を置く必要も、日常的な文字列をレビューする担当を置く必要もありません。
出力は2015年頃のGoogle翻訳のようには聞こえません。カジュアルな投稿は翻訳後もカジュアルなまま、フォーマルな通知はフォーマルな調子を保ちます。モデルは1文ずつ独立して扱うのではなく、周辺の文脈から文体を読み取ります。
cacheがあるので、支払いは一度だけ
文字列を一度翻訳すれば、私たちが保持します。同じ文字列への以降のリクエストは翻訳費用がかからず、ストレージ行の料金だけが発生します。1エントリあたり月にコンマ数セント程度です。
すでにあるものを全部埋める
何年分もの投稿やメッセージがすでにDBにある?1ジョブにつき最大200件までまとめて送れます。処理はバックグラウンドで走り、完了したらwebhookに通知します。バルクジョブは全体が10%割引で、すでにcacheにあるものは再翻訳ではなくスキップされます。
テストは無料、本番から課金
テストキー(sk_test_*)は本物のモデルにアクセスして本物の出力を返しますが、課金はされません。テストキーで統合を組み終えてから、リリース直前に本番キーに差し替えるだけです。
チーム前提の設計
API keyは作成した個人ではなく、チームに紐づきます。キーのローテーションや課金変更を誰がやるかはロールで制御でき、エンジニア組織全体を、各自がアカウントを作らなくても1つのアカウントに招待できます。
頭に入るシンプルな料金
トークン単位の従量課金、プリペイド方式、月額最低料金なし。テストキーは無料で、本物のモデルを使えます。
一般的なトークン比率なら100万文字あたり約$0.28。同じ100万文字にGoogle翻訳は$20かかります。
料金の詳細 →