์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
๋ฒ์ ๊ธฐ๋ก
- loadJSON ํ๋ฌ๊ทธ์ธ ์ถ๊ฐv7.0.62025. 11. 1.
- syncJSON ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ณ๊ฒฝv7.0.02025. 10. 29.
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Intlayer๋ฅผ ์ฌ์ฉํ์ฌ react-intl JSON ๋ฒ์ญ ์๋ํํ๋ ๋ฐฉ๋ฒ
๋ชฉ์ฐจ
Intlayer๋ ๋ฌด์์ธ๊ฐ์?
Intlayer๋ ์ ํต์ ์ธ i18n ์๋ฃจ์ ์ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ณ๋ ํ์ ์ ์ด๊ณ ์คํ ์์ค์ธ ๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. React ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฝํ ์ธ ๊ด๋ฆฌ๋ฅผ ์ํ ํ๋์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
react-intl๊ณผ์ ๊ตฌ์ฒด์ ์ธ ๋น๊ต๋ ์ ํฌ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ react-i18next vs. react-intl vs. Intlayer์์ ํ์ธํ ์ ์์ต๋๋ค.
์ Intlayer๋ฅผ react-intl๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํ ๊น์?
Intlayer๋ ํ๋ฅญํ ๋ ๋ฆฝํ i18n ์๋ฃจ์ ์ ์ ๊ณตํ์ง๋ง(์์ธํ ๋ด์ฉ์ React ํตํฉ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐ), ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ด์ ๋ก react-intl๊ณผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ๊ณ ์ ํ ์ ์์ต๋๋ค:
- ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค: ์ด๋ฏธ ๊ตฌ์ถ๋ react-intl ๊ตฌํ์ด ์์ผ๋ฉฐ Intlayer์ ํฅ์๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ผ๋ก ์ ์ง์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์ ํฉ๋๋ค.
- ๋ ๊ฑฐ์ ์๊ตฌ์ฌํญ: ํ๋ก์ ํธ๊ฐ ๊ธฐ์กด react-intl ํ๋ฌ๊ทธ์ธ ๋๋ ์ํฌํ๋ก์ฐ์์ ํธํ์ฑ์ ํ์๋ก ํฉ๋๋ค.
- ํ ์น์๋: ํ์ด react-intl์ ์ต์ํ์ง๋ง ๋ ๋์ ์ฝํ ์ธ ๊ด๋ฆฌ๋ฅผ ์ํฉ๋๋ค.
- Intlayer ๊ธฐ๋ฅ ์ฌ์ฉ: ์ฝํ ์ธ ์ ์ธ, ๋ฒ์ญ ์๋ํ, ๋ฒ์ญ ํ ์คํธ ๋ฑ Intlayer์ ๊ธฐ๋ฅ์ ํ์ฉํ๊ณ ์ ํฉ๋๋ค.
์ด๋ฅผ ์ํด Intlayer๋ react-intl์ ์ด๋ํฐ๋ก ๊ตฌํ๋์ด CLI ๋๋ CI/CD ํ์ดํ๋ผ์ธ์์ JSON ๋ฒ์ญ ์๋ํ, ๋ฒ์ญ ํ ์คํธ ๋ฑ์ ์ง์ํ ์ ์์ต๋๋ค.
์ด ๊ฐ์ด๋๋ react-intl๊ณผ์ ํธํ์ฑ์ ์ ์งํ๋ฉด์ Intlayer์ ์ฐ์ํ ์ฝํ ์ธ ์ ์ธ ์์คํ ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
react-intl๊ณผ ํจ๊ป Intlayer๋ฅผ ์ค์ ํ๋ ๋จ๊ณ๋ณ ๊ฐ์ด๋
์์กด์ฑ ์ค์น
ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ์ธ์:
bash์ฝ๋ ๋ณต์ฌ์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
--interactiveํ๋๊ทธ๋ ์ ํ ์ฌํญ์ ๋๋ค. AI ์์ด์ ํธ์ธ ๊ฒฝ์ฐintlayer-cli init๋ฅผ ์ฌ์ฉํ์ธ์.์ด ๋ช ๋ น์ ํ๊ฒฝ์ ๊ฐ์งํ๊ณ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
bash์ฝ๋ ๋ณต์ฌ์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
ํจํค์ง ์ค๋ช :
- intlayer: ๊ตญ์ ํ ๊ด๋ฆฌ, ์ฝํ ์ธ ์ ์ธ ๋ฐ ๋น๋๋ฅผ ์ํ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- @intlayer/sync-json-plugin: Intlayer ์ฝํ ์ธ ์ ์ธ์ react-intl ํธํ JSON ํ์์ผ๋ก ๋ด๋ณด๋ด๋ ํ๋ฌ๊ทธ์ธ
JSON์ ๋ํํ๊ธฐ ์ํ Intlayer ํ๋ฌ๊ทธ์ธ ๊ตฌํ
์ง์ํ๋ ๋ก์ผ์ผ์ ์ ์ํ๊ธฐ ์ํด Intlayer ๊ตฌ์ฑ ํ์ผ์ ๋ง๋ญ๋๋ค:
react-intl์ฉ JSON ์ฌ์ ๋ ๋ด๋ณด๋ด๊ณ ์ถ๋ค๋ฉด,
syncJSONํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ์ธ์:intlayer.config.ts์ฝ๋ ๋ณต์ฌ์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
syncJSONํ๋ฌ๊ทธ์ธ์ JSON์ ์๋์ผ๋ก ๋ํํฉ๋๋ค. ์ฝํ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ JSON ํ์ผ์ ์ฝ๊ณ ์๋๋ค.๋ง์ฝ JSON๊ณผ intlayer ์ฝํ ์ธ ์ ์ธ ํ์ผ(
.contentํ์ผ)์ ๊ณต์กด์ํค๊ณ ์ถ๋ค๋ฉด, Intlayer๋ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํฉ๋๋ค:- JSON๊ณผ ์ฝํ ์ธ ์ ์ธ ํ์ผ์ ๋ชจ๋ ๋ถ๋ฌ์์ intlayer ์ฌ์ (dictionary)์ผ๋ก ๋ณํํฉ๋๋ค.
- JSON๊ณผ ์ฝํ ์ธ ์ ์ธ ํ์ผ ๊ฐ์ ์ถฉ๋์ด ์์ ๊ฒฝ์ฐ, Intlayer๋ ๋ชจ๋ ์ฌ์ ์ ๋ณํฉํฉ๋๋ค. ์ด๋ ํ๋ฌ๊ทธ์ธ์ ์ฐ์ ์์์ ์ฝํ ์ธ ์ ์ธ ํ์ผ์ ์ฐ์ ์์์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋๋ฉฐ, ๋ชจ๋ ์ค์ ๊ฐ๋ฅํฉ๋๋ค.
CLI๋ฅผ ์ฌ์ฉํด JSON์ ๋ฒ์ญํ๊ฑฐ๋ CMS๋ฅผ ํตํด ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ง๋ฉด, Intlayer๋ ์๋ก์ด ๋ฒ์ญ์ผ๋ก JSON ํ์ผ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
syncJSONํ๋ฌ๊ทธ์ธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณด๋ ค๋ฉด syncJSON ํ๋ฌ๊ทธ์ธ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.์ปดํฌ๋ํธ๋ณ JSON ๋ฒ์ญ ๊ตฌํ
์ ํ์ฌํญ๊ธฐ๋ณธ์ ์ผ๋ก Intlayer๋ JSON ํ์ผ๊ณผ ์ฝํ ์ธ ์ ์ธ ํ์ผ์ ๋ชจ๋ ๋ก๋, ๋ณํฉ ๋ฐ ๋๊ธฐํํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฝํ ์ธ ์ ์ธ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์. ํ์ง๋ง ์ํ๋ค๋ฉด Intlayer ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฒ ์ด์ค ์ด๋์์๋ ์ง์ญํ๋ JSON์ ์ปดํฌ๋ํธ๋ณ๋ก ๊ด๋ฆฌํ ์๋ ์์ต๋๋ค.
์ด๋ฅผ ์ํด
loadJSONํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.intlayer.config.ts์ฝ๋ ๋ณต์ฌ์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ด ์ค์ ์
src๋๋ ํ ๋ฆฌ ๋ด์์{key}.i18n.jsonํจํด๊ณผ ์ผ์นํ๋ ๋ชจ๋ JSON ํ์ผ์ ๋ก๋ํ์ฌ Intlayer ์ฌ์ ์ผ๋ก ๋ถ๋ฌ์ต๋๋ค.
Git ์ค์
์๋ ์์ฑ๋๋ Intlayer ํ์ผ์ ๋ฌด์ํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ด ํ์ผ๋ค์ ๋น๋ ๊ณผ์ ์์ ๋ค์ ์์ฑ๋ ์ ์์ผ๋ฏ๋ก ๋ฒ์ ๊ด๋ฆฌ์ ์ปค๋ฐํ ํ์๊ฐ ์์ต๋๋ค.
VS Code ํ์ฅ ํ๋ก๊ทธ๋จ
๊ฐ๋ฐ์ ๊ฒฝํ ํฅ์์ ์ํด ๊ณต์ Intlayer VS Code ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํ์ธ์:
๋๊ธ
์์ง ๋๊ธ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ก ์๊ฒฌ์ ๋๋ ๋ณด์ธ์.
