i18n์„ ์œ„ํ•œ ์ตœ์ ์˜ DX

Unbreakable i18n for agents loved by humans

No key to name, no locale file to sync, no a.b.c on screen
The source text is the key, translations are unbreakable.

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 ์‹œ์Šคํ…œ์„ ์ „ํ˜€ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ์•„๋ฆ„๋‹ค์›Œ์ง‘๋‹ˆ๋‹ค.

์ฒซ๋‚ ๋ถ€ํ„ฐ 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 ๊ฐ€์ด๋“œ๋ฅผ ์ฝ์œผ์„ธ์š”
MVP์— ์ ํ•ฉ

์ฒซ๋‚ ๋ถ€ํ„ฐ ๊ธ€๋กœ๋ฒŒ ์ถœ์‹œ

๋ณต์žก์„ฑ ๋•Œ๋ฌธ์— i18n์„ ์ง€์—ฐ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ•˜์„ธ์š”. 5๋ถ„ ์•ˆ์— ๊ตฌํ˜„ํ•˜๊ณ , ์ผ๋กœ ํ•˜์ง€ ๋งˆ์„ธ์š”. i18n์ด ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”.

  • 5๋ถ„ ๊ตฌํ˜„. ๋†๋‹ด์ด ์•„๋ƒ.

    ํ•˜๋‚˜์˜ ๊ฐ„๋‹จํ•œ ๊ตฌ์„ฑ ๊ฐ์ฒด๋กœ ๋์ž…๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ ์†๋„๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”

    i18n์ด ์ „ํ˜€ ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.

  • ์„ธ๊ณ„ ์‹œ์žฅ์œผ๋กœ ๋ฐฐ์†ก

    ์ƒˆ๋กœ์šด ์–ธ์–ด๋กœ ํ™•์žฅํ•  ๋•Œ ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • SSR & SEO ์ค€๋น„ ์™„๋ฃŒ

    Next.js, Remix, TanStack Start, Astro์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ์—”์ง„์„ ์œ„ํ•œ ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง โ€” 5๋ถ„ ๋งŒ์— ๋™์ผํ•œ ์„ค์ •.

์ „ํ†ต์ ์ธ i18n

ํ‚ค ์‹œ์Šคํ…œ ์„ค์ • (1์‹œ๊ฐ„)
๋ฒˆ์—ญ ํŒŒ์ผ ์ƒ์„ฑ (2 ์‹œ๊ฐ„)
์ปดํฌ๋„ŒํŠธ ๋ฆฌํŒฉํ† ๋ง (4์‹œ๊ฐ„)
๋ชจ๋“  ์–ธ์–ด๋ฅผ ํ…Œ์ŠคํŠธ (2 ์‹œ๊ฐ„)
๋ ˆ์ด์•„์›ƒ ๋ฌธ์ œ ์ˆ˜์ • (3์‹œ๊ฐ„)
12+ ์‹œ๊ฐ„์˜ ์ž‘์—…

i18n-keyless

ํŒจํ‚ค์ง€ ์ถ”๊ฐ€ (1 ๋ถ„)
API ํ‚ค๋กœ ๊ตฌ์„ฑ (2 ๋ถ„)
ํ…์ŠคํŠธ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ์‹ธ๊ธฐ (2 ๋ถ„)
5๋ถ„๊ฐ„์˜ ์ž‘์—…
์ž‘๋™ ๋ฐฉ์‹

์„ค์ •์€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ตฌ์„ฑ ๊ฐ์ฒด๋งŒ ์žˆ์œผ๋ฉด ๊ธ€๋กœ๋ฒŒ์— ๋‚˜๊ฐˆ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์•„๊ฐ€, ๋‹น์‹ ์˜ ์—์ด์ „ํŠธ๊ฐ€ ๋‹น์‹ ์„ ์œ„ํ•ด ์„ค์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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 ํ˜ธ์ถœ๋กœ ๋ฒˆ์—ญ์„ ์–ป์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋”ฉ ์ค‘์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ•˜๋‚˜๋ฅผ ๋†“์ณค๋‹ค๋ฉด, ํ”„๋กœ๋•์…˜์—์„œ๋Š” ๋ฒˆ์—ญ์ด ๋ถ€์กฑํ•œ ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž๋งŒ ๊ธ€๋ฆฌ์น˜๋ฅผ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, ์ „ ์„ธ๊ณ„์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์•ฑ ์Šคํ† ์–ด & Google Play

๋ชจ๋“  ์–ธ์–ด, ๋ชจ๋“  ๋ฆด๋ฆฌ์Šค์—์„œ ๊ท€ํ•˜์˜ ์Šคํ† ์–ด ๋ชฉ๋ก

๋ชจ๋“  ์—…๋ฐ์ดํŠธ๋Š” ์ƒˆ๋กœ์šด ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ, ์„ค๋ช… ๋ฐ ํ‚ค์›Œ๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค โ€” ๊ฐ ์–ธ์–ด๋ณ„๋กœ ๋‘ ์Šคํ† ์–ด์—์„œ. ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ์–ธ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์•ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ์–ธ์–ด์— ๋Œ€ํ•œ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ, ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ๋กœ

    ์—…๋ฐ์ดํŠธ๋ฅผ ํ•œ ๋ฒˆ ์ž‘์„ฑํ•˜์„ธ์š”. 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๊ฐœ ์–ธ์–ด๋กœ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€๋˜์—ˆ๊ณ , ๋ฒˆ์—ญ ํ‚ค ๊ด€๋ฆฌ๊ฐ€ ์•„๋‹Œ ๊ธฐ๋Šฅ ๊ตฌ์ถ•์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

