i18n ที่ไม่เจ็บปวด ขยายไปสู่ขอบเขตของคุณ โดยไม่ต้องใช้จ่าย หลายพันดอลลาร์
ฟรีอย่างสมบูรณ์ โครงการไม่จำกัด ทุกภาษา 48 ภาษา ไม่หมดอายุ ไม่ต้องใช้กุญแจใบอนุญาต
โปรเจกต์ไม่จำกัด ทุกภาษา 48 ภาษา ไม่มีวันหมดอายุ
- ภาษาทั้งหมด 48 ภาษา การแปลไม่จำกัด
- แดชบอร์ด, เซิร์ฟเวอร์ MCP, ทุก SDK
- ไม่มีอะไรให้ซื้อ ไม่มีอะไรให้ป้อนนอกจากกุญแจ AI ของคุณ
i18n เป็นเรื่องง่าย ๆ แล้ว คุณสามารถลองใช้ได้ ฉันไม่รังเกียจที่จะได้รับทิปสำหรับมัน
- เมื่อคุณรู้สึกถึงมัน
- ถ้าคุณรู้สึกอยาก
- ตั้งแต่ 1 ถึง 1 ล้านดอลลาร์ ไม่เกิน
การชำระเงินอย่างปลอดภัยผ่าน Stripe กุญแจใบอนุญาตจะมาถึงกล่องจดหมายของคุณ — มันจะปิดเสียงคำขอบริจาคในแดชบอร์ด
สิ่งที่คุณได้รับ
- โปรเจกต์ไม่จำกัด ทุกภาษา 48 ภาษา ไม่มีวันหมดอายุ
- การแปลไม่จำกัด, ไม่มีขีดจำกัดในการใช้งาน
- แดชบอร์ด เซิร์ฟเวอร์ MCP สำหรับเอเจนต์ของคุณ ทุกๆ SDK
- หนึ่งคอนเทนเนอร์ ไฟล์ SQLite หนึ่งไฟล์สำหรับสำรองข้อมูล
- ใบอนุญาตที่ตรวจสอบแบบออฟไลน์: เซิร์ฟเวอร์ของคุณไม่เคยโทรกลับบ้าน
- ทุกการอัปเดต เพื่อชีวิต: docker compose pull
สิ่งที่คุณนำมา
- เครื่องพร้อม Docker: VPS ราคา 4 ยูโรก็เพียงพอแล้ว
- คีย์ API AI (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 และคีย์ API ของ AI ด้วยตัวเอง ไม่มีเหตุผลที่ฉันจะเรียกเก็บค่าสมาชิกจากคุณ ฉันเองก็เกลียดสมาชิกด้วยเหมือนกัน ดังนั้นแทนที่จะเป็นอย่างนั้น: คุณตัดสินใจว่าซอฟต์แวร์มีค่าเท่าไหร่สำหรับคุณ และฉันจะสร้างมันต่อไป
รูปภาพติดตั้งฟรีและรันโปรเจ็กต์ที่ไม่จำกัด โดยมีทุกภาษาและไม่มีวันหมดอายุ
คำถามก่อนที่คุณจะซื้อ? เขียนถึงเรา
ตั้งค่า i18n, รักษาฐานโค้ดของคุณให้สะอาดและส่งมอบอย่างรวดเร็ว
มีหลาย PITA กับโซลูชัน i18n ในปัจจุบัน ความเจ็บปวดนั้นใหญ่โตจนคุณเลื่อน i18n ออกไปให้มากที่สุดเท่าที่จะทำได้
มันใช้เวลาที่คุณควรใช้ไปกับชายหาด
ตั้งค่าระบบกุญแจ: อย่างน้อย 1 ชั่วโมงของเวลานักพัฒนาผู้มีประสบการณ์
ไปกลับสำหรับกุญแจใหม่แต่ละอัน: 1 นาทีต่อกุญแจ, x500 กุญแจ, x2 ภาษา = 17 ชั่วโมง
ด้วย i18n-keyless คุณไม่ต้องกังวลเรื่องระบบ i18n เลย คุณสามารถไปชายหาดและสั่งมอจิโตได้
วันนี้ระบบส่วนใหญ่ใช้คีย์ในการแปลข้อความ
การสร้างสิ่งนี้เจ็บปวด. การรักษาสิ่งนี้ก็เจ็บปวดเช่นกัน
เมื่อคุณเห็นข้อความในแอปและต้องการอัปเดต มัน คุณจำเป็นต้องค้นหาคีย์ที่สอดคล้องกัน
ด้วย i18n-keyless คุณไม่จำเป็นต้องกังวลเรื่องระบบ i18n เลย ใช้สมองของคุณกับสิ่งที่น่าสนใจกว่านี้แทน
ให้ AI เป็นผู้แปล
ด้วยระบบกุญแจ คุณต้องจัดการคำแปลในแอป
มิฉะนั้น ผู้ใช้ของคุณจะเห็น someheader.welcome.title ในแอปของพวกเขา
ด้วย i18n-keyless ในสถานการณ์ออฟไลน์ที่เลวร้ายที่สุดคุณจะเห็นคำจริงที่ไม่ได้แปล ในจังหวะปกติ คุณไม่สนใจระบบ i18n เลย เพียงแค่เขียนหัวข้อที่ดี โฟกัสไปที่การตลาด และสร้างยอดขาย
โค้ดเบสสวยงาม... จนกว่าคีย์ i18n จะติดเชื้อ
ด้วยระบบคีย์ เมื่อคุณอ่านโค้ดและเนื้อหา คุณต้องอ่านคีย์ ไม่ใช่ภาษาธรรมชาติ
บางครั้งคุณควรทำการแก้ไขเพราะประโยคไม่ถูกต้องตามหลักไวยากรณ์ แต่คุณไม่รู้เรื่องนั้นเพราะคุณอ่านคีย์
ด้วย i18n-keyless คุณไม่จำเป็นต้องกังวลเรื่องระบบ i18n เลย ฐานโค้ดยังคงสวยงาม
เซิร์ฟเวอร์ MCP เพื่อรองรับความต้องการ i18n ของคุณทั้งหมด
อีกหกเหตุผลว่าทำไมระบบจึงถูกปรับให้เหมาะสมสำหรับการเขียนโค้ดแบบเอเจนต์
ไม่มีชื่อให้คิดค้น
คีย์คือการตัดสินใจในการตั้งชื่อโดยไม่มีคำตอบที่ถูกต้อง สองตัวแทนเขียน login.submit และ auth.button.send สำหรับปุ่มเดียวกัน โดยไม่มีคีย์ก็ไม่มีการตัดสินใจใดๆ ให้ทำ
หนึ่งไฟล์ที่จะแก้ไข ไม่ใช่ยี่สิบ
การเปลี่ยนแปลงที่ขึ้นกับคีย์ส่งผลต่อคอมโพเนนต์และไฟล์ JSON ของทุกภาษา และตัวแทนจะลืมไฟล์ต่าง ๆ ที่นี่ การเปลี่ยนแปลงสำเนาคือการแก้ไขไฟล์เดียว
ไม่มีความขัดแย้งในการรวมในกองเรือเอเจนต์
ตัวแทนห้าคนบนสาขาห้าสาขาแก้ไข en.json ทั้งหมด: ความขัดแย้งที่รับประกันได้ ไม่มีไฟล์ที่ใช้ร่วมกัน ดังนั้น worktrees และตัวแทนพื้นหลังจึงไม่เคยชนกัน
ถูกในโทเค็น
ในการใช้ซ้ำคีย์ หนึ่งตัวแทนจะต้องโหลดไฟล์ภาษาเข้าสู่บริบทในทุกการแก้ไข การโหลดโดยไม่มีคีย์ไม่ทำอะไรเลย: ข้อความอยู่ตรงนั้นในคอมโพเนนต์แล้ว
ความแตกต่างที่อ่านได้
คำขอรวมแสดงประโยคจริง ๆ มนุษย์หรือตัวแทนการตรวจสอบสามารถตัดสินเนื้อหาได้โดยไม่ต้องค้นหาว่าคีย์หมายถึงอะไร
หนึ่งกฎใน 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.
ตัวแทนของคุณสามารถใช้งานมันได้ ไม่ใช่แค่เขียนมัน
ผ่านเซิร์ฟเวอร์ MCP เอเจนต์จะแสดงรายการคำแปลที่ขาดหายไป อ่านหนึ่งรายการ เขียนทับคำแปลที่ผิด หรือนำเข้าสำเนาที่คุณมีอยู่แล้ว — พร้อมกับการเข้าสู่ระบบ OAuth ของตัวเอง โดยไม่ต้องวางคีย์
อ่านคู่มือ MCPเปิดตัวทั่วโลกตั้งแต่วันแรก
หยุดเลื่อนการทำ 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 ซึ่งช่วยให้คุณแปลข้อความของคุณได้โดยไม่ต้องใช้คีย์
หากไม่พบคำแปล จะมีการดึงข้อมูลแบบอะซิงโครนัสไปยัง API ของ I18nKeyless เพื่อรับคำแปลผ่านการเรียกใช้ API ของ AI
การดำเนินการนี้โดยปกติจะทำในโหมดพัฒนา ขณะที่คุณกำลังเขียนโค้ด หากคุณพลาดไปหนึ่งรายการ ในสภาพแวดล้อมการผลิต ผู้ใช้รายแรกที่ขาดการแปลจะเห็นข้อผิดพลาด จากนั้นมันจะพร้อมใช้งานทันทีสำหรับผู้ใช้ทั่วโลก
รายการร้านค้าของคุณในทุกภาษา ทุกครั้งที่มีการเปิดตัว
การอัปเดตทุกครั้งหมายถึงหมายเหตุการเปิดตัวใหม่ คำอธิบาย และคำสำคัญ — สำหรับทุกภาษาในทั้งสองร้านค้า นั่นคือสิ่งที่ทำให้คุณไม่สามารถเพิ่มภาษาได้ ไม่ใช่แอปพลิเคชัน
- บันทึกการเปิดตัวสำหรับทุกภาษาในการเรียกเดียว
เขียนอัปเดตครั้งเดียว 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 ตัวพิมพ์ใหญ่เป็นคำแนะนำ: กำหนดขีดจำกัดในบริบทและตรวจสอบความยาวก่อนที่คุณจะผลักดัน
กล่องทรายแบบโต้ตอบ
ดูวิธีที่ i18n-keyless ทำงานแบบเรียลไทม์
เปิดโปรเจ็กต์ StackBlitz ที่ใช้งานได้และแก้ไขได้ เพื่อดูการแปลที่แก้ไขได้ขณะที่คุณพิมพ์
ทำไมฉันถึงสร้างสิ่งนี้
ฉันมักจะเลื่อนการทำให้เป็นสากล (i18n) จนกว่าลูกค้าของฉันอยากได้มันมากจนฉันไม่มีทางเลือก ฉันเกลียดการอ่านโค้ดที่มีคีย์ i18n ข้างใน และเกลียดการดูแลรักษาไฟล์ JSON มากพอ ๆ กับการเห็นว่าผู้ให้บริการแปลภาษา i18n มีราคาแพงขนาดไหน ดังนั้นฉันจึงต้องสร้างของฉันเอง และฉันชอบมันมาก ๆ ตอนนี้แอปทั้งหมดของฉันเป็น i18n โดยค่าเริ่มต้นแล้ว
Arnaud Ambroselli
ผู้ก่อตั้ง i18n-keyless
คำถามที่พบบ่อย
ฉันจำเป็นต้องจัดการไฟล์แปลหรือไม่?
ไม่ใช่ มีแค่ไฟล์ JSON ไม่มีขั้นตอนการแยกคีย์ และไม่มีปลั๊กอินเวลาสร้าง ไม่ว่าคุณจะเขียนประโยคของคุณด้วยภาษาใด SDK จะส่งไปยัง API ในคำขอแรก API จะแปลด้วย AI และคำขอถัดไปทั้งหมดจะถูกบริการจากแคช โค้ดของคุณคือแหล่งเดียวของความจริง
เกิดอะไรขึ้นเมื่อฉันเปลี่ยนข้อความต้นฉบับ?
ข้อความต้นฉบับคือคีย์ เมื่อคุณเปลี่ยนมัน คุณจะได้รับคีย์ใหม่พร้อมการแปลด้วย AI ใหม่ คีย์เก่าจะถูกยกเลิกการร้องขอ และแดชบอร์ดจะลบมันออกหลังจากไม่ได้ใช้งาน 30 วัน การแก้ไขคำผิดก็เช่นกัน: แก้ไขในโค้ด จากนั้น deploy และข้อความใหม่จะถูกแปลเมื่อมีการร้องขอครั้งแรก
ราคาเท่าไหร่?
เซลฟ์โฮสต์: ฟรีทั้งหมด โครงการไม่จำกัด ไม่มีค่าสมัครสมาชิกและไม่มีขีดจำกัดการใช้งาน — ติดตั้ง Docker Image และใช้คีย์ AI ของคุณเอง คุณชอบมันไหม? ให้ฉันทิปด้วย! โฮสต์: ราคาคงที่ต่อโครงการต่อเดือนตามผู้ใช้งานรายเดือน — 4 ยูโร สำหรับสูงสุด 1,000, 9 ยูโร สำหรับสูงสุด 5,000, 29 ยูโร สำหรับสูงสุด 50,000, 99 ยูโร สำหรับสูงสุด 500,000 — ชำระรายเดือน ยกเลิกได้ตลอดเวลา ไม่มีการคิดราคาต่อที่นั่ง ต่อคำ หรือต่อสายอักขระในทั้งสองกรณี
ฉันสามารถส่งออกคำแปลของฉันได้หรือไม่?
ใช่ แดชบอร์ดมีปุ่ม "ส่งออก JSON" ที่ดาวน์โหลดการแปลทุกภาษาในโปรเจ็กต์ของคุณเป็นไฟล์ JSON เดียว การส่งออกจะรวมถึงทุกแถว ไม่ใช่เฉพาะแถวที่ใช้ในช่วง 30 วันที่ผ่านมา ดังนั้นจึงเป็นการสำรองข้อมูลแบบเต็มรูปแบบ ไม่มีการล็อกอิน: ข้อมูลของคุณอยู่ห่างออกไปเพียงแค่คลิกเดียว
ผู้ดูแลคนเดียว: ถ้าโครงการหยุดขึ้นเกิดอะไรขึ้น?
SDKs อยู่ภายใต้ใบอนุญาต MIT และยังคงพร้อมใช้งานบน npm, PyPI, RubyGems และรีจิสทรีอื่นๆ เซิร์ฟเวอร์เป็นสาธารณะภายใต้ Elastic License 2.0 และโปรโตคอลระหว่างกันได้รับการบันทึกเอาไว้ ดังนั้นใครก็ตามสามารถรัน มัน ฟอร์ก หรือเขียนเซิร์ฟเวอร์ต่อต้านมันได้ การแปลของคุณจะยังคงอยู่ในการส่งออก JSON เดียวตลอดเวลา หากบริการที่โฮสต์หยุดทำงาน: แอปที่ติดตั้งแล้วจะยังคงให้บริการการแปลที่แคชไว้อยู่ต่อไป ลูกค้าใหม่จะกลับไปใช้ภาษาต้นทาง และเมื่อชี้ SDK ไปยังอินสแตนซ์ของคุณด้วย API_URL ทุกอย่างจะถูกกู้คืน สิ่งที่คุณจะสูญเสียคือการแปลด้วย AI ของสายอักขระใหม่บน i18n-keyless.com — ไม่ใช่ข้อมูลหรือแอปของคุณ
อ่านคำตอบทั้งหมด พร้อมด้วยรหัสรับชมเดโม
ดูวิดีโอสั้น ๆ นี้เพื่อดู i18n-keyless ในการทำงาน