MVP ์ i18n์ ๊ณ ํต ์์ด ์ค์ ํ์ธ์
5๋ถ ์์ i18n ๊ตฌํํ๊ธฐ
i18n์ด ์ ํ ์๋ ๊ฒ์ฒ๋ผ ๊ฐ๋ฐ ์๋๋ฅผ ์ ์งํ์ธ์.
5๋ถ ์ค์
๋น์ ์ ์ ์ฒด i18n ๊ตฌํ์ 5๋ถ ๋ง์. ๋๋ด์ด ์๋๋๋ค.
ํค๊ฐ ์๋ ์์คํ
๊ทธ๋ฐ ์๋ฏธ ์๋ ์์ ์ ๋๊ฐ ๊ด์ฌํด์๋ ์ ๋ฉ๋๋ค.
์ฒซ๋ ๋ถํฐ ๊ธ๋ก๋ฒ
์ถ๊ฐ ๋ ธ๋ ฅ ์์ด ๊ตญ์ ์์ฅ์ ๋ฐฐ์กํ์ธ์.
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 ์๋ฒ๊ฐ i18n ์๊ตฌ ์ฌํญ์ ๋ชจ๋ ์ถฉ์กฑํ๋๋ก ์ง์ํฉ๋๋ค
์์ด์ ํธ ์ฝ๋ฉ์ ์ํด ์์คํ ์ด ์ด๋ ๊ฒ ์ต์ ํ๋ ์ฌ์ฏ ๊ฐ์ง ๋ค๋ฅธ ์ด์ .
๋ฐ๋ช ํ ์ด๋ฆ์ด ์์ต๋๋ค
ํค๋ ์ ๋ต์ด ์๋ ๋ช ๋ช ๊ฒฐ์ ์ ๋๋ค. ๋ ์์ด์ ํธ๊ฐ ๋์ผํ ๋ฒํผ์ ๋ํด 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.
๋น์ ์ ์์ด์ ํธ๋ ๊ทธ๊ฒ์ ์กฐ์ํ ์ ์์ต๋๋ค. ๋จ์ง ์ฐ๋ ๊ฒ๋ง์ด ์๋๋๋ค
MCP ์๋ฒ๋ฅผ ํตํด ์์ด์ ํธ๋ ๋๋ฝ๋ ๋ฒ์ญ์ ๋์ดํ๊ณ ํ๋๋ฅผ ์ฝ๊ณ , ์๋ชป๋ ๊ฒ์ ๋ฎ์ด์ฐ๊ฑฐ๋ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์ต๋๋ค โ ์์ฒด OAuth ๋ก๊ทธ์ธ์ผ๋ก, ๋ถ์ฌ๋ฃ์ ํค๊ฐ ์์ต๋๋ค.
MCP ๊ฐ์ด๋๋ฅผ ์ฝ์ผ์ธ์์ฒซ๋ ๋ถํฐ ๊ธ๋ก๋ฒ ์ถ์
๋ณต์ก์ฑ ๋๋ฌธ์ i18n์ ์ง์ฐ์ํค๋ ๊ฒ์ ์ค๋จํ์ธ์. 5๋ถ ์์ ๊ตฌํํ๊ณ , ์ผ๋ก ํ์ง ๋ง์ธ์. i18n์ด ๊ตฌํ๋์ง ์์ ๊ฒ์ฒ๋ผ ๊ฐ๋ฐ ์๋๋ฅผ ์ ์งํ์ธ์.
- 5๋ถ ๊ตฌํ. ๋๋ด์ด ์๋.
ํ๋์ ๊ฐ๋จํ ๊ตฌ์ฑ ๊ฐ์ฒด๋ก ๋์ ๋๋ค.
- ๊ฐ๋ฐ ์๋๋ฅผ ์ ์งํ์ธ์
i18n์ด ์ ํ ๊ตฌํ๋์ง ์์ ๊ฒ์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
- ์ธ๊ณ ์์ฅ์ผ๋ก ๋ฐฐ์ก
์๋ก์ด ์ธ์ด๋ก ํ์ฅํ ๋ ๋ฆฌํฉํ ๋ง์ด ํ์ํ์ง ์์ต๋๋ค.
- SSR & SEO ์ค๋น ์๋ฃ
Next.js, Remix, TanStack Start, Astro์ ํธํ๋ฉ๋๋ค. ๊ฒ์ ์์ง์ ์ํ ์๋ฒ ์ธก ๋ ๋๋ง โ 5๋ถ ๋ง์ ๋์ผํ ์ค์ .
์ ํต์ ์ธ i18n
i18n-keyless
์ค์ ์ ๋งค์ฐ ์ฝ์ต๋๋ค
๊ฐ์ฅ ๊ฐ๋จํ ๊ตฌ์ฑ ๊ฐ์ฒด๋ง ์์ผ๋ฉด ๊ธ๋ก๋ฒ์ ๋๊ฐ ์ค๋น๊ฐ ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๋์๊ฐ, ๋น์ ์ ์์ด์ ํธ๊ฐ ๋น์ ์ ์ํด ์ค์ ํ ๊ฒ์
๋๋ค.
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. ๊ตฌ์ฑ ์์ ์ฌ์ฉ
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)
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>
);
}๋ฒ์ญ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง
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์ ๋ก๋ฅผ ์ฒญ๊ตฌํฉ๋๋ค. 10๊ฐ ์ธ์ด๋ก 2,000๊ฐ์ ๋ฌธ์์ด์ ํ๋ฆฌ๋์ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋นํ ์ ์๋ ์์ฐ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋จ์ด๊ฐ ๊ณ์ฐ๋์ง ์์ต๋๋ค.
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 ํ๋ก์ ํธ๋ฅผ ์ด์ด๋ณด์ธ์.
๊ฐ๋ฐ์๋ค์ ๋จ์ํจ์ ์ฌ๋ํฉ๋๋ค
i18n-keyless์ ๋ํด ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ญ๋ผ๊ณ ํ๋์ง ํ์ธํด ๋ณด์ธ์
๋๋ 5๋ถ ๋ง์ MVP์ i18n์ ์ถ๊ฐํ ์ ์์์ต๋๋ค. ์ถ๊ฐ ๊ฐ๋ฐ ์๊ฐ ์์ด 7๊ฐ ์ธ์ด๋ก ์ถ์ํ์ต๋๋ค. ์ฝ๋๋ฒ ์ด์ค๋ ๊นจ๋ํ๊ฒ ์ ์ง๋์๊ณ , ๋ฒ์ญ ํค ๊ด๋ฆฌ๊ฐ ์๋ ๊ธฐ๋ฅ ๊ตฌ์ถ์ ์ง์คํ ์ ์์์ต๋๋ค.
Jamie Smith
๋ฉ์ง ์คํํธ์ ์ CTO
๋ฒ์ญ ํค ๊ด๋ฆฌ์ ์ ์ ์ ๋ถ๋ด์ด ์์ฐ์ฑ์ ๋จ์ด๋จ๋ฆฌ๊ณ ์์์ต๋๋ค. i18n-keyless๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฐ์ด๋ง ์์ฑํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. ์ํฌํ๋ก์ฐ์ i18n์ด ์กด์ฌํ์ง ์๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋๋ค.
Alex Lee
Another Cool Startup์ ๋ฆฌ๋ ๊ฐ๋ฐ์
์ ํ์ i18n์ ์ถ์ ํ์ ์ฐ๊ธฐํ ๋ปํ์ต๋๋ค. i18n-keyless๋ฅผ ์ฌ์ฉํ์ฌ MVP ๋จ๊ณ์์ ๊ตฌํํ๊ณ ์ฒซ๋ ๋ถํฐ ๊ธ๋ก๋ฒ๋ก ์ถ์ํ์ต๋๋ค. ROI๊ฐ ๋๋๋๋ก ์ข์์ต๋๋ค.
Maria Rodriguez
GlobalApp์ ์ค๋ฆฝ์
๊ฐ๋จํ๊ณ ์์ธก ๊ฐ๋ฅํ ๊ฐ๊ฒฉ
๋น์ ์ ๊ท๋ชจ์ ๋ง๋ ์ผ๋ฅ ์ ์ธ ๊ฐ๊ฒฉ.
๋ชจ๋ ํ๋์ ๋ชจ๋ ๊ธฐ๋ฅ.
๋จ์ด๋ณ ์๊ธ ์์, ํ ํฐ ๊ณ์ฐ ์์.
์ ์ต๋ 1,000๋ช ์ ํ์ฑ ์ฌ์ฉ์
์ธ๋ ์ฑ ๋ฐ ์ ์ ํ์ฉ
์ ์ต๋ 5,000๋ช ์ ํ์ฑ ์ฌ์ฉ์
์ฒญ์ค์ ์ฐพ๋ ์ฑ์ ์ํ
์ ์ต๋ 50,000๋ช ์ ํ์ฑ ์ฌ์ฉ์
์ค์ ํธ๋์ ์ด ์๋ ์ฑ์ฉ
์ต๋ 50๋ง ๋ช ์ ์๊ฐ ํ์ฑ ์ฌ์ฉ์
๊ท๋ชจ์ ๋ง๋ ์ ํ์ฉ
๋ชจ๋ ๊ณํ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
๋ชจ๋ 48๊ฐ ์ธ์ด. ์ ์ธ๊ณ, ์ฒซ๋ ๋ถํฐ
๋ฌด์ ํ ๋ฒ์ญ, AI ํฌํจ. ์๋ก์ด ๋ฌธ์์ด์ ํ๋ก๋์ ์์ ์๋์ผ๋ก ๋ฒ์ญ๋ฉ๋๋ค
์ฌ์ฉ์ ์์ฑ ์ฝํ ์ธ (UGC)์ ์ค์๊ฐ ๋ฒ์ญ
์ธ์ ๋ ์ง ์ ๊ทธ๋ ์ด๋, ๋ค์ด๊ทธ๋ ์ด๋ ๋๋ ์ทจ์ํ์ธ์
์๊ฐ ํ์ฑ ์ฌ์ฉ์ 50๋ง ๋ช ์ด์์ ๋๊น? ๋ฌธ์ํ๊ธฐ
๊ฐ์ ์ฑ์ด ๋ค๋ฅธ ๊ณณ์์ ์ผ๋ง์ ๋๊น
๋ ์ฌ๋ผ์ด๋๋ฅผ ์ด๋ํ์ธ์. ์ฒญ๊ตฌ์๋ ๋ชจ๋ 48๊ฐ ์ธ์ด๋ก ์ ๊ณต๋๋ ๊ทํ์ ์ฑ์ ๋ํ ๊ฒ์ ๋๋ค.
| ํด๊ฒฐ | ๋น์ ์ ์๋ณ ์ฒญ๊ตฌ์ | ๋น์ ์ ๋งค๋ฒ ์ง๋ถํฉ๋๋ค | ๋ฒ์ญ | ์ธ์ด |
|---|---|---|---|---|
| i18n-keyless์ฐ๋ฆฌ | โฌ4/ ์ | ์๊ฐ ํ์ฑ ์ฌ์ฉ์ ์น๋ฆฌ ์น๋ฆฌ. | AI, ๋ฌด์ ํ, ํฌํจ๋จ | ๋ชจ๋ 48, ์ฒซ๋ ๋ถํฐ |
| Crowdin | โฌ88/ ์1 | ํธ์คํธ๋ ๋จ์ด: ๋น์ ์ ๋จ์ด ร 48 | Crowdin AI, ํ ๋น ๋ด | ๊ฐ๊ฐ์ ์ถ๊ฐํฉ๋๋ค |
| Intlayer | โฌ27/ ์2 | ์ข์ ๋ฐ ํ๋ก์ ํธ | AI ์์ฑ, ํ ๋น๋ ๋ด | ๊ฐ๊ฐ์ ์ถ๊ฐํฉ๋๋ค |
| Lingo.dev | โฌ91/ ์3 | ๊ธฐ๋ณธ ์์๋ฃ, ๊ทธ ๋ค์ AI ํ ํฐ | AI ์ฒญ๊ตฌ์๋ ๋น์ ์๊ฒ ๋ฐ๋ก ๊ฐ๋๋ค | ๊ฐ๊ฐ์ ์ถ๊ฐํฉ๋๋ค |
| Locize | โฌ77/ ์4 | ๋จ์ด ร 48, ๋ฐ CDN ๋ค์ด๋ก๋ | ๋น์ ์ ์์ ์ AI ํค๋ฅผ ๊ฐ์ ธ์ต๋๋ค | ๊ฐ์ฅ ํฐ ๊ฒ์๋ ๊ณํ์ 10 |
| Lokalise | โฌ132/ ์5 | ์ข์, ๊ทธ ๋ค์ ์ด์ | ๋ฒ์ญ๊ฐ๋ ๋ณ๋๋ก ์ฒญ๊ตฌ๋ฉ๋๋ค | ๊ฐ๊ฐ์ ์ถ๊ฐํฉ๋๋ค |
| Phrase | โฌ483/ ์6 | ์ข์, ๊ทธ๋ฐ ๋ค์ ๊ด๋ฆฌ๋ ๋จ์ด | ๋จ์ด๋น $0.06๋ถํฐ ๋ณ๋๋ก ์ฒญ๊ตฌ๋ฉ๋๋ค | ๊ฐ๊ฐ์ ์ถ๊ฐํฉ๋๋ค |
| Smartling | โฌ552/ ์7 | ๋ชจ๋ ๋จ์ด, ๋ชจ๋ ์ธ์ด | AI ๋ฒ์ญ, ๋จ์ด๋น $0.06๋ถํฐ | ๊ฐ๊ฐ์ ์ถ๊ฐํฉ๋๋ค |
| Tolgee | โฌ49/ ์8 | ํค์ ์ข์ | ๊ธฐ๊ณ ๋ฒ์ญ ํฌ๋ ๋ง | ๋น์ ์ ๊ฐ๊ฐ์ ์ฑ์๋๋ค |
| Weglot | โฌ1,678/ ์9 | ๋จ์ด ร ์ธ์ด, ์น ํ์ด์ง์์ | ๊ธฐ๊ณ, ํ ๋น๋ ๋ด | ๊ฐ์ฅ ํฐ ๊ฒ์๋ ๊ณํ์ 20 |
๊ณต๊ฐ ๋ชฉ๋ก ๊ฐ๊ฒฉ, 2026๋ 8์์ ์ฝ์. ๊ณต๊ธ์ ์ฒด๊ฐ ๊ฐ๊ฒฉ์ ๋ณ๊ฒฝํ๋ฏ๋ก ํ์ธํ์ญ์์ค. ๊ฐ ์ฒญ๊ตฌ์๋ ๊ฒ์๋ ๊ณ๋จ์ ์ฐ๋ฆฌ ์ฝ๊ธฐ์ด๋ฉฐ, ํญ์ ์ฑ์ ์ ์งํ๋ ๊ฐ์ฅ ์ ๋ ดํ ์ ๋ฃ ํ๋์ ์ ํํฉ๋๋ค. ๊ณต๊ธ์ ์ฒด๊ฐ ์ฒซ ๋ฒ์งธ ๋ฒ์ญ์ ํ ๋ฒ ์ฒญ๊ตฌํ๋ฉด 12๊ฐ์๋ก ๋ถ์ฐํฉ๋๋ค.
1 Crowdin์ ๋งค์ ํ๋ก ํ๋์์ 60,000๊ฐ์ ํธ์คํ ๋จ์ด๋ฅผ ์ฐ๊ฐ ์ฒญ๊ตฌ๋ก โฌ44์ ๊ฒ์ํฉ๋๋ค. ํธ์คํ ๋จ์ด๋ ๋์ ์ธ์ด์ ํ ๋จ์ด์ ๋๋ค. 60,000๊ฐ๋ฅผ ์ด๊ณผํ๋ฉด ํด๋น ๋ธ๋ก ๊ฐ๊ฒฉ์ ๋ฐ๋ณตํฉ๋๋ค.
2 Intlayer๋ ์คํ ์์ค์ ๋๋ค. ์ 29๋ฌ๋ฌ๋ก CMS์ AI ์์ฑ ํ ๋น๋์ ๊ตฌ๋งคํ ์ ์์ต๋๋ค. ํ ๋น๋์ ์ด๊ณผํ๋ฉด ์์ฒด AI ํค๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, ๋งค ๋ฐฑ๋ง ํ ํฐ๋น 10๋ฌ๋ฌ์ ๋ชจ๋ธ ์๊ธ์ ์ถ๊ฐํ๋ฉฐ, ์ด๋ 12๊ฐ์ ๋์ ๋ถ์ฐ๋ฉ๋๋ค.
3 Lingo.dev๋ ๋งค์ 99๋ฌ๋ฌ๋ฅผ ๊ฒ์ํ๊ณ ์ธํ๋ผ์ ๋ฐฑ๋ง ํ ํฐ๋น 2๋ฌ๋ฌ๋ฅผ ์ถ๊ฐ๋ก ์ฒญ๊ตฌํ๋ฉฐ ๋ชจ๋ธ ์ฒญ๊ตฌ์๋ฅผ ๊ทํ์๊ฒ ์ ๋ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋จ์ด๋น 1.4ํ ํฐ๊ณผ ๋ชจ๋ธ ๋น์ฉ์ ๋ฐฑ๋ง ํ ํฐ๋น 10๋ฌ๋ฌ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๊ธฐ๋ณธ ์๊ธ์ ์ด ๊ธ์ก์ ๋๋ถ๋ถ์ ์ฐจ์งํฉ๋๋ค.
4 Locize๋ ๋งค์ 7, 19, 49์ ๋ก๋ฅผ 15,000, 30,000, 60,000 ๋จ์ด์ ๋ํด ์ ๊ณตํ๋ฉฐ, 1, 3, 5๋ฐฑ๋ง CDN ๋ค์ด๋ก๋๋ฅผ ํฌํจํฉ๋๋ค. ์ถ๊ฐ๋ก 1,000๋จ์ด๋น $0.50, 100๋ง ๋ค์ด๋ก๋๋น $5๋ฅผ ์ถ๊ฐ๋ก ๊ฒ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋งค๋ฌ ๊ฐ ์ฌ์ฉ์๋น 30ํ์ ๋ค์ด๋ก๋๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๊ฒ์๋ ์ด๋ค ํ๋๋ 48๊ฐ ์ธ์ด๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
5 Lokalise๋ ๋งค๋ฌ $144, $375, $999์ ๊ณต๊ฐํ๋ฉฐ ํค ์ ํ์ด ์์ต๋๋ค. ์ธ ๊ฐ์ง ํ๋์ ๊ฐ๊ฐ 5,000, 20,000, 100,000๊ฐ์ ํค์ ๊ฐ ํค๋น 12๋จ์ด๋ฅผ ํฌํจํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ธ์ ๋ฒ์ญ์ ๋ณ๋๋ก ์ฒญ๊ตฌ๋ฉ๋๋ค.
6 ์ด ๋ฌธ๊ตฌ๋ ์ํํธ์จ์ด ํ๋์์ ๊ด๋ฆฌ๋๋ 100๋ง ๋จ์ด์ ๋ํด ์ 525๋ฌ๋ฌ๋ฅผ ๊ฒ์ํ๋ฉฐ, 300๋ง ๋จ์ด์ ๋ํด์๋ 1,245๋ฌ๋ฌ๋ฅผ ๊ฒ์ํฉ๋๋ค. ๊ฐ ์ธ์ด์ ๊ฐ ๋จ์ด์ ๋ํด ๊ด๋ฆฌ๋๋ ๋จ์ด๋ฅผ ํ๋์ฉ ๊ณ์ฐํ๋ฉฐ, ์์ 1,245๋ฌ๋ฌ ๋ธ๋ก์ 300๋ง ๋จ์ด์ ๋ํด ๋ฐ๋ณตํฉ๋๋ค.
7 Smartling์ ํ๋ซํผ ๊ฐ๊ฒฉ์ ๊ณต๊ฐํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฒ์๋ $0.06 ๋จ์ด๋น AI ๋ฒ์ญ๋ง ๊ณ์ฐํฉ๋๋ค. 12๊ฐ์ ๋์ ๋ถ์ฐ๋ฉ๋๋ค. ์ค์ ์ฒญ๊ตฌ์ก์ด ๋ ๋์ต๋๋ค.
8 Tolgee๋ ๋จ์ด ๋์ ํค๋ฅผ ์ฒญ๊ตฌํ๋ฏ๋ก ๊ฐ ํค๋น ์ด๋ ๋จ์ด๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๋งค๋ ์ฒญ๊ตฌ๋๋ 2,000๊ฐ ํค์ โฌ49, 5,000๊ฐ์ โฌ179, 20,000๊ฐ์ โฌ499์ ๊ฒ์ํฉ๋๋ค. ์ด ์ด์์ โฌ499 ๋ธ๋ก์ ๋ฐ๋ณตํฉ๋๋ค. ๊ธฐ๊ณ ๋ฒ์ญ ํฌ๋ ๋ง์ ๋ณ๋๋ก ๊ณ์ฐ๋ฉ๋๋ค.
9 Weglot์ ์ฑ์ด ์๋ ์นํ์ด์ง๋ฅผ ๋ฒ์ญํฉ๋๋ค. ๊ฐ์ฅ ํฐ ๊ณต๊ฐ๋ ์๊ธ์ ๋ 20๊ฐ ์ธ์ด์ ๋ํด ์ 699์ ๋ก์ด๋ฉฐ, ์ด ๊ฐ๊ฒฉ์ 48๊ฐ ์ธ์ด๋ก ํ์ฅํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ ๋จ์ด๋ ์ด๋ฌํ ๋ชจ๋ ์๊ธ์ ์ ๋ง๊ฒ ๊ตฌ์ฑ๋ฉ๋๋ค.
๋งค ์ค๋ง๋ค ์ ํ์ด ์ฑ์ฅํฉ๋๋ค. ์ ํฌ๋ ๊ณ ์ ๊ฐ๊ฒฉ์ ๋๋ค.
๋ฐ๋ชจ๋ฅผ ๋ณด์ธ์
์ด ์งง์ ๋์์์ ๋ณด๊ณ i18n-keyless๊ฐ ์๋ํ๋ ๋ชจ์ต์ ๋ณด์ธ์
ํ๋์ ์ฑ์ ์ํ API ํค๋ฅผ ๊ฐ์ ธ์ค์ธ์
5๋ถ ๋ง์ ์๋ฃํ๋ i18n ๊ตฌํ. iykyk.