Nayeon.Zip

WIL

๋ฐฐ์šฐ๊ณ  ๊ณ ๋ฏผํ•œ ๊ฒƒ๋“ค์„ ๊ธฐ๋กํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์ž…๋‹ˆ๋‹ค.

Books

์ฝ์€ ์ฑ…๊ณผ ํ•™์Šต ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•œ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.

๋‹ค๊ตญ์–ด ๋ฒˆ์—ญ ํ‚ค ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ ํ•˜๊ธฐ

๋‹ค๊ตญ์–ด ๋ฒˆ์—ญ์„ ์šด์˜ํ•˜๋ฉด์„œ ๋ฒˆ์—ญ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ผ์ด ์ ์  ์–ด๋ ค์›Œ์กŒ๋‹ค. ์„œ๋น„์Šค์—์„œ๋Š” ํ•œ๊ตญ์–ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ผ๋ณธ์–ด์™€ ์˜์–ด ๋ฒˆ์—ญ์„ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ๋ฒˆ์—ญ ๋ฌธ๊ตฌ๋Š” Google Sheet์—์„œ ๊ด€๋ฆฌํ–ˆ๊ณ , ์‹ค์ œ ์ฝ”๋“œ์—์„œ๋Š” react-i18next์™€ ์–ธ์–ด๋ณ„ JSON ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.
์ฒ˜์Œ์—๋Š” ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์„ ๊ทธ๋Œ€๋กœ i18n ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šด์˜์ด ์ด์–ด์งˆ์ˆ˜๋ก ์ด ๊ตฌ์กฐ๋งŒ์œผ๋กœ๋Š” ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šด ์ผ€์ด์Šค๊ฐ€ ๋Š˜์–ด๋‚ฌ๋‹ค.
๋จผ์ € ๋ฌธ๋งฅ์— ๋”ฐ๋ผ ๋ฒˆ์—ญ์ด ๋‹ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.
๊ฐ™์€ ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์ด๋ผ๋„ ํ™”๋ฉด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ฒˆ์—ญ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ๊ตญ์–ด๋กœ๋Š” ๊ฐ™์€ ํ™•์ธ์ด์–ด๋„, ์–ด๋–ค ํ™”๋ฉด์—์„œ๋Š” ๋‹จ์ˆœํžˆ ๋ชจ๋‹ฌ์„ ๋‹ซ๋Š” ์˜๋ฏธ์ผ ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ ํ™”๋ฉด์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ด ์ฐจ์ด๊ฐ€ ํ‚ค ๊ตฌ์กฐ์—์„œ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค. ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์„ ๊ทธ๋Œ€๋กœ i18n ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์—์„œ๋Š” ๋‘˜ ๋‹ค ๊ฐ™์€ ํ™•์ธ ํ‚ค๋ฅผ ๋ฐ”๋ผ๋ณธ๋‹ค. ๋ฐ˜๋ฉด ์‹œํŠธ์—์„œ๋Š” ํ™”๋ฉด๋ณ„๋กœ ๋‹ค๋ฅธ ๋ฒˆ์—ญ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๊ฐœ๋ฐœ ์ž…์žฅ์—์„œ๋Š” ์ด ๋ณ€๊ฒฝ์ด ๊ธฐ์กด ํ™•์ธ ํ‚ค๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ธ์ง€, ํŠน์ • ํ™”๋ฉด์„ ์œ„ํ•œ ๋ณ„๋„ ํ‚ค๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ธ์ง€ ๋ฐ”๋กœ ํŒ๋‹จํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค.
๊ฒฐ๊ตญ ๊ฐ™์€ ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์ด๋ผ๋„ ๋ฒˆ์—ญ๊ฐ’์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ์ฐจ์ด๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ถ”์ ํ•  ๊ธฐ์ค€์ด ๋ถ€์กฑํ–ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ๋ฒˆ์—ญ์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋ฌธ๊ตฌ๋ฅผ ๊ธฐ์กด ํ‚ค์— ๋ฐ˜์˜ํ•ด๋„ ๋˜๋Š”์ง€, ๋ณ„๋„ ํ‚ค๋กœ ๋‚˜๋ˆ ์•ผ ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ–ˆ๋‹ค.
์‹œํŠธ์™€ JSON์˜ ํ‘œํ˜„ ๋ฐฉ์‹ ์ฐจ์ด๋„ ์žˆ์—ˆ๋‹ค.
์‹œํŠธ์—์„œ๋Š” ์ค„๋ฐ”๊ฟˆ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๋ฌธ๊ตฌ๊ฐ€, JSON์—์„œ๋Š” i18next์˜ <1/>, <2> ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ํฌํ•จํ•œ ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ๋„ ํ–ˆ๋‹ค. ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ์€ ๊ฐ™์ง€๋งŒ, ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ๋Š” ๋‹ค๋ฅธ ๊ฐ’์ฒ˜๋Ÿผ ๋ณด์˜€๋‹ค. ๋˜ํ•œ ์‹œํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉด์„œ ๊ธฐ์กด์— ๊ฐœ๋ฐœํŒ€๊ณผ ๋งž์ถฐ์ ธ ์žˆ๋˜ ๋ฌธ๊ตฌ ๊ตฌ์กฐ๋„ ์ผ๋ถ€ ๋‹ฌ๋ผ์กŒ๋‹ค. ๊ธฐ์กด์—๋Š” ํ•˜๋‚˜์˜ JSON ํ‚ค์™€ ์‹œํŠธ์˜ ํ•œ ํ–‰์ด ์–ด๋А ์ •๋„ ๋Œ€์‘๋˜๋Š” ๊ตฌ์กฐ์˜€์ง€๋งŒ, ์‹œํŠธ๊ฐ€ ๊ฐœํŽธ๋˜๋ฉด์„œ ํ™”๋ฉด์ƒ ์ค„์ด ๋‚˜๋‰˜๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์—ฌ๋Ÿฌ ํ–‰์œผ๋กœ ๋ถ„๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒผ๋‹ค.
๊ฒฐ๊ตญ ๊ณ ๋ฏผํ•ด์•ผ ํ•  ๋ฌธ์ œ๋Š” ์„ธ ๊ฐ€์ง€์˜€๋‹ค.

