์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ i18n์ ๋ํ ์ฐฌ๋ฐ ๋ ผ์
10๋ ์ด์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํด์๋ค๋ฉด, ๊ตญ์ ํ(i18n)๊ฐ ํญ์ ๋ง์ฐฐ ์ง์ ์ด์์์ ์ ๊ฒ์ ๋๋ค. ๋ฌธ์์ด ์ถ์ถ, JSON ํ์ผ ๊ด๋ฆฌ, ๋ณต์ํ ๊ท์น ์ฒ๋ฆฌ ๋ฑ ์๋ฌด๋ ํ๊ณ ์ถ์ด ํ์ง ์๋ ์์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ต๊ทผ์, ์ด ๊ณ ํต์ ์ฌ๋ผ์ง๊ฒ ํ๊ฒ ๋ค๊ณ ์ฝ์ํ๋ "์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ" i18n ๋๊ตฌ์ ์๋ก์ด ๋ฌผ๊ฒฐ์ด ๋ฑ์ฅํ์ต๋๋ค. ๊ทธ ์ ์์ ๋งค๋ ฅ์ ์ ๋๋ค: ์ปดํฌ๋ํธ์ ํ ์คํธ๋ง ์์ฑํ๋ฉด, ๋น๋ ๋๊ตฌ๊ฐ ๋๋จธ์ง๋ฅผ ์ฒ๋ฆฌํด์ค๋๋ค. ํค๋, ์ํฌํธ๋ ์์ด, ๊ทธ์ ๋ง๋ฒ์ฒ๋ผ์.
ํ์ง๋ง ์ํํธ์จ์ด ๊ณตํ์ ๋ชจ๋ ์ถ์ํ๊ฐ ๊ทธ๋ ๋ฏ, ๋ง๋ฒ์๋ ๋๊ฐ๊ฐ ๋ฐ๋ฆ ๋๋ค.
์ด ๋ธ๋ก๊ทธ ํฌ์คํธ์์๋ ์ ์ธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ผ๋ก์ ์ ํ, ๊ทธ๋ค์ด ๋์ ํ๋ ์จ๊ฒจ์ง ์ํคํ ์ฒ ๋ถ์ฑ, ๊ทธ๋ฆฌ๊ณ ์ "์ง๋ฃจํ" ๋ฐฉ์์ด ์ฌ์ ํ ์ ๋ฌธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ผ ์ ์๋์ง ํ๊ตฌํ ๊ฒ์ ๋๋ค.
๋ชฉ์ฐจ
๊ตญ์ ํ์ ๊ฐ๋ตํ ์ญ์ฌ
์ฐ๋ฆฌ๊ฐ ํ์ฌ ์์น๋ฅผ ์ดํดํ๋ ค๋ฉด, ์์์ ์ ๋๋์๋ด์ผ ํฉ๋๋ค.
2011๋ ์์ 2012๋ ๊ฒฝ, JavaScript ํ๊ฒฝ์ ๋งค์ฐ ๋ฌ๋์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๋ฒ๋ค๋ฌ๋ค(Webpack, Vite)์ ์กด์ฌํ์ง ์์๊ฑฐ๋ ์ด๊ธฐ ๋จ๊ณ์ ๋ถ๊ณผํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ด์์ต๋๋ค. ์ด ์๊ธฐ์ i18next์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ์ต๋๋ค.
์ด๋ค์ ๋น์ ๊ฐ๋ฅํ ์ ์ผํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค: ๋ฐํ์ ์ฌ์ (Runtime Dictionaries). ๊ฑฐ๋ํ JSON ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ , ํจ์๊ฐ ์คํ ์ค์ ํค๋ฅผ ์ฐพ์๋ด๋ ๋ฐฉ์์ด์์ต๋๋ค. ์ด๋ ์ ๋ขฐํ ์ ์๊ณ ๋ช ํํ๋ฉฐ ์ด๋์๋ ์๋ํ์ต๋๋ค.
์๊ฐ์ด ํ๋ฌ ์ค๋๋ ์ ์ด๋ฅด๋ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(Abstract Syntax Trees, AST)๋ฅผ ํ์ฑํ ์ ์๋ ๊ฐ๋ ฅํ ์ปดํ์ผ๋ฌ๋ค(SWC, Rust ๊ธฐ๋ฐ ๋ฒ๋ค๋ฌ)์ ๊ฐ์ถ๊ฒ ๋์์ต๋๋ค. ์ด ํ์ ์๋ก์ด ์์ด๋์ด๋ฅผ ํ์์์ผฐ์ต๋๋ค: ์ ์ฐ๋ฆฌ๊ฐ ์๋์ผ๋ก ํค๋ฅผ ๊ด๋ฆฌํด์ผ ํ ๊น? ์ปดํ์ผ๋ฌ๊ฐ "Hello World"๋ผ๋ ํ ์คํธ๋ฅผ ๋ณด๊ณ ๋ฐ๋ก ๊ต์ฒดํด์ฃผ๋ฉด ์ ๋ ๊น?
์ด๋ ๊ฒ ํด์ ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ i18n์ด ํ์ํ์ต๋๋ค.
์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ i18n์ ์:
- Paraglide (๊ฐ ๋ฉ์์ง๋ฅผ ์์ ESM ํจ์๋ก ์ปดํ์ผํ๋ ํธ๋ฆฌ ์์ดํน ๋ชจ๋๋ก, ๋ฒ๋ค๋ฌ๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ก์ผ์ผ๊ณผ ํค๋ฅผ ์๋์ผ๋ก ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ฌธ์์ด ํค ์กฐํ ๋์ ๋ฉ์์ง๋ฅผ ํจ์๋ก ๊ฐ์ ธ์ต๋๋ค.)
- LinguiJS (
<Trans>์ ๊ฐ์ ๋ฉ์์ง ๋งคํฌ๋ก๋ฅผ ๋น๋ ์์ ์ ์ผ๋ฐ JS ํจ์ ํธ์ถ๋ก ์ฌ์์ฑํ๋ ๋งคํฌ๋ก-ํฌ-ํจ์ ์ปดํ์ผ๋ฌ์ ๋๋ค. ๋งค์ฐ ์์ ๋ฐํ์ ํฌ๊ธฐ๋ก ICU/MessageFormat ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค.)- Lingo.dev (React ์ ํ๋ฆฌ์ผ์ด์ ๋น๋ ์ค์ ๋ฒ์ญ๋ ์ฝํ ์ธ ๋ฅผ ์ง์ ์ฃผ์ ํ์ฌ ๋ก์ปฌ๋ผ์ด์ ์ด์ ํ์ดํ๋ผ์ธ์ ์๋ํํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. AI๋ฅผ ์ฌ์ฉํด ๋ฒ์ญ์ ์๋ ์์ฑํ ์ ์์ผ๋ฉฐ CI/CD์ ์ง์ ํตํฉํ ์ ์์ต๋๋ค.)
- Wuchale (Svelte ์ฐ์ ์ ์ฒ๋ฆฌ๊ธฐ๋ก .svelte ํ์ผ ๋ด ์ธ๋ผ์ธ ํ ์คํธ๋ฅผ ์ถ์ถํ์ฌ ๋ํผ๊ฐ ์๋ ๋ฒ์ญ ํจ์๋ก ์ปดํ์ผํฉ๋๋ค. ๋ฌธ์์ด ํค๋ฅผ ํผํ๊ณ , ์ฝํ ์ธ ์ถ์ถ ๋ก์ง์ ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐํ์๊ณผ ์์ ํ ๋ถ๋ฆฌํฉ๋๋ค.)
- Intlayer (์ปดํ์ผ๋ฌ / ์ถ์ถ CLI๋ก ์ปดํฌ๋ํธ๋ฅผ ํ์ฑํ๊ณ , ํ์ ์ด ์ง์ ๋ ์ฌ์ ์ ์์ฑํ๋ฉฐ, ์ ํ์ ์ผ๋ก ๋ช ์์ ์ธ Intlayer ์ฝํ ์ธ ๋ฅผ ์ฌ์ฉํ๋๋ก ์ฝ๋๋ฅผ ์ฌ์์ฑํ ์ ์์ต๋๋ค. ๋ชฉํ๋ ์ ์ธ์ ์ด๊ณ ํ๋ ์์ํฌ์ ๊ตฌ์ ๋ฐ์ง ์๋ ์ฝ์ด๋ฅผ ์ ์งํ๋ฉด์ ์ปดํ์ผ๋ฌ๋ฅผ ํตํ ์๋๋ฅผ ๋์ด๋ ๊ฒ์ ๋๋ค.)
์ ์ธ์ i18n์ ์:
- i18next / react-i18next / next-i18next (๋ฐํ์ JSON ์ฌ์ ๊ณผ ๊ด๋ฒ์ํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ํ ์ ๊ณ ํ์ค)
- react-intl (FormatJS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ผ๋ถ๋ก, ํ์ค ICU ๋ฉ์์ง ๊ตฌ๋ฌธ๊ณผ ์๊ฒฉํ ๋ฐ์ดํฐ ํฌ๋งทํ ์ ์ค์ ์ ๋ )
- next-intl (Next.js์ ์ต์ ํ๋์ด App Router ๋ฐ React Server Components์ ํตํฉ๋จ)
- vue-i18n / @nuxt/i18n (์ปดํฌ๋ํธ ์์ค์ ๋ฒ์ญ ๋ธ๋ก๊ณผ ๊ฐ๋ ฅํ ๋ฐ์์ฑ ํตํฉ์ ์ ๊ณตํ๋ ํ์ค Vue ์ํ๊ณ ์๋ฃจ์ )
- svelte-i18n (๋ฐ์ํ ๋ฐํ์ ๋ฒ์ญ์ ์ํ Svelte ์คํ ์ด๋ฅผ ๊ฐ์ผ ๊ฒฝ๋ ๋ํผ)
- angular-translate (๋น๋ ํ์ ๋ณํฉ ๋์ ๋ฐํ์ ํค ์กฐํ์ ์์กดํ๋ ๋ ๊ฑฐ์ ๋์ ๋ฒ์ญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
- angular-i18n (๋น๋ ์ XLIFF ํ์ผ์ ํ ํ๋ฆฟ์ ์ง์ ๋ณํฉํ๋ Angular์ ๋ค์ดํฐ๋ธ ์ ํ ์ฒ๋ฆฌ ๋ฐฉ์)
- Tolgee (์ ์ธ์ ์ฝ๋๋ฅผ UI ๋ด์์ ์ง์ "ํด๋ฆญํ์ฌ ๋ฒ์ญ" ํธ์ง์ด ๊ฐ๋ฅํ ์ธ์ปจํ ์คํธ SDK์ ๊ฒฐํฉ)
- Intlayer (์ปดํฌ๋ํธ๋ณ ์ ๊ทผ ๋ฐฉ์์ผ๋ก, ๋ค์ดํฐ๋ธ ํธ๋ฆฌ ์์ดํน๊ณผ TypeScript ๊ฒ์ฆ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ฝํ ์ธ ์ ์ธ ํ์ผ ์ฌ์ฉ)
์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋์์ ์๋์ง ์ดํดํ๋ ค๋ฉด JavaScript i18n์ ์ญ์ฌ๋ฅผ ์ฝ์ด๋ณด์ธ์.
Intlayer ์ปดํ์ผ๋ฌ
Intlayer๋ ๋ณธ์ง์ ์ผ๋ก ์ฝํ ์ธ ์ ๋ํด ์ ์ธ์ ์ ๊ทผ๋ฒ์ ๊ถ์ฅํ๋ ์๋ฃจ์ ์ด์ง๋ง, ๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๊ฑฐ๋ ๋น ๋ฅธ ํ๋กํ ํ์ดํ์ ๋๊ธฐ ์ํด ์ปดํ์ผ๋ฌ๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
Intlayer ์ปดํ์ผ๋ฌ๋ React, Vue, Svelte ์ปดํฌ๋ํธ๋ฟ๋ง ์๋๋ผ ๊ธฐํ JavaScript/TypeScript ํ์ผ์ AST(์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ)๋ฅผ ํ์ํฉ๋๋ค. ๊ทธ ์ญํ ์ ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด์ ๊ฐ์งํ์ฌ ์ ์ฉ .content ์ ์ธ์ผ๋ก ์ถ์ถํ๋ ๊ฒ์
๋๋ค.
์์ธํ ๋ด์ฉ์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์: Intlayer Compiler Docs
์ปดํ์ผ๋ฌ์ ๋งค๋ ฅ (์ผ๋ช "๋ง๋ฒ" ์ ๊ทผ๋ฒ)
์ด ์๋ก์ด ์ ๊ทผ๋ฒ์ด ์ ํํ๋ ๋ฐ๋ ์ด์ ๊ฐ ์์ต๋๋ค. ๊ฐ๋ฐ์ ์ ์ฅ์์ ๊ฒฝํ์ด ๋๋๊ฒ ๋๊ปด์ง๋๋ค.
1. ์๋์ "ํ๋ฆ"
์ง์คํ๊ณ ์์ ๋ ์๋ฏธ ์๋ ๋ณ์ ์ด๋ฆ(home_hero_title_v2)์ ๊ณ ๋ฏผํ๋๋ผ ๋ฉ์ถ๋ฉด ํ๋ฆ์ด ๋๊น๋๋ค. ์ปดํ์ผ๋ฌ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด <p>Welcome back</p>๋ฅผ ์
๋ ฅํ๊ณ ๊ณ์ ์งํํ ์ ์์ต๋๋ค. ๋ง์ฐฐ์ด ์ ํ ์์ต๋๋ค.
2. ๋ ๊ฑฐ์ ๊ตฌ์กฐ ๊ตฌ์ถ ๋ฏธ์
๊ฑฐ๋ํ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์์๋ฐ์ 5,000๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ์์ง๋ง ๋ฒ์ญ์ด ์ ํ ์๋ ์ํฉ์ ์์ํด ๋ณด์ธ์. ์๋ ํค ๊ธฐ๋ฐ ์์คํ ์ผ๋ก ์ด๋ฅผ ๊ฐ์กฐํ๋ ๊ฒ์ ๋ช ๋ฌ์ด ๊ฑธ๋ฆฌ๋ ์ ๋ชฝ๊ณผ ๊ฐ์ต๋๋ค. ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ๋๊ตฌ๋ ๊ตฌ์ถ ์ ๋ต์ผ๋ก ์๋ํ์ฌ, ๋จ ํ ํ์ผ๋ ์๋์ผ๋ก ๊ฑด๋๋ฆฌ์ง ์๊ณ ์์ฒ ๊ฐ์ ๋ฌธ์์ด์ ์ฆ์ ์ถ์ถํฉ๋๋ค.
3. AI ์๋
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ฐ๊ณผํด์๋ ์ ๋ ํ๋์ ์ธ ์ด์ ์ ๋๋ค. AI ์ฝ๋ฉ ์ด์์คํดํธ(์: Copilot ๋๋ ChatGPT)๋ ์์ฐ์ค๋ฝ๊ฒ ํ์ค JSX/HTML์ ์์ฑํฉ๋๋ค. ์ด๋ค์ ์ฌ๋ฌ๋ถ์ ํน์ ๋ฒ์ญ ํค ์คํค๋ง๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
- ์ ์ธ์ (Declarative): AI์ ์ถ๋ ฅ์ ํ ์คํธ์์ ํค๋ก ๊ต์ฒดํ๊ธฐ ์ํด ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค.
- ์ปดํ์ผ๋ฌ(Compiler): AI ์ฝ๋๋ฅผ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๋ง ํ๋ฉด ๋ฐ๋ก ์๋ํฉ๋๋ค.
ํ์ค ์ ๊ฒ: ์ "๋ง๋ฒ"์ด ์ํํ๊ฐ
"๋ง๋ฒ" ๊ฐ์ ๊ธฐ๋ฅ์ด ๋งค๋ ฅ์ ์ด์ง๋ง, ์ถ์ํ๊ฐ ๋์๋ฉ๋๋ค. ๋น๋ ๋๊ตฌ์ ์ธ๊ฐ์ ์๋๋ฅผ ์ดํดํ๋๋ก ์์กดํ๋ ๊ฒ์ ์ํคํ ์ฒ์ ์ทจ์ฝ์ฑ์ ์ด๋ํฉ๋๋ค.
ํด๋ฆฌ์คํฑ ์ทจ์ฝ์ฑ (์ถ์ธก ๊ฒ์)
์ปดํ์ผ๋ฌ๋ ๋ฌด์์ด ์ฝํ ์ธ ์ด๊ณ ๋ฌด์์ด ์ฝ๋์ธ์ง ์ถ์ธกํด์ผ ํฉ๋๋ค. ์ด๋ก ์ธํด ๋๊ตฌ์ "์ธ์ฐ๊ฒ" ๋๋ ์ฃ์ง ์ผ์ด์ค๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ค์ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ณด์ญ์์ค:
<span className="active"></span>๊ฐ ์ถ์ถ๋๋์? (๋ฌธ์์ด์ด์ง๋ง, ์๋ง๋ ํด๋์ค์ ๋๋ค).<span status="pending"></span>๊ฐ ์ถ์ถ๋๋์? (ํ๋กํผํฐ ๊ฐ์ ๋๋ค).<span>{"Hello World"}</span>๊ฐ ์ถ์ถ๋๋์? (JS ํํ์์ ๋๋ค).<span>Hello {name}. How are you?</span>๊ฐ ์ถ์ถ๋๋์? (๋ณด๊ฐ๋ฒ์ด ๋ณต์กํฉ๋๋ค).<span aria-label="Image of cat"></span>๊ฐ ์ถ์ถ๋๋์? (์ ๊ทผ์ฑ ์์ฑ์ ๋ฒ์ญ์ด ํ์ํฉ๋๋ค).<span data-testid="my-element"></span>๋ ์ถ์ถ๋๋์? (ํ ์คํธ ID๋ ๋ฒ์ญํด์๋ ์ ๋ฉ๋๋ค).<MyComponent errorMessage="An error occurred" />๋ ์ถ์ถ๋๋์?<p>This is a paragraph{" "}\n containing multiple lines</p>๋ ์ถ์ถ๋๋์?<p>{getStatusMessage()}</p>ํจ์ ๊ฒฐ๊ณผ๋ ์ถ์ถ๋๋์?<div>{isLoading ? "The page is loading" : <MyComponent/>} </div>๋ ์ถ์ถ๋๋์?<span>AX-99</span>์ ๊ฐ์ ์ ํ ID๋ ์ถ์ถ๋๋์?
๊ฒฐ๊ตญ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ด ๊นจ์ง์ง ์๋๋ก ํน์ ์ฃผ์(// ignore-translation ๊ฐ์)์ด๋ ํน์ props(data-compiler-ignore="true" ๊ฐ์)๋ฅผ ์ถ๊ฐํ๊ฒ ๋ฉ๋๋ค.
Intlayer๋ ์ด ๋ณต์ก์ฑ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์?
Intlayer๋ ํ๋๊ฐ ๋ฒ์ญ์ ์ํด ์ถ์ถ๋์ด์ผ ํ๋์ง ๊ฐ์งํ๊ธฐ ์ํด ํผํฉ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, ์คํ(false positives)์ ์ต์ํํ๋ ค๊ณ ์๋ํฉ๋๋ค:
- AST ๋ถ์: ์์ ํ์
์ ํ์ธํฉ๋๋ค (์:
reactNode,label, ๋๋titleprop์ ๊ตฌ๋ถ). - ํจํด ์ธ์: ๋ฌธ์์ด์ด ๋๋ฌธ์๋ก ์์ํ๊ฑฐ๋ ๊ณต๋ฐฑ์ ํฌํจํ๋์ง ๊ฐ์งํ์ฌ, ์ฝ๋ ์๋ณ์๋ณด๋ค๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ํ ์คํธ์ผ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ํ๋จํฉ๋๋ค.
๋์ ๋ฐ์ดํฐ์ ํ๊ณ
์ปดํ์ผ๋ฌ ์ถ์ถ์ ์ ์ ๋ถ์์ ์์กดํฉ๋๋ค. ์์ ์ ์ธ ID๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฝ๋ ๋ด์์ ๋ฆฌํฐ๋ด ๋ฌธ์์ด์ ๋ฐ๋์ ํ์ธํด์ผ ํฉ๋๋ค.
API๊ฐ server_error์ ๊ฐ์ ์๋ฌ ์ฝ๋ ๋ฌธ์์ด์ ๋ฐํํ๋ ๊ฒฝ์ฐ, ์ปดํ์ผ๋ฌ๋ ๋น๋ ์์ ์ ํด๋น ๋ฌธ์์ด์ด ์กด์ฌํ๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ๋ฌ๋ก ๋ฒ์ญํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋์ ๋ฐ์ดํฐ ์ ์ฉ์ ๋ณ๋ "๋ฐํ์ ์ ์ฉ" ์์คํ
์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.
์ฒญํน ๋ถ์กฑ
์ผ๋ถ ์ปดํ์ผ๋ฌ๋ ํ์ด์ง๋ณ๋ก ๋ฒ์ญ์ ์ฒญํนํ์ง ์์ต๋๋ค. ๋ง์ฝ ์ปดํ์ผ๋ฌ๊ฐ ์ธ์ด๋ณ๋ก ํฐ JSON ํ์ผ(e.g., ./lang/en.json, ./lang/fr.json ๋ฑ)์ ์์ฑํ๋ค๋ฉด, ๋จ์ผ ๋ฐฉ๋ฌธ ํ์ด์ง์ ๋ํด ๋ชจ๋ ํ์ด์ง์ ์ฝํ
์ธ ๋ฅผ ๋ก๋ํ๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ๋ํ, ์ฝํ
์ธ ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ ์ปดํฌ๋ํธ๋ ํ์ ์ด์์ผ๋ก ๋ง์ ์ฝํ
์ธ ๋ก ํ์ด๋๋ ์ด์
๋์ด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
๋ฒ์ญ์ ๋์ ์ผ๋ก ๋ก๋ํ ๋๋ ์ฃผ์ํด์ผ ํฉ๋๋ค. ๋ง์ฝ ์ด๋ ๊ฒ ํ์ง ์์ผ๋ฉด, ํ์ฌ ์ธ์ด๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ์ธ์ด์ ์ฝํ ์ธ ๋ฅผ ํจ๊ป ๋ก๋ํ๊ฒ ๋ฉ๋๋ค.
๋ฌธ์ ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด, 10๊ฐ์ ํ์ด์ง์ 10๊ฐ์ ์ธ์ด(๋ชจ๋ 100% ๊ณ ์ ํ ๊ฒฝ์ฐ)๋ฅผ ๊ฐ์ง ์ฌ์ดํธ๋ฅผ ์๊ฐํด ๋ณด์ธ์. ์ด ๊ฒฝ์ฐ 99๊ฐ์ ์ถ๊ฐ ํ์ด์ง ์ฝํ ์ธ ๋ฅผ ๋ก๋ํ๊ฒ ๋ฉ๋๋ค (10 ร 10 - 1).
"์ฒญํฌ ํญ๋ฐ"๊ณผ ๋คํธ์ํฌ ์ํฐํด
์ฒญํน ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ์ผ๋ถ ์๋ฃจ์ ์ ์ปดํฌ๋ํธ๋ณ ๋๋ ํค๋ณ๋ก ์ฒญํฌ๋ฅผ ๋๋๋ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ๋ ๋ถ๋ถ์ ์ผ๋ก๋ง ํด๊ฒฐ๋ฉ๋๋ค. ์ด๋ฌํ ์๋ฃจ์ ์ ํ๋งค ํฌ์ธํธ๋ ์ข ์ข "๋น์ ์ ์ฝํ ์ธ ๊ฐ ํธ๋ฆฌ ์์ดํน๋๋ค"๋ ์ ์ ๋๋ค.
์ค์ ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ ์ผ๋ก ๋ก๋ํ๋ฉด, ์๋ฃจ์ ์ ์ฌ์ฉํ์ง ์๋ ์ฝํ ์ธ ๋ฅผ ํธ๋ฆฌ ์์ดํนํ์ง๋ง, ์ฌ์ ํ ๋ชจ๋ ์ธ์ด์ ์ฝํ ์ธ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ๋ก๋๋ฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ๋์ ์ผ๋ก ๋ก๋ํ์ง ์์๊น์? ๋ค, ๊ทธ ๊ฒฝ์ฐ ํ์ํ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ฝํ ์ธ ๋ฅผ ๋ก๋ํ๊ฒ ๋์ง๋ง, ์ด๋ ๋จ์ ์ด ์ ํ ์๋ ๊ฒ์ ์๋๋๋ค.
์ฝํ ์ธ ๋ฅผ ๋์ ์ผ๋ก ๋ก๋ํ๋ฉด ๊ฐ ์ฝํ ์ธ ์กฐ๊ฐ์ด ์์ฒด ์ฒญํฌ๋ก ๋ถ๋ฆฌ๋์ด ํด๋น ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ๋๋ง ๋ก๋๋ฉ๋๋ค. ์ด๋ ํ ์คํธ ๋ธ๋ก๋น ํ๋์ HTTP ์์ฒญ์ ํ๊ฒ ๋๋ค๋ ์๋ฏธ์ ๋๋ค. ํ์ด์ง์ 1,000๊ฐ์ ํ ์คํธ ๋ธ๋ก์ด ์๋ค๋ฉด? โ ์๋ฒ์ 1,000๊ฐ์ HTTP ์์ฒญ์ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํผํด๋ฅผ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒซ ๋ ๋๋ง ์๊ฐ์ ์ต์ ํํ๋ ค๋ฉด ์ฌ๋ฌ ๊ฐ์ Suspense ๊ฒฝ๊ณ๋ Skeleton Loader๋ฅผ ์ฝ์ ํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ : Next.js์ SSR์ ์ฌ์ฉํ๋๋ผ๋ ์ปดํฌ๋ํธ๋ ๋ก๋ฉ ํ์ ํ์ด๋๋ ์ด์ ๋๋ฏ๋ก HTTP ์์ฒญ์ ์ฌ์ ํ ๋ฐ์ํฉ๋๋ค.
ํด๊ฒฐ์ฑ
? i18next, next-intl, ๋๋ intlayer์ ๊ฐ์ด ๋ฒ์๊ฐ ์ง์ ๋ ์ฝํ
์ธ ์ ์ธ์ ํ ์ ์๋ ์๋ฃจ์
์ ์ฑํํ๋ ๊ฒ์
๋๋ค.
์ฐธ๊ณ :i18next์next-intl์ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ต์ ํํ๊ธฐ ์ํด ๊ฐ ํ์ด์ง๋ง๋ค ๋ค์์คํ์ด์ค/๋ฉ์์ง ์ํฌํธ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.rollup-plugin-visualizer(vite),@next/bundle-analyzer(next.js), ๋๋webpack-bundle-analyzer(React CRA / Angular ๋ฑ)์ ๊ฐ์ ๋ฒ๋ค ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉํ์ง ์๋ ๋ฒ์ญ์ผ๋ก ๋ฒ๋ค์ด ์ค์ผ๋๊ณ ์๋์ง ๊ฐ์งํด์ผ ํฉ๋๋ค.
๋ฐํ์ ์ฑ๋ฅ ์ค๋ฒํค๋
๋ฒ์ญ์ ๋ฐ์ํ์ผ๋ก ๋ง๋ค์ด(์ธ์ด๋ฅผ ์ ํํ ๋ ์ฆ์ ์ ๋ฐ์ดํธ๋๋๋ก) ์ปดํ์ผ๋ฌ๊ฐ ์ข ์ข ๋ชจ๋ ์ปดํฌ๋ํธ์ ์ํ ๊ด๋ฆฌ ํ ์ ์ฃผ์ ํฉ๋๋ค.
- ๋น์ฉ: 5,000๊ฐ์ ์์ดํ
๋ฆฌ์คํธ๋ฅผ ๋ ๋๋งํ ๊ฒฝ์ฐ, ํ
์คํธ๋ง์ ์ํด 5,000๊ฐ์
useState์useEffectํ ์ ์ด๊ธฐํํ๊ฒ ๋ฉ๋๋ค. React๋ ๋ชจ๋ 5,000๋ช ์ ์๋น์๋ฅผ ๋์์ ์๋ณํ๊ณ ๋ค์ ๋ ๋๋งํด์ผ ํฉ๋๋ค. ์ด๋ก ์ธํด ๋๊ท๋ชจ์ "๋ฉ์ธ ์ค๋ ๋" ๋ธ๋ก์ด ๋ฐ์ํ์ฌ ์ธ์ด ์ ํ ์ UI๊ฐ ๋ฉ์ถ๊ฒ ๋ฉ๋๋ค. ์ด๋ ์ ์ธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ Context ์ ๊ณต์๋ฅผ ์ฌ์ฉํ๋)๊ฐ ์ ์ฝํ๋ ๋ฉ๋ชจ๋ฆฌ์ CPU ์ฌ์ดํด์ ์๋ชจํฉ๋๋ค.
React ์ธ์ ๋ค๋ฅธ ํ๋ ์์ํฌ์์๋ ์ ์ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ ์ ์ ์ ์ํ์ธ์.
ํจ์ : ๋ฒค๋ ๋ฝ์ธ(Vendor Lock-in)
๋ฒ์ญ ํค์ ์ถ์ถ ๋๋ ๋ง์ด๊ทธ๋ ์ด์ ์ด ๊ฐ๋ฅํ i18n ์๋ฃจ์ ์ ์ ํํ ๋ ์ฃผ์ํ์ธ์.
์ ์ธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ, ์์ค ์ฝ๋๋ ๋ช ํํ๊ฒ ๋ฒ์ญ ์๋๋ฅผ ํฌํจํฉ๋๋ค: ์ด๊ฒ์ด ๋ฐ๋ก ํค์ด๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ ์ดํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก import๋ง ์ ๋ฐ์ดํธํ๋ฉด ๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ ์ ๊ทผ๋ฒ์์๋ ์์ค ์ฝ๋๊ฐ ๋จ์ํ ์์ด ํ ์คํธ์ผ ์ ์์ผ๋ฉฐ, ๋ฒ์ญ ๋ก์ง์ ํ์ ์ด ์์ต๋๋ค: ๋ชจ๋ ๊ฒ์ด ๋น๋ ๋๊ตฌ ์ค์ ์ ์จ๊ฒจ์ ธ ์์ต๋๋ค. ๋ง์ฝ ํด๋น ํ๋ฌ๊ทธ์ธ์ด ์ ์ง๋ณด์๋์ง ์๊ฑฐ๋ ์๋ฃจ์ ์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด, ๊ผผ์ง ๋ชปํ ์ ์์ต๋๋ค. โejectโํ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ, ์ฝ๋ ๋ด์ ์ฌ์ฉํ ์ ์๋ ํค๊ฐ ์๊ณ , ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํด ๋ชจ๋ ๋ฒ์ญ์ ๋ค์ ์์ฑํด์ผ ํ ์๋ ์์ต๋๋ค.
์ผ๋ถ ์๋ฃจ์ ์ ๋ฒ์ญ ์์ฑ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ๋ ํฉ๋๋ค. ํฌ๋ ๋ง์ด ์์ผ๋ฉด? ๋ฒ์ญ๋ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ๋ ์ข
์ข
ํ
์คํธ๋ฅผ ํด์ํฉ๋๋ค(์: "Hello World" -> x7f2a). ๋ฒ์ญ ํ์ผ์ { "x7f2a": "Hola Mundo" }์ ๊ฐ์ด ๋ณด์
๋๋ค. ํจ์ : ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ "Hello World"๋ฅผ ๋ณด๊ณ ํด๋น ํค๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค. ํ์ง๋ง ๋ฒ์ญ ํ์ผ์ด ํด์(x7f2a)๋ก ๊ฐ๋ ์ฐจ ์๊ธฐ ๋๋ฌธ์ ์ฐพ์ ์ ์์ต๋๋ค.
ํ๋ซํผ ์ข ์์ฑ
์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ๋ฉด ๊ธฐ๋ณธ ํ๋ซํผ์ ์ข ์๋๊ฒ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์ปดํ์ผ๋ฌ๋ ๋ชจ๋ ๋ฒ๋ค๋ฌ(Vite, Turbopack, Metro ๋ฑ)์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ํฅํ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ด๋ ค์์ง ์ ์์ผ๋ฉฐ, ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปค๋ฒํ๊ธฐ ์ํด ์ฌ๋ฌ ์๋ฃจ์ ์ ์ฑํํด์ผ ํ ์๋ ์์ต๋๋ค.
๋ฐ๋ํธ: ์ ์ธ์ ์ ๊ทผ ๋ฐฉ์์ ์ํ
๊ณต์ ํ๊ฒ ๋งํ๋ฉด, ์ ํต์ ์ธ ์ ์ธ์ ๋ฐฉ์๋ ์๋ฒฝํ์ง ์์ต๋๋ค. ์์ฒด์ ์ธ "ํจ์ "์ด ์กด์ฌํฉ๋๋ค.
- ๋ค์์คํ์ด์ค ์ง์ฅ: ์ด๋ค JSON ํ์ผ์ ๋ก๋ํ ์ง ์๋์ผ๋ก ๊ด๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค(
common.json,dashboard.json,footer.json). ํ๋๋ผ๋ ์์ผ๋ฉด ์ฌ์ฉ์๋ ์์ ํค๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค. - ๊ณผ๋ํ ๋ก๋: ์ ์คํ ์ค์ ์์ด ์ด๊ธฐ ๋ก๋ ์ ๋ชจ๋ ํ์ด์ง์ ๋ชจ๋ ๋ฒ์ญ ํค๋ฅผ ์ค์๋ก ๋ถ๋ฌ์ค๋ ์ผ์ด ๋งค์ฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ๋ถํ์ํ๊ฒ ์ปค์ง ์ ์์ต๋๋ค.
- ๋๊ธฐํ ๋ถ์ผ์น: ์ปดํฌ๋ํธ๊ฐ ์ญ์ ๋ ํ์๋ ํด๋น ํค๊ฐ JSON ํ์ผ์ ๋จ์ ์๋ ๊ฒฝ์ฐ๊ฐ ํํฉ๋๋ค. ์ด๋ก ์ธํด ๋ฒ์ญ ํ์ผ์ด ๋ฌดํํ ์ปค์ง๋ฉฐ "์ข๋น ํค"๋ก ๊ฐ๋ ์ฐจ๊ฒ ๋ฉ๋๋ค.
Intlayer์ ์ค๊ฐ ์ง์
์ด๊ฒ์ด ๋ฐ๋ก Intlayer์ ๊ฐ์ ๋๊ตฌ๋ค์ด ํ์ ์ ์๋ํ๋ ์ด์ ์ ๋๋ค. Intlayer๋ ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ๋ ฅํ์ง๋ง ์๋ฌต์ ์ธ ๋ง๋ฒ์ ์ํํ๋ค๋ ์ ์ ์ดํดํฉ๋๋ค.
Intlayer๋ ์ ์ธ์ ์ฝํ ์ธ ๊ด๋ฆฌ์ ์ฅ์ ๊ณผ ๊ฐ๋ฐ ์๊ฐ์ ์ ์ฝํ ์ ์๋ ์ปดํ์ผ๋ฌ ํธํ์ฑ์ ๋ชจ๋ ๋๋ฆด ์ ์๋ ํผํฉ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Intlayer ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ผ๋, Intlayer๋ transform ๋ช
๋ น์ด๋ฅผ ์ ๊ณตํฉ๋๋ค (VSCode ํ์ฅ ๊ธฐ๋ฅ์ ํตํด์๋ ์ ๊ทผ ๊ฐ๋ฅ). ์จ๊ฒจ์ง ๋น๋ ๋จ๊ณ์์ ๋ง๋ฒ์ฒ๋ผ ์ฒ๋ฆฌํ๋ ๋์ , ์ค์ ๋ก ์ปดํฌ๋ํธ ์ฝ๋๋ฅผ ์ฌ์์ฑํ ์ ์์ต๋๋ค. ํ
์คํธ๋ฅผ ์ค์บํ์ฌ ์ฝ๋๋ฒ ์ด์ค ๋ด์์ ๋ช
์์ ์ธ ์ฝํ
์ธ ์ ์ธ์ผ๋ก ๋์ฒดํฉ๋๋ค.
์ด๋ก์จ ๋ ๊ฐ์ง ์ ๊ทผ๋ฒ์ ์ฅ์ ์ ๋ชจ๋ ๋๋ฆด ์ ์์ต๋๋ค:
- ์ธ๋ถํ: ๋ฒ์ญ์ ์ปดํฌ๋ํธ ๊ฐ๊น์ด์ ์ ์งํ์ฌ ๋ชจ๋ํ์ ํธ๋ฆฌ ์์ดํน์ ํฅ์์ํต๋๋ค.
- ์์ ์ฑ: ๋ฒ์ญ์ด ์จ๊ฒจ์ง ๋น๋ ํ์ ๋ง๋ฒ์ด ์๋ ๋ช ์์ ์ธ ์ฝ๋๊ฐ ๋ฉ๋๋ค.
- ๋ฝ์ธ ์์: ์ฝ๋๊ฐ ์ ์ธ์ ๊ตฌ์กฐ๋ก ๋ณํ๋์ด, ํญ ํค๋ฅผ ๋๋ฅด๊ฑฐ๋ IDE์ ์ฝํ์ผ๋ฟ์ ์ฌ์ฉํด ์ฝํ ์ธ ์ ์ธ์ ์ฝ๊ฒ ์์ฑํ ์ ์์ผ๋ฉฐ, webpack ํ๋ฌ๊ทธ์ธ์ ๋ก์ง์ ์จ๊ธฐ์ง ์์ต๋๋ค.
๊ฒฐ๋ก
๊ทธ๋ ๋ค๋ฉด, ์ด๋ค ๋ฐฉ์์ ์ ํํด์ผ ํ ๊น์?
MVP๋ฅผ ๊ตฌ์ถ ์ค์ด๊ฑฐ๋ ๋น ๋ฅด๊ฒ ์งํํ๊ณ ์ถ๋ค๋ฉด: ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ด ์ ํจํ ์ ํ์ ๋๋ค. ๋งค์ฐ ๋น ๋ฅด๊ฒ ์์ ํ ์ ์์ต๋๋ค. ํ์ผ ๊ตฌ์กฐ๋ ํค์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฅ ๋น๋ํ๋ฉด ๋ฉ๋๋ค. ๊ธฐ์ ๋ถ์ฑ๋ "๋ฏธ๋์ ๋น์ "์ด ํด๊ฒฐํ ๋ฌธ์ ์ ๋๋ค.
์ฃผ๋์ด ๊ฐ๋ฐ์์ด๊ฑฐ๋ ์ต์ ํ์ ์ ๊ฒฝ ์ฐ์ง ์๋๋ค๋ฉด: ์๋ ๊ด๋ฆฌ๊ฐ ๊ฐ์ฅ ์ ์ ๋ฐฉ์์ ์ํ๋ค๋ฉด, ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ด ์๋ง๋ ์ต์ ์ ๋๋ค. ํค๋ ๋ฒ์ญ ํ์ผ์ ์ง์ ๋ค๋ฃฐ ํ์ ์์ด ํ ์คํธ๋ง ์์ฑํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๋๋จธ์ง๋ฅผ ์๋ํํฉ๋๋ค. ์ด๋ ์ค์ ๋ ธ๋ ฅ์ ์ค์ด๊ณ ์๋ ๋จ๊ณ์์ ๋ฐ์ํ๋ ์ผ๋ฐ์ ์ธ i18n ์ค์๋ฅผ ๊ฐ์์ํต๋๋ค.
์ด๋ฏธ ์์ฒ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌํฉํ ๋งํด์ผ ํ๋ ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ๊ตญ์ ํํ๋ ๊ฒฝ์ฐ:
์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ฌ๊ธฐ์ ์ค์ฉ์ ์ธ ์ ํ์ด ๋ ์ ์์ต๋๋ค. ์ด๊ธฐ ์ถ์ถ ๋จ๊ณ๋ ์์ฃผ ๋๋ ์๊ฐ์์ ๊ฑธ์น ์์์
์ ์ ์ฝํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Intlayer์ transform ๋ช
๋ น์ด์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์. ์ด ๋๊ตฌ๋ ๋ฌธ์์ด์ ์ถ์ถํ๊ณ ๋ช
์์ ์ธ ์ ์ธ์ ์ฝํ
์ธ ์ ์ธ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ์ธ์ ์ ๊ทผ ๋ฐฉ์์ ์์ ์ฑ๊ณผ ์ด์์ฑ์ ์ ์งํ๋ฉด์ ์๋ํ์ ์๋๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ ๊ฐ์ง ์ฅ์ ์ ๋ชจ๋ ๋๋ฆด ์ ์์ต๋๋ค: ์ฅ๊ธฐ์ ์ธ ์ํคํ
์ฒ ๋ถ์ฑ ์์ด ๋น ๋ฅธ ์ด๊ธฐ ๋ง์ด๊ทธ๋ ์ด์
.
์ ๋ฌธ์ ์ด๊ณ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ: ๋ง๋ฒ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์ข์ง ์์ต๋๋ค. ์ ์ด๊ฐ ํ์ํฉ๋๋ค.
- ๋ฐฑ์๋์์ ์ค๋ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
- ์ ์ฌ์ ์ฅ์น์์์ ์ฑ๋ฅ์ ๋ณด์ฅํด์ผ ํฉ๋๋ค (ํ ํญ๋ฐ ๋ฐฉ์ง).
- ํน์ ๋น๋ ๋๊ตฌ์ ์์ํ ์ข ์๋์ง ์๋๋ก ํด์ผ ํฉ๋๋ค.
์ ๋ฌธ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ์ ์ธ์ ์ฝํ ์ธ ๊ด๋ฆฌ(Intlayer ๋๋ ๊ฒ์ฆ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์)๊ฐ ์ฌ์ ํ ์ต๊ณ ์ ํ์ค์ ๋๋ค. ์ด๋ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ํคํ ์ฒ๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํ๋ ๋ฅ๋ ฅ์ด "๋ธ๋๋ฐ์ค" ์ปดํ์ผ๋ฌ๊ฐ ์๋๋ฅผ ์ถ์ธกํ๋ ๊ฒ์ ์์กดํ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
๋๊ธ
์์ง ๋๊ธ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ก ์๊ฒฌ์ ๋๋ ๋ณด์ธ์.