JS

Jamie Smith

๋ฉ‹์ง„ ์Šคํƒ€ํŠธ์—…์˜ CTO

๋ฒˆ์—ญ ํ‚ค ๊ด€๋ฆฌ์˜ ์ •์‹ ์  ๋ถ€๋‹ด์ด ์ƒ์‚ฐ์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. i18n-keyless๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž์—ฐ์–ด๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ์šฐ์— i18n์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋А๊ปด์ง‘๋‹ˆ๋‹ค.

AL

Alex Lee

Another Cool Startup์˜ ๋ฆฌ๋“œ ๊ฐœ๋ฐœ์ž

์ œํ’ˆ์˜ i18n์„ ์ถœ์‹œ ํ›„์— ์—ฐ๊ธฐํ•  ๋ป”ํ–ˆ์Šต๋‹ˆ๋‹ค. i18n-keyless๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MVP ๋‹จ๊ณ„์—์„œ ๊ตฌํ˜„ํ•˜๊ณ  ์ฒซ๋‚ ๋ถ€ํ„ฐ ๊ธ€๋กœ๋ฒŒ๋กœ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ROI๊ฐ€ ๋†€๋ž๋„๋ก ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

MR

Maria Rodriguez

GlobalApp์˜ ์„ค๋ฆฝ์ž

๊ฐ€๊ฒฉ

๊ฐ„๋‹จํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๊ฐ€๊ฒฉ

๋‹น์‹ ์˜ ๊ทœ๋ชจ์— ๋งž๋Š” ์ผ๋ฅ ์ ์ธ ๊ฐ€๊ฒฉ.
๋ชจ๋“  ํ”Œ๋žœ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ.
๋‹จ์–ด๋ณ„ ์š”๊ธˆ ์—†์Œ, ํ† ํฐ ๊ณ„์‚ฐ ์—†์Œ.

์ „์ฑ„
โ‚ฌ4/ ์›”

์›” ์ตœ๋Œ€ 1,000๋ช…์˜ ํ™œ์„ฑ ์‚ฌ์šฉ์ž

์ธ๋”” ์•ฑ ๋ฐ ์‹ ์ œํ’ˆ์šฉ

์ธ๋””
โ‚ฌ9/ ์›”

์›” ์ตœ๋Œ€ 5,000๋ช…์˜ ํ™œ์„ฑ ์‚ฌ์šฉ์ž

์ฒญ์ค‘์„ ์ฐพ๋Š” ์•ฑ์„ ์œ„ํ•œ

์„ฑ์žฅ
โ‚ฌ29/ ์›”

์›” ์ตœ๋Œ€ 50,000๋ช…์˜ ํ™œ์„ฑ ์‚ฌ์šฉ์ž

์‹ค์ œ ํŠธ๋ž™์…˜์ด ์žˆ๋Š” ์•ฑ์šฉ

์ฒ™๋„
โ‚ฌ99/ ์›”

์ตœ๋Œ€ 50๋งŒ ๋ช…์˜ ์›”๊ฐ„ ํ™œ์„ฑ ์‚ฌ์šฉ์ž

๊ทœ๋ชจ์— ๋งž๋Š” ์ œํ’ˆ์šฉ

๋ชจ๋“  ๊ณ„ํš์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:

๋ชจ๋“  48๊ฐœ ์–ธ์–ด. ์ „ ์„ธ๊ณ„, ์ฒซ๋‚ ๋ถ€ํ„ฐ

๋ฌด์ œํ•œ ๋ฒˆ์—ญ, AI ํฌํ•จ. ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์€ ํ”„๋กœ๋•์…˜์—์„œ ์ž๋™์œผ๋กœ ๋ฒˆ์—ญ๋ฉ๋‹ˆ๋‹ค

์‚ฌ์šฉ์ž ์ƒ์„ฑ ์ฝ˜ํ…์ธ (UGC)์˜ ์‹ค์‹œ๊ฐ„ ๋ฒˆ์—ญ

์–ธ์ œ๋“ ์ง€ ์—…๊ทธ๋ ˆ์ด๋“œ, ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ ๋˜๋Š” ์ทจ์†Œํ•˜์„ธ์š”

์›”๊ฐ„ ํ™œ์„ฑ ์‚ฌ์šฉ์ž 50๋งŒ ๋ช… ์ด์ƒ์ž…๋‹ˆ๊นŒ? ๋ฌธ์˜ํ•˜๊ธฐ

๊ฐ™์€ ์•ฑ์ด ๋‹ค๋ฅธ ๊ณณ์—์„œ ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ

๋‘ ์Šฌ๋ผ์ด๋”๋ฅผ ์ด๋™ํ•˜์„ธ์š”. ์ฒญ๊ตฌ์„œ๋Š” ๋ชจ๋“  48๊ฐœ ์–ธ์–ด๋กœ ์ œ๊ณต๋˜๋Š” ๊ท€ํ•˜์˜ ์•ฑ์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1,000
2,500
ํ•ด๊ฒฐ๋‹น์‹ ์˜ ์›”๋ณ„ ์ฒญ๊ตฌ์„œ๋‹น์‹ ์€ ๋งค๋ฒˆ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค๋ฒˆ์—ญ์–ธ์–ด
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.