์ฑ์ ์ถ์ํ ๋๋ง๋ค ๊ฐ์ฅ ๊ท์ฐฎ์๋ ๊ฒ ๋ฆด๋ฆฌ์ฆ ๋ ธํธ ๋ฒ์ญ์ด์๋ค. KOOTD๋ฅผ ์ถ์ํ ๋ ํ๊ตญ์ด, ์์ด, ์ผ๋ณธ์ด๋ก ๊ฐ๊ฐ ๋ฒ์ญํด์ผ ํ๋๋ฐ, ๋งค๋ฒ ๋ฒ์ญ๊ธฐ ์ฌ์ดํธ์์ ํ๋์ฉ ๋ฒ์ญํ๊ณ ํ์์ ๋ง๊ฒ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ๊ฒ ๋๋ฌด ๋ฒ๊ฑฐ๋ก์ ๋ค.
์ ๋ง๋ค์๋?
์ฒ์์๋ ๊ทธ๋ฅ ์ฐธ๊ณ ๊ฒฌ๋๊ณ ์์๋๋ฐ, ์ฑ ์ ๋ฐ์ดํธํ ๋๋ง๋ค ๋๊ฐ์ ์์ ์ ๋ฐ๋ณตํ๋ ๊ฒ ๋๋ฌด ๋นํจ์จ์ ์ด์๋ค.
๋ค๋ฅธ ๋ฆด๋ฆฌ์ฆ ๋ ธํธ ์์ฑ๊ธฐ๋ค๋ ์ฐพ์๋ดค๋๋ฐ ๋๋ถ๋ถ ๋ก๊ทธ์ธํด์ผ ํ๊ฑฐ๋ ๋ฌด๋ฃ ํ ๋น๋์ด ์ ํ์ ์ด์๋ค. ๊ทธ๋ฅ ๋ด๊ฐ ์ง์ ๋ง๋๋ ๊ฒ ๋์ ๊ฒ ๊ฐ์๋ค.
์ด๋ป๊ฒ ๋ง๋ค์๋?
1๋จ๊ณ: ๊ธฐ๋ณธ ๋ฒ์ญ ๊ธฐ๋ฅ
๋จผ์ Google ๋ฒ์ญ API๋ฅผ ์ฌ์ฉํด์ ๋ฒ์ญ ๊ธฐ๋ฅ๋ถํฐ ๋ง๋ค์๋ค. ํด๋ผ์ด์ธํธ์์ ์ง์ ํธ์ถํ๋ฉด CORS ์๋ฌ๊ฐ ๋์ Next.js API Route๋ฅผ ๋ง๋ค์ด์ ์๋ฒ์์ ๋ฒ์ญํ๋๋ก ํ๋ค.
// pages/api/translate.js
export default async function handler(req, res) {
const { text, targetLang } = req.body;
try {
const result = await translate(text, { to: targetLang });
res.status(200).json({ success: true, translatedText: result.text });
} catch (error) {
res.status(500).json({ success: false, error: error.message });
}
}
2๋จ๊ณ: ์คํ ์ด๋ณ ํ์ ์ง์
๊ตฌ๊ธ ํ๋ ์ด์คํ ์ด์ ์ฑ์คํ ์ด ํ์์ด ๋ฌ๋ผ์ ๋ ๋ค ์ง์ํด์ผ ํ๋ค.
๊ตฌ๊ธ ํ๋ ์ด์คํ ์ด๋ <ko-KR>๋ด์ฉ</ko-KR> ํ์์ด๊ณ , ์ฑ์คํ ์ด๋ ๊ฐ ์ธ์ด๋ณ๋ก ๋ฐ๋ก ์
๋ ฅํด์ผ ํ๋ค.
// ๊ตฌ๊ธ ํ๋ ์ด์คํ ์ด ํ์
const generateGoogleFormat = (translations) => {
let formatted = '';
for (const [lang, text] of Object.entries(translations)) {
const playStoreLang = getPlayStoreLanguageCode(lang);
formatted += `<${playStoreLang}>\n${text}\n</${playStoreLang}>\n`;
}
return formatted;
};
3๋จ๊ณ: UI ๊ฐ์
์ฒ์์๋ ๊ธฐ๋ฅ๋ง ๋ง๋ค์๋๋ฐ, ์ฌ์ฉํด๋ณด๋ UI๊ฐ ๋๋ฌด ๋ถํธํ๋ค.
์ธ์ด ์ ํ์ ๊ทธ๋ฃน๋ณ๋ก ๋๋๊ณ , ์งํ๋ฅ ๋ฐ๋ฅผ ๋ฃ๊ณ , ๊ฐ ์ธ์ด๋ณ๋ก ๊ฐ๋ณ ๋ณต์ฌ ๋ฒํผ์ ์ถ๊ฐํ๋ค. ๊ณ ์ ํ ์คํธ ๊ธฐ๋ฅ๋ ๋ฃ์ด์ ๋ฒ์ ์ ๋ณด ๊ฐ์ ๊ฑด ๋ฒ์ญํ์ง ์๊ณ ๊ฐ ์ธ์ด ์์ ๋ถ์ผ ์ ์๊ฒ ํ๋ค.
์ค์ ์ฌ์ฉํด๋ณด๋
๋ฒ์ญ ํ์ง
๊ตฌ๊ธ ๋ฒ์ญ์ ์ฌ์ฉํ๋๋ฐ ์๊ฐ๋ณด๋ค ๊ด์ฐฎ์ต๋๋ค. ๊ฐ๋จํ ๋ฌธ์ฅ์ ์ ๋ฒ์ญ๋๊ณ , ๋ณต์กํ ๋ฌธ์ฅ์ ๊ฐ๋ ์ด์ํ๊ฒ ๋์ต๋๋ค. ํ์ง๋ง ์ฑ ๋ฆด๋ฆฌ์ฆ ๋ ธํธ ์ ๋๋ ๋๋ถ๋ถ ๊ด์ฐฎ๊ฒ ๋์ต๋๋ค.
์ฌ์ฉ๋ฒ
ํ๊ตญ์ด ๋๋ ์ฌ์ฉ์์ ์ฃผ ์ธ์ด๋ก ๋ฆด๋ฆฌ์ฆ ๋ ธํธ๋ฅผ ์ฐ๊ณ , ๋ฒ์ญํ ์ธ์ด๋ค์ ์ ํํ ๋ค์ ๋ฒ์ญ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ฉด ๊ฐ ์ธ์ด๋ณ๋ก ๋ณต์ฌํด์ ๊ฐ ์คํ ์ด์ ๋ถ์ฌ๋ฃ๊ธฐ ํฉ๋๋ค.
์๊ฐ ์ ์ฝ
๊ธฐ์กด์๋ ํ๋์ฉ ๋ฒ์ญํ๋๋ผ 10-15๋ถ ๊ฑธ๋ ธ๋๋ฐ, ์ด์ ๋ 2-3๋ถ์ด๋ฉด ๋๋ฉ๋๋ค. ํนํ ์ฌ๋ฌ ์ธ์ด๋ก ๋ฒ์ญํ ๋ ํจ๊ณผ๊ฐ ํฝ๋๋ค.
์์ผ๋ก ๊ฐ์ ํ ์
๋ฒ์ญ ํ์ง ๊ฐ์
AI ๋ฒ์ญ ์๋น์ค๋ฅผ ์ถ๊ฐ๋ก ์ฐ๋ํด์ ๋ฒ์ญ ํ์ง์ ๋์ผ๊น ์๊ฐ ์ค์ ๋๋ค. ๋๋ ์ฌ์ฉ์๊ฐ ๋ฒ์ญ ๊ฒฐ๊ณผ๋ฅผ ์์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
๋ ๋ง์ ์ธ์ด ์ง์
ํ์ฌ ์ง์ํ์ง ์๋ ์ธ์ด๋ค๋ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.
ํ ํ๋ฆฟ ๊ธฐ๋ฅ
์์ฃผ ์ฌ์ฉํ๋ ๋ฆด๋ฆฌ์ฆ ๋ ธํธ ํ ํ๋ฆฟ์ ์ ์ฅํ ์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทผ๋ฐ ์ด๋ฌ๋ ค๋ฉด ๋ฐฑ์๋๋ฅผ ์ฐ๊ฒฐํด์ผํ๋๋ฐ ๊ทธ๋ผ ์ ์ง๋น์ 10๋ฌ๋ฌ๊ฐ ๋ ๋คํ ๋ฐ..
๋ง๋ฌด๋ฆฌ
์ฒ์์๋ ๊ทธ๋ฅ ๊ท์ฐฎ์์ ๋ง๋ ๋๊ตฌ์๋๋ฐ, ์ค์ ๋ก ์ฌ์ฉํด๋ณด๋ ์๊ฐ๋ณด๋ค ์ ์ฉํฉ๋๋ค. ์ฑ ์ถ์ํ ๋๋ง๋ค ์ฐ๊ณ ์๊ณ , ์๊ฐ๋ ๋ง์ด ์ ์ฝ๋ฉ๋๋ค.
์์ง ์๋ฒฝํ์ง๋ ์์ง๋ง, ์์ผ๋ก ๊ณ์ ๊ฐ์ ํด๋๊ฐ๋ฉด์ ๋ ์ข์ ๋๊ตฌ๋ก ๋ง๋ค์ด๊ฐ๊ณ ์ถ์ต๋๋ค.
์ฌ๋ฌ๊ฐ์ง๋ก ์ฌ๋๋ค์ด ์ค์ ๋ก ์ฌ์ฉํ๋ ๋๊ตฌ๋ค์ ๋ง๋ค์ด๋ณด๊ณ ์๋๋ฐ, ์๋ฌด์ชผ๋ก ํธ๋ํฝ์ด ์ฆ๊ฐํ์ฌ ์์ตํ๊น์ง ์ด์ด์ง๋๊ฑธ ๋ฐ๋๋ด ๋๋ค.
Release Note Generator๋ฅผ ์ง์ ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค๋ฉด ๋ฆด๋ฆฌ์ฆ ๋ ธํธ ์์ฑ๊ธฐ๋ฅผ ํ์ธํด๋ณด์ธ์.