無痛的i18n,擴展到您自己的視野 無需花費 數千美元。
完全免費。無限制專案,支援全部48種語言,無到期時間,無需授權金鑰。
i18n 現在毫不費力,你可以親身體驗。我不介意為此獲得小費。
- 當你感受到它
- 如果你願意的話
- 從1美元到100萬美元,不超過
由 Stripe 提供安全付款。授權金鑰會送到您的收件匣——它會在儀表板中靜音捐贈提示。
你得到的
- 無限專案,支援48種語言,永不過期
- 無限制翻譯,無使用上限
- 儀表板,您的代理的MCP伺服器,每個SDK
- 一個容器,一個用於備份的SQLite檔案
- 離線檢查的許可證:您的伺服器從不呼叫家庭
- 每次更新,終身受益:docker compose pull
你帶來的東西
- 一台帶有Docker的機器:一個4歐元的VPS就足夠了
- 一個AI API金鑰(Mistral、OpenAI、Anthropic、Google或任何與OpenAI相容的提供商)。翻譯在您自己的帳戶上運行,每個應用只需幾美分
- 五分鐘
支援透過電子郵件提供,盡最大努力。需要有人待命嗎?託管計劃就是為您準備的。
它如何運行
安裝,建立管理員,貼上您的AI金鑰。每個專案永久免費。
使用 ONCE — 一個新伺服器、一個網域、五分鐘
curl -fsSL https://get.once.com | sh once # add an app: ghcr.io/ambroselli-io/i18n-keyless:latest, pick a host name # then open it: create the admin, paste your AI key on Settings # fully free, unlimited projects — donate if you want # ONCE does the domain, the TLS, the updates and the backups
使用 Docker Compose — 任何執行 Docker 的機器
mkdir i18n-keyless && cd i18n-keyless curl -fsSL https://i18n-keyless.com/self-hosted/docker-compose.yml -o docker-compose.yml docker compose up -d # → http://localhost:1800: create the admin, paste your AI key on Settings # fully free, unlimited projects — donate if you want
然後將您的 SDK 指向您的伺服器:
I18nKeyless.init({
API_KEY: "your-project-key",
API_URL: "https://i18n.example.com",
// …
});完整指南: https://docs.i18n-keyless.com/docs/guides/self-hosting
為什麼捐款?
因為你自己管理VPS和AI API金鑰。我沒有理由向你收取訂閱費。我自己也討厭訂閱。所以,改為:你來決定這個軟體對你的價值,而我繼續開發它。
該圖像免費安裝並運行無限項目,支援所有語言且無到期時間。
購買前的問題? 寫信給我們
設置 i18n,保持您的代碼庫乾淨並快速交付
現有的 i18n 解決方案存在多個 PITA(痛苦點)。問題如此嚴重,以至於你會盡可能推遲 i18n 的實施。
它消耗了你本該在海灘上度過的時間
設定金鑰系統:至少需要資深開發者1小時的時間
每個新增金鑰來回:每個金鑰1分鐘,x500個金鑰,x2語言 = 17小時
使用 i18n-keyless,您完全不需要在意 i18n 系統。您可以去海灘並點一杯莫吉托。
今日大多數系統使用金鑰來翻譯文字
產生這些內容令人痛苦。維護這些內容也很痛苦。
當您在應用程式中看到一段文字,並想要更新它時,您需要找到對應的金鑰。
使用 i18n-keyless,您完全不需要在意 i18n 系統。把您的腦力用在更有趣的事情上吧。
讓AI來翻譯
使用金鑰系統後,您需要在應用程式中管理翻譯。
否則,您的用戶將在其應用程式中看到 someheader.welcome.title。
使用 i18n-keyless 時,最壞情況下離線時你會看到未翻譯的實際詞彙。正常情況下,你根本不會在意 i18n 系統。只需寫好標題,專注於行銷,提高銷售額。
程式碼庫很美麗... 直到 i18n 金鑰受到感染
使用金鑰系統時,當您閱讀代碼和內容時,您必須閱讀金鑰,而不是自然語言。
有時候你應該進行修正,因為一個句子在文法上不正確。但你不知道,因為你讀取的是鍵。
使用 i18n-keyless 後,您完全不需要在意 i18n 系統。程式碼庫依然保持優雅。
MCP 伺服器,滿足您所有的國際化需求
系統如此優化以支援智能編碼的另外六個原因。
沒有名字可發明
鍵是一個命名決策,沒有正確答案。兩個代理分別為同一個按鈕撰寫 login.submit 和 auth.button.send。沒有鍵,就沒有決策可做。
編輯一個檔案,而不是二十個
一個鍵控的更改會影響組件以及每個地區設定的JSON檔案,代理會遺忘檔案。在這裡,複製更改是單個檔案的編輯。
代理艦隊中零合併衝突
五個代理在五個分支上都編輯 en.json:衝突在所難免。沒有共享文件,因此工作樹和後台代理永遠不會發生衝突。
代幣便宜
要重複使用金鑰,代理必須在每次編輯時將語系檔案載入到上下文中。無金鑰載入不做任何事:文字直接存在於元件中。
可讀差異
拉取請求顯示真實的句子。人類或審查代理可以在不深入了解鍵代表什麼的情況下判斷副本。
您的 CLAUDE.md 中的一個規則
您編寫的每一條 i18n 規則都是代理可能違反的規則。這一條只需要一行——而回退是真實文本,因此錯誤不會在螢幕上顯示 a.b.c。
您的代理只需要的唯一 i18n 規則
# CLAUDE.md Write the UI copy in English and wrap it in <T>…</T> from i18n-keyless-react. That is the whole i18n setup.
自第一天起全球啟動
不要因為複雜性而延遲 i18n 的實施。5 分鐘內完成,而不是幾天。保持你的開發速度,就好像沒有實施 i18n 一樣。
- 5分鐘實現。不是開玩笑。
一個簡單的配置物件,你就完成了。
- 維持開發速度
假裝 i18n 完全沒有實作一樣編寫程式碼。
- 運往全球市場
擴展到新語言時無需重構。
- SSR 與 SEO 已就緒
與 Next.js、Remix、TanStack Start 和 Astro 搭配使用。為搜索引擎伺服器端渲染任何語言 — 相同的 5 分鐘設置。
傳統 i18n
i18n-無鍵
設置這個一點兒都不費腦筋
只需最簡單的配置物件,您就可以準備好邁向全球。
而且更多,您的代理會為您設定。
1. 基本設定
import * as I18nKeyless from "i18n-keyless-react";
I18nKeyless.init({
API_KEY: "YOUR_API_KEY",
storage: window.localStorage,
languages: {
primary: "en",
supported: ["en", "fr"],
},
});2. 元件使用(此處為 React;在 Vue、Angular、Flutter、Swift 和 Kotlin 中相同)
import { I18nKeylessText } from "i18n-keyless-react";
// import { T } from "i18n-keyless-react"; // also works
// Just write in your primary language
<I18nKeylessText>
Welcome to our website
</I18nKeylessText>3. 伺服器端使用(此處為 Node.js;在 Laravel、Rails、Python 和 Go 中的相同呼叫)
import { awaitForTranslationOrFallbackToOriginal, type Lang } from 'i18n-keyless-node';
const title = await awaitForTranslationOrFallbackToOriginal('Come see my app!', user.lang as Lang);
const body = await awaitForTranslationOrFallbackToOriginal('So many new stuff!', user.lang as Lang);
await sendExpoPushNotification({ user, title, body });4. 組件外的文字
import { getTranslation } from "i18n-keyless-react";
export default function Navigation() {
return (
<HomeTabs.Navigator>
<HomeTabs.Screen
options={{ tabBarLabel: getTranslation("Welcome") }}
name="WELCOME"
/>
</HomeTabs.Navigator>
);
}5. 選擇您的 SDK:一行安裝,無處不在的相同 API
- React, React Native, Expo, Next.js, Remix, TanStack Start, Astronpm install i18n-keyless-react
- Vue, Nuxtnpm install i18n-keyless-vue
- Angularnpm install i18n-keyless-angular
- Plain HTML, Svelte, Alpine, htmx, one script tagnpm install i18n-keyless-browser
- Node.jsnpm install i18n-keyless-node
- Laravel, PHPcomposer require i18n-keyless/laravel
- Rails, Rubybundle add i18n-keyless-rails
- Flutter, Dartflutter pub add i18n_keyless
- Swift, iOS, macOS, VaporSwiftPM: arnaudambro/i18n-keyless-swift
- Kotlin, Android, Ktorio.github.arnaudambro:i18n-keyless-kotlin
- Python, Django, Flask, FastAPIpip install i18n-keyless
- Gogo get github.com/arnaudambro/i18n-keyless/ports/go/v3
翻譯如何運作
i18n-keyless 是一個函式庫,結合 API 服務,讓您無需使用金鑰即可翻譯文字。
如果找不到翻譯,將會異步呼叫 I18nKeyless 的 API,透過 AI API 獲取翻譯。
此操作通常在開發模式下進行,當您正在編碼時。如果您錯過了一個,在生產環境中,只有第一個缺少翻譯的用戶會看到一個小故障,然後它會立即在全球用戶中可用。
您的商店列表在每種語言、每次發行時
每次更新都代表新的發行說明、描述和關鍵字 — 每種語言在兩個商店中都有。這就是阻止你添加語言的原因。不是應用程式本身。
- 為每種語言發布說明,透過一次呼叫
寫一次更新。awaitForTranslation 會將其返回為您銷售的每種語言,您的商店配置會將其傳遞給 EAS 或 fastlane。
- 48種語言,已對應到App Store的插槽
pt-BR 和 pt-PT 是兩個列表;en-GB、en-AU 和 en-CA 是三個。toAppStoreLocale 將每個翻譯放在正確的位置。
- 修復一個未發布的糟糕翻譯
在應用程式中,儀表板中的一個覆蓋一次只能啟用一個——沒有熱修復構建,沒有商店審核。在列表中,重新推送。
- 非按字計價
翻譯大約每字收費0.10歐元。2,000個字串乘以10種語言,這是一個獨立開發者無法承擔的預算。在這裡,字數不計算。
一個 Expo 應用的完整配方
// store.config.js — EAS Metadata awaits an async config
const { init, awaitForTranslation, toAppStoreLocale } = require("i18n-keyless-node");
const LANGS = ["en", "fr", "de", "ja", "pt-BR"];
const DESCRIPTION = "Bibi translates your app while you sleep…";
module.exports = async () => {
init({ API_KEY: process.env.I18N_KEYLESS_KEY, languages: { primary: "en", supported: LANGS } });
const info = {};
for (const lang of LANGS) {
info[toAppStoreLocale(lang)] = {
title: await awaitForTranslation("Bibi", lang, { context: "App Store app name, 30 characters max" }),
subtitle: await awaitForTranslation("Keyless i18n", lang, { context: "App Store subtitle, 30 characters max" }),
description: await awaitForTranslation(DESCRIPTION, lang, { context: "App Store description" }),
};
}
return { configVersion: 0, apple: { info } };
};相同的呼叫為 Google Play 寫入 fastlane 中繼資料檔案。大寫字母僅供參考:在上下文中設定限制並在推送前檢查長度。
互動式沙盒
看看 i18n-keyless 如何即時運作
打開一個即時可編輯的 StackBlitz 專案,讓您在輸入時查看翻譯結果。
我為什麼要建造這個
我總是推遲國際化,直到我的客戶如此渴望,以至於我別無選擇。我討厭閱讀代碼中帶有國際化鍵的內容,也討厭維護JSON文件,就像討厭看到國際化翻譯服務提供商的高昂費用一樣。所以我只能自己動手,而且我超愛這樣。現在我的所有應用預設都支援國際化。
Arnaud Ambroselli
i18n-keyless 的創始人
常見問題
我需要管理翻譯文件嗎?
不。沒有 JSON 檔案,沒有金鑰提取步驟,也沒有建置時外掛程式。您用原始語言撰寫句子,SDK 在首次請求時將它們傳送到 API,API 使用 AI 進行翻譯,之後的每次請求都從快取提供。您的程式碼是唯一的真理來源。
當我更改來源文字時會發生什麼?
原始文本就是鍵。修改它,你就會得到一個新的鍵,並獲得全新的AI翻譯。舊鍵將不再被請求,儀表板會在30天未使用後自動清理。修正拼寫錯誤也是一樣:在程式碼中修正它,部署,新文本將在首次請求時被翻譯。
多少錢?
自架設:完全免費,無限項目,無需訂閱且無使用限制 — 安裝 Docker 映像,使用您自己的 AI 金鑰。喜歡嗎?請我喝杯咖啡!託管:每個項目每月固定價格,按月活躍用戶計算 — 1,000 以內 4 歐元,5,000 以內 9 歐元,50,000 以內 29 歐元,500,000 以內 99 歐元 — 按月計費,隨時取消。兩種方案均無按座位、按字數或按字串的定價。
我可以匯出我的翻譯嗎?
是的。儀表板有一個「匯出 JSON」按鈕,可將專案中的所有翻譯下載為單個 JSON 檔案。匯出包含所有列,而不只是最近 30 天使用的列,因此這是一個完整的備份。沒有鎖定:您的資料隨時可透過一鍵存取。
一位維護者:如果專案停止會發生什麼事?
SDK 採用 MIT 授權,並保留在 npm、PyPI、RubyGems 和其他註冊表中。伺服器在 Elastic License 2.0 下公開,且它們之間的協議已記錄,因此任何人都可以運行、分叉或編寫針對它的伺服器。您的翻譯會在任何時間以單個 JSON 匯出檔案保存。如果託管服務停止:已安裝的應用會繼續提供其快取的翻譯,新客戶端會回退到原始語言,而將 SDK 指向您自己的實例(透過 API_URL)即可恢復一切。您將失去的只是 i18n-keyless.com 上新字串的 AI 翻譯——而不是您的資料或應用。
閱讀完整答案,包括程式碼觀看演示
觀看這段短片,了解 i18n-keyless 的實際運作