๊ฐ™์€ ํ•œ๊ตญ์–ด ํ‚ค๋ฅผ ๊ณ„์† ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”๊ฐ€?
์‹œํŠธ์™€ JSON์ด ์‹ค์ œ๋กœ ๊ฐ™์€ ์ƒํƒœ์ธ์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•  ๊ฒƒ์ธ๊ฐ€?
๋ฌธ๋งฅ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๋ฒˆ์—ญ์„ ์–ด๋–ป๊ฒŒ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€?

์ด ๋ฌธ์ œ๋“ค์ด ๊ฒน์น˜๋ฉด์„œ ๋‹ค๊ตญ์–ด ๋ฌธ๊ตฌ ๊ด€๋ฆฌ๊ฐ€ ์ ์  ๋ถˆ์•ˆ์ •ํ•ด์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—๋Š” ๋ฒˆ์—ญ ํ‚ค์™€ JSON ๊ตฌ์กฐ๋ฅผ ํ•œ ๋ฒˆ ์•ˆ์ •ํ™”ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฒˆ์—ญ ๊ด€๋ฆฌ ํ๋ฆ„ ์ „์ฒด๋ฅผ ๋ฐ”๊พธ๊ธฐ๋ณด๋‹ค๋Š”, ํ˜„์žฌ ๊ตฌ์กฐ ์•ˆ์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ํ™•์ธ ๋น„์šฉ์„ ์ค„์ด๊ณ  ๋ฌธ๋งฅ๋ณ„ ํ‚ค ๋ถ„๋ฆฌ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ๋จผ์ € ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค.

์™œ ์™„์ „ ์ž๋™ํ™”๋ถ€ํ„ฐ ํ•˜์ง€ ์•Š์•˜๋‚˜

์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹œํŠธ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ JSON์„ ์ž๋™ ๊ฐฑ์‹ ํ•˜๊ณ , ์ฝ”๋“œ์˜ t() ํ˜ธ์ถœ๋„ ์ž๋™์œผ๋กœ ๋ฐ”๊พธ๊ณ , ์ƒˆ๋กœ ํ•„์š”ํ•œ ๋ฒˆ์—ญ๊ฐ’๊นŒ์ง€ ์ž๋™์œผ๋กœ ์ฑ„์šฐ๋Š” ๋ฐฉ์‹์ด๋‹ค.
ํ•˜์ง€๋งŒ ์ง€๊ธˆ ๋‹น์žฅ ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๋กœ ๊ฐ€๊ธฐ๋Š” ์–ด๋ ค์› ๋Š”๋ฐ, ์šฐ์„  ์ผ์ •์ƒ ์—ฌ์œ ๊ฐ€ ๋งŽ์ง€ ์•Š์•˜๋‹ค. ๋ฒˆ์—ญ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๋Š” ์ด๋ฏธ ์ž‘์—… ๊ณผ์ •์—์„œ ๊ณ„์† ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ๋‹น์žฅ PR ๋ฆฌ๋ทฐ๋‚˜ ๋ฐฐํฌ ์ „ ํ™•์ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ–ˆ๋‹ค.
๋˜ํ•œ ๋ฒˆ์—ญ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํŒ€๊ณผ์˜ ์ผํ•˜๋Š” ๋ฐฉ์‹๋„ ํ•จ๊ป˜ ์–ฝํ˜€ ์žˆ์—ˆ๋‹ค. Google Sheet๋ฅผ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ๊ด€๋ฆฌํ• ์ง€, ๊ฐ™์€ ํ•œ๊ตญ์–ด์— ๋‹ค๋ฅธ ๋ฒˆ์—ญ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์–ด๋–ค ๊ทœ์น™์œผ๋กœ ๊ด€๋ฆฌํ• ์ง€ ๋“ฑ์€ ๋‹ค๋ฅธ ํŒ€๊ณผ๋„ ๋…ผ์˜๊ฐ€ ํ•„์š”ํ•œ ์˜์—ญ์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋…ผ์˜๋ฅผ ์œ„ํ•œ ์ผ์ •์„ ๋‹น์žฅ ์žก๊ธฐ๋„ ์–ด๋ ค์› ๋‹ค.
๊ทธ๋ ‡๋‹ค๊ณ  ๋…ผ์˜๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ์กด ๋ฐฉ์‹๋Œ€๋กœ ๊ณ„์† ์ˆ˜๋™ ํ™•์ธ์„ ํ•˜๊ธฐ์—๋Š” ๋น„ํšจ์œจ์ด ์ปธ๋‹ค. ๊ทธ๋ž˜์„œ ์‹œํŠธ ์šด์˜ ๋ฐฉ์‹ ์ž์ฒด๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํŒ€์˜ ์ž‘์—… ๋ฐฉ์‹์„ ๊ฐ•์ œํ•˜๊ธฐ๋ณด๋‹ค๋Š”, ์ง€๊ธˆ ๋‚ด๊ฐ€ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ๋ถ€ํ„ฐ ์ •๋ฆฌํ•ด ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. 
๊ธฐ์ค€์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •ํ–ˆ๋‹ค.

- ์ž๋™์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ์ž๋™ํ™”ํ•œ๋‹ค.
- ์‚ฌ๋žŒ์ด ํŒ๋‹จํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์€ ๋„๊ตฌ๊ฐ€ ํ›„๋ณด๋งŒ ์ œ๊ณตํ•œ๋‹ค.
- ๊ฒ€์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ฐ’์€ ์กฐ์šฉํžˆ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ํ‘œ์‹œํ•œ๋‹ค.
- ๊ธฐ์กด ํ˜‘์—… ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.

์ด๋ฒˆ ์ž‘์—…์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์™„์ „ ์ž๋™ํ™”๊ฐ€ ์•„๋‹ˆ๋ผ, ์šด์˜ ์ค‘์ธ ๊ตฌ์กฐ ์•ˆ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐ˜์ž๋™ ๋„๊ตฌ๋ฅผ ๋ชฉํ‘œ๋กœ ํ–ˆ๋‹ค.

๋ฌธ์ œ 1. ๊ฐ™์€ ํ•œ๊ตญ์–ด ํ‚ค๊ฐ€ ๋ฌธ๋งฅ์„ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค

๊ฐ€์žฅ ๋จผ์ € ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์€ ๊ฐ™์€ ํ•œ๊ตญ์–ด ํ‚ค๊ฐ€ ์—ฌ๋Ÿฌ ๋ฌธ๋งฅ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์„ ๊ทธ๋Œ€๋กœ i18n ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜์Œ์—๋Š” ๊ด€๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค.

{
  "ํ™•์ธ": "OK"
}

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

{ํ•œ๊ตญ์–ด}_{context}
{namespace}:{ํ•œ๊ตญ์–ด}
{ํ•œ๊ตญ์–ด}-{ComponentName}
{ํ•œ๊ตญ์–ด}-{screen}-{๊ธฐ๋Šฅ๋ช…}

i18next์˜ context ๊ธฐ๋Šฅ์„ ์“ฐ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์—ˆ๊ณ , namespace๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์กด ์ฝ”๋“œ ๊ตฌ์กฐ์™€ ๋งž์ง€ ์•Š๊ฑฐ๋‚˜, ์ง€๊ธˆ ๋‹น์žฅ ์ ์šฉํ•˜๊ธฐ์—๋Š” ๋น„์šฉ์ด ์ปธ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์„ suffix๋กœ ๋ถ™์ด๋Š” ๋ฐฉ์‹๋„ ๊ดœ์ฐฎ์•„ ๋ณด์˜€๋‹ค.

ํ™•์ธ-ConfirmModal
๋‹ค์‹œ์‹œ๋„-ErrorModal

๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ์‹œํŠธ์™€ ๋งž์ถฐ๋ณด๋ฉด ์• ๋งคํ•œ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. ๋ฒˆ์—ญ ์‹œํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ํ™”๋ฉด ๋‹จ์œ„๋กœ ์ •๋ฆฌ๋˜์–ด ์žˆ์—ˆ๋‹ค. ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ํ™”๋ฉด์—์„œ ์žฌ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ๊ณ , ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„๋งŒ์œผ๋กœ๋Š” ๋ฒˆ์—ญ ๋ฌธ๋งฅ์„ ์ถฉ๋ถ„ํžˆ ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค.
์ด ๊ณ ๋ฏผ์„ ์ •๋ฆฌํ•ด์„œ ํŒ€์›์—๊ฒŒ ์ปจ๋ฒค์…˜ ๋…ผ์˜๋ฅผ ์š”์ฒญํ–ˆ๊ณ , ์ตœ์ข…์ ์œผ๋กœ๋Š” ํ™”๋ฉด๊ณผ ๊ธฐ๋Šฅ๋ช…์„ ํ•จ๊ป˜ ๋ถ™์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •ํ–ˆ๋‹ค.

{ํ•œ๊ตญ์–ด}-{screen}-{๊ธฐ๋Šฅ๋ช…}

์˜ˆ๋ฅผ ๋“ค๋ฉด ์ด๋Ÿฐ ํ˜•ํƒœ๋‹ค.

ํ™•์ธ-์„ค์ •-์ €์žฅ๋ฒ„ํŠผ
ํ™•์ธ-์•Œ๋ฆผ-์ฝ์Œ์ฒ˜๋ฆฌ

์กฐ๊ธˆ ๊ธธ์–ด์ง€๊ธด ํ•˜์ง€๋งŒ, ์‹œํŠธ์˜ screen ๊ฐ’๊ณผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์‰ฝ๊ณ  ๋‚˜์ค‘์— ๋ดค์„ ๋•Œ ์–ด๋–ค ํ™”๋ฉด์˜ ์–ด๋–ค ๊ธฐ๋Šฅ์—์„œ ์“ฐ๋Š” ๋ฌธ๊ตฌ์ธ์ง€ ์ถ”์ ํ•˜๊ธฐ ์‰ฝ๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค.

๋ฌธ์ œ 2. ์‹œํŠธ์™€ JSON์„ ์‚ฌ๋žŒ ๋ˆˆ์œผ๋กœ ๋น„๊ตํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค

๋ฌธ๋งฅ๋ณ„ ํ‚ค ๋ถ„๋ฆฌ๋ฅผ ํ•˜๋ ค๋ฉด, ๋จผ์ € ํ˜„์žฌ ์‹œํŠธ์™€ JSON์ด ์–ด๋–ค ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ–ˆ๋‹ค. ๋ฒˆ์—ญ์˜ ๊ธฐ์ค€์€ Google Sheet์˜€์ง€๋งŒ, ์‹ค์ œ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์€ JSON ํŒŒ์ผ์— ์žˆ์—ˆ๋‹ค. ๋‘ ๊ฐ’์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๊ฒฐ๊ตญ ์‚ฌ๋žŒ์ด ์ง์ ‘ ๋น„๊ตํ•ด์•ผ ํ–ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‹จ์ˆœํžˆ ์–‘์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ๋งŒ์€ ์•„๋‹ˆ์—ˆ๋‹ค. ๊ฐ™์€ ์˜๋ฏธ์˜ ๋ฌธ์žฅ์ด๋ผ๋„ ํ‘œํ˜„ ๋ฐฉ์‹์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹œํŠธ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž.

์ฒซ ๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค.

JSON์—๋Š” ๊ฐ™์€ ๋ฌธ์žฅ์ด ์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ๋“ค์–ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. 

{
  "์•ˆ๋‚ด ๋ฌธ๊ตฌ": "์ฒซ ๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค.<1/>๋‘ ๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค."
}

ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ์€ ๊ฐ™์ง€๋งŒ, ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ๋Š” ๋‹ค๋ฅธ ๊ฐ’์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹จ์ˆœ ๋น„๊ต๋งŒ์œผ๋กœ๋Š” ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ํ•ญ๋ชฉ๊นŒ์ง€ ๋ถˆ์ผ์น˜๋กœ ์žกํ˜”๊ณ , ์ด๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ๋จผ์ € ํ•„์š”ํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์‹œํŠธ์˜ ๋ฒˆ์—ญ๊ฐ’๊ณผ JSON์˜ ๋ฒˆ์—ญ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋น„๊ตํ–ˆ๋‹ค. ์˜ˆ์ƒ๋Œ€๋กœ ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๊ฐ’๋“ค์ด ๋ถˆ์ผ์น˜๋กœ ๋งŽ์ด ์žกํ˜”๋‹ค. ๊ทธ๋ž˜์„œ ๋น„๊ต ์ „์— ๋ฌธ์ž์—ด์„ ์ •๊ทœํ™”ํ–ˆ๋‹ค.

function stripTags(s) {
  return String(s || '')
    .replace(/<[^>]*>/g, '')
    .replace(/\s+/g, '');
}

์ด ํ•จ์ˆ˜๋Š” HTML์ด๋‚˜ i18next ํƒœ๊ทธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์ค„๋ฐ”๊ฟˆ์„ ํฌํ•จํ•œ ๊ณต๋ฐฑ๋„ ์ œ๊ฑฐํ•œ๋‹ค. ์ด ๋„๊ตฌ์˜ ๋ชฉ์ ์€ ์ฝ”๋“œ ํฌ๋งท์„ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์‹œํŠธ์˜ ๋ฒˆ์—ญ ๋‚ด์šฉ๊ณผ JSON์˜ ๋ฒˆ์—ญ ๋‚ด์šฉ์ด ๊ฐ™์€์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํƒœ๊ทธ์™€ ๊ณต๋ฐฑ ์ฐจ์ด๋Š” ๋น„๊ต์—์„œ ์ œ์™ธํ–ˆ๋‹ค.

๋‹จ์ˆœ ๋ถˆ์ผ์น˜ ๋ชฉ๋ก์œผ๋กœ๋Š” ๋ถ€์กฑํ–ˆ๋‹ค

์ฒ˜์Œ์—๋Š” ๋ถˆ์ผ์น˜ ํ•ญ๋ชฉ์„ ํ•˜๋‚˜์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด์—ฌ์คฌ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ง์ ‘ ํ™•์ธํ•ด ๋ณด๋‹ˆ ๋ถˆ์ผ์น˜์—๋„ ์ข…๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋‹ค. ์–ด๋–ค ๊ฐ’์€ JSON ๊ฐ’๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋๋‚ฌ๋‹ค. ๋ฐ˜๋ฉด ์–ด๋–ค ๊ฐ’์€ ๊ฐ™์€ ํ•œ๊ตญ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์–ด์„œ, ๋‹จ์ˆœํžˆ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ฉด ๋‹ค๋ฅธ ํ™”๋ฉด์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฆฌํฌํŠธ๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค.

- ํ‚ค ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฐ’
- ์‹œํŠธ์—๋Š” ์žˆ์ง€๋งŒ JSON์—๋Š” ์—†๋Š” ๊ฐ’
- ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฐ’ / ์‚ฌ์šฉ ์œ„์น˜ 1๊ฐœ
- ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฐ’ / ์‚ฌ์šฉ ์œ„์น˜ ์—ฌ๋Ÿฌ ๊ฐœ
- ์‹œํŠธ์—์„œ ์—ฌ๋Ÿฌ ํ–‰์œผ๋กœ ๋‚˜๋‰˜์–ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฐ’

์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ„๋‹ˆ ์–ด๋–ค ์œ ํ˜•์˜ ๋ฌธ์ œ์ธ์ง€ ๋จผ์ € ๋ณด๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํŠนํžˆ ๊ฐ™์€ ํ•œ๊ตญ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ์œ„์น˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋”ฐ๋กœ ๋ด์•ผ ํ–ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๋ฒˆ์—ญ๊ฐ’๋งŒ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ‚ค ์ž์ฒด๋ฅผ ํ™”๋ฉด์ด๋‚˜ ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๋Š” ์ž‘์—…์ด ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

check, plan, apply๋กœ ๋‹จ๊ณ„๋ฅผ ๋‚˜๋ˆด๋‹ค.

๋„๊ตฌ๋Š” ํฌ๊ฒŒ ์„ธ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค.

pnpm i18n:check
pnpm i18n:plan
pnpm i18n:apply

๊ฐ ๋ช…๋ น์–ด์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

check: ์‹œํŠธ์™€ JSON์˜ ์ฐจ์ด๋ฅผ ํ™•์ธํ•œ๋‹ค.
plan: ํ‚ค ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ํ•ญ๋ชฉ์˜ ํ›„๋ณด๋ฅผ ๋งŒ๋“ ๋‹ค.
apply: ์‚ฌ๋žŒ์ด ํ™•์ •ํ•œ ๋งคํ•‘๋งŒ ์ฝ”๋“œ์™€ JSON์— ์ ์šฉํ•œ๋‹ค.

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

i18n:check

i18n:check๋Š” Google Sheet์™€ JSON ํŒŒ์ผ์„ ๋น„๊ตํ•˜๋Š” ๋ช…๋ น์–ด๋‹ค. Google Sheet์˜ CSV ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์–ธ์–ด๋ณ„ JSON๊ณผ ๋น„๊ตํ•œ๋‹ค. ๋น„๊ต ๊ณผ์ •์—์„œ๋Š” ํƒœ๊ทธ์™€ ๊ณต๋ฐฑ์„ ์ •๊ทœํ™”ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์œ ํ˜•๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ๋ฆฌํฌํŠธํ•œ๋‹ค. ์‹œํŠธ ๊ตฌ์กฐ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉด์„œ ์ƒˆ๋กœ ์ƒ๊ธด ์ฐจ์ด๋„ ์žˆ์—ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ๊ฐœ๋ฐœํŒ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” JSON ํ‚ค์™€ ์‹œํŠธ์˜ ๋ฌธ๊ตฌ ํ–‰์ด ์–ด๋А ์ •๋„ ๋งž์ถฐ์ ธ ์žˆ์—ˆ๋Š”๋ฐ, ์‹œํŠธ๊ฐ€ ๊ฐœํŽธ๋˜๋ฉด์„œ ํ™”๋ฉด์ƒ ์ค„์ด ๋‚˜๋‰˜๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์‹œํŠธ์—์„œ๋„ ์—ฌ๋Ÿฌ ํ–‰์œผ๋กœ ๋ถ„๋ฆฌ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ฐœ๋ฐœ ์ฝ”๋“œ์—์„œ๋Š” ์—ฌ์ „ํžˆ ํ•˜๋‚˜์˜ t() ํ‚ค๋กœ ๋ฌถ์–ด ์“ฐ๊ณ  ์žˆ๋Š”๋ฐ, ์‹œํŠธ์—์„œ๋Š” ์—ฌ๋Ÿฌ ํ–‰์œผ๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋‹จ์ˆœ ๋น„๊ต๋งŒ ํ•˜๋ฉด JSON์—๋Š” ์žˆ๋Š”๋ฐ ์‹œํŠธ์—๋Š” ์—†๋Š” ๊ฐ’์ฒ˜๋Ÿผ ์žกํ˜”๋‹ค. ์ด ์ผ€์ด์Šค๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๊ฐ™์€ screen/property ๊ทธ๋ฃน ์•ˆ์—์„œ ์—ฐ์†๋œ ํ–‰์„ ์ด์–ด ๋ถ™์—ฌ ๋น„๊ตํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

for (let start = 0; start < rows.length; start++) {
  let acc = '';

  for (let len = 1; len <= MERGE_WINDOW_MAX && start + len <= rows.length; len++) {
    acc += normalizeForMatch(rows[start + len - 1].ko);

    if (len === 1) continue;
    if (acc.length > targetNorm.length) break;

    if (acc === targetNorm) {
      candidates.push({
        window: rows.slice(start, start + len),
      });
      break;
    }
  }
}

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

i18n:plan

i18n:plan์€ ํ‚ค ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ํ•ญ๋ชฉ์„ ์ฐพ์•„์„œ ๋งคํ•‘ ์ดˆ์•ˆ์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๋‹ค.
ํ๋ฆ„์€ ์ด๋ ‡๋‹ค.

1. ์‹œํŠธ์—์„œ ๊ฐ™์€ ํ•œ๊ตญ์–ด์ง€๋งŒ ๋ฒˆ์—ญ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ํ•ญ๋ชฉ์„ ์ฐพ๋Š”๋‹ค.
2. ์ฝ”๋“œ์—์„œ ํ•ด๋‹น ํ•œ๊ตญ์–ด ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋œ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค.
3. ์‚ฌ์šฉ ์œ„์น˜์™€ screen ํ›„๋ณด๋ฅผ CSV๋กœ ์ถœ๋ ฅํ•œ๋‹ค.
4. ์‚ฌ๋žŒ์ด ๊ธฐ๋Šฅ๋ช…์„ ์ฑ„์šฐ๊ณ  action์„ apply๋กœ ๋ฐ”๊พผ๋‹ค.

๋‹ค๋งŒ ๋„๊ตฌ๊ฐ€ ์ตœ์ข… ํ‚ค ์ด๋ฆ„๊นŒ์ง€ ๊ฒฐ์ •ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค. ์‚ฌ์šฉ ์œ„์น˜์™€ screen ํ›„๋ณด๋งŒ ์ œ๊ณตํ•˜๊ณ , ์–ด๋–ค ๊ธฐ๋Šฅ๋ช…์œผ๋กœ ๋‚˜๋ˆŒ์ง€๋Š” ์‚ฌ๋žŒ์ด ๊ฒฐ์ •ํ•˜๋„๋ก ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งคํ•‘ ํŒŒ์ผ ํ˜•์‹์€ CSV๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. UTF-8 BOM์„ ๋ถ™์ด๊ณ , VSCode์—์„œ CSV๋ฅผ ํ‘œ์ฒ˜๋Ÿผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ฆฌํ–ˆ๋‹ค.

i18n:apply

i18n:apply๋Š” ์‚ฌ๋žŒ์ด ํŽธ์ง‘ํ•œ CSV๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹ค์ œ ์ฝ”๋“œ์™€ JSON์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด๋‹ค. CSV์—์„œ action=apply๋กœ ํ‘œ์‹œํ•œ ํ–‰๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ ๋งคํ•‘์ด ์žˆ๋‹ค๋ฉด, 

ko,screen,function_name,action
ํ™•์ธ,์„ค์ •,์ €์žฅ๋ฒ„ํŠผ,apply

๊ธฐ์กด ์ฝ”๋“œ๋Š”

t('ํ™•์ธ')

์—์„œ

t('ํ™•์ธ-์„ค์ •-์ €์žฅ๋ฒ„ํŠผ')

๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

์ƒˆ๋กœ ๋งŒ๋“  ๋ฒˆ์—ญ๊ฐ’์—๋Š” ๊ฒ€์ˆ˜ ๋งˆ์ปค๋ฅผ ๋ถ™์˜€๋‹ค.

ํ‚ค๋ฅผ ๋‚˜๋ˆ„๋ฉด ์ƒˆ๋กœ์šด ํ‚ค๊ฐ€ ์ƒ๊ธด๋‹ค. ๋ฌธ์ œ๋Š” ์ƒˆ ํ‚ค์˜ ์ผ๋ณธ์–ด์™€ ์˜์–ด ๋ฒˆ์—ญ๊ฐ’์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์€ ๊ธฐ์กด ํ‚ค์˜ ๋ฒˆ์—ญ๊ฐ’์„ ๋ณต์ œํ•ด์„œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. 

{
  "ํ™•์ธ": "OK",
  "ํ™•์ธ-์„ค์ •-์ €์žฅ๋ฒ„ํŠผ": "OK",
  "ํ™•์ธ-์•Œ๋ฆผ-์ฝ์Œ์ฒ˜๋ฆฌ": "OK"
}

ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋‘ ์ƒˆ ํ‚ค๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒˆ์—ญ์„ ๊ฐ€์ ธ์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ธฐ์กด ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•˜๋ฉด ๋นŒ๋“œ๋Š” ํ†ต๊ณผํ•˜์ง€๋งŒ, ์ž˜๋ชป๋œ ๋ฒˆ์—ญ์ด ๊ฒ€์ˆ˜ ์—†์ด ๋‚จ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ์ž๋™์œผ๋กœ ๋ณต์ œ๋œ ja/en ๊ฐ’์—๋Š” ๊ฒ€์ˆ˜ ๋งˆ์ปค๋ฅผ ๋ถ™์˜€๋‹ค.

const REVIEW_MARK = ' ๐Ÿ’ฅ[ํ™•์ธํ•„์š”]';

if (lang !== 'ko' && typeof baseVal === 'string') {
  newVal = baseVal.includes(REVIEW_MARK)
    ? baseVal
    : baseVal + REVIEW_MARK;
}

์˜ˆ๋ฅผ ๋“ค๋ฉด ์ด๋Ÿฐ ์‹์ด๋‹ค.

{
  "ํ™•์ธ-์•Œ๋ฆผ-์ฝ์Œ์ฒ˜๋ฆฌ": "OK ๐Ÿ’ฅ[ํ™•์ธํ•„์š”]"
}

์ด ๋งˆ์ปค๋Š” ํ™”๋ฉด์— ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋œ๋‹ค. ๋˜ํ•œ ๐Ÿ’ฅ[ํ™•์ธํ•„์š”]๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์•„์ง ํ™•์ธํ•˜์ง€ ์•Š์€ ํ‚ค๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฒˆ์—ญ ๊ฒ€์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด ์‚ฌ๋žŒ์ด ์ •ํ™•ํ•œ ๋ฒˆ์—ญ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๋ฉด์„œ ๋งˆ์ปค๋ฅผ ์ œ๊ฑฐํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

์ ์šฉ ํ›„ ๋‹ฌ๋ผ์ง„ ์ 

์ด ์ž‘์—… ์ดํ›„์—๋Š” ๋ฒˆ์—ญ ํ‚ค๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์กŒ๋‹ค. ์ด์ „์—๋Š” ์‹œํŠธ์™€ JSON์„ ์ง์ ‘ ์—ด๊ณ  ์‚ฌ๋žŒ์ด ๋น„๊ตํ•ด์•ผ ํ–ˆ๋‹ค. ์ด์ œ๋Š” `i18n:check` ๊ฒฐ๊ณผ๋ฅผ ๋จผ์ € ๋ณด๊ณ , ์‹ค์ œ๋กœ ํ™•์ธํ•ด์•ผ ํ•  ํ•ญ๋ชฉ์„ ์ขํž ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ฐ™์€ ํ•œ๊ตญ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๋ฌธ๋งฅ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋„, ์–ด๋–ค ๋ฌธ๊ตฌ๊ฐ€ ์—ฌ๋Ÿฌ ํ™”๋ฉด์ด๋‚˜ ๊ธฐ๋Šฅ์—์„œ ์“ฐ์ด๊ณ  ์žˆ๋Š”์ง€ ๋จผ์ € ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ดํ›„ ๊ธฐ์ค€ ์—†์ด suffix๋ฅผ ๋ถ™์ด๋Š” ๋Œ€์‹ , ํ™”๋ฉด๊ณผ ๊ธฐ๋Šฅ๋ช…์„ ๊ธฐ์ค€์œผ๋กœ ํ‚ค๋ฅผ ๋ถ„๋ฆฌํ–ˆ๋‹ค. ๋งคํ•‘์€ CSV์—์„œ ํ™•์ธํ•˜๊ณ  ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค. 

{ํ•œ๊ตญ์–ด}-{screen}-{๊ธฐ๋Šฅ๋ช…}

๋˜ํ•œ ํ‚ค ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋„ ํ•œ ๋ฒˆ์— ์ฝ”๋“œ์™€ JSON์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, plan โ†’ ์‚ฌ๋žŒ์ด ํ™•์ธ โ†’ apply ํ๋ฆ„์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

ํšŒ๊ณ 

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