๋ค๊ตญ์ด ์ง์์ ์ํ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ i18n ๊ตฌํ ๋ฐฉ๋ฒ
์ต๊ทผ ๊ธ๋ก๋ฒ ์์ฅ์ผ๋ก ํ์ฅ๋๋ ์น ์๋น์ค์์๋ ๋ค์ํ ์ธ์ด์ ๋ฌธํ๊ถ์ ์ฌ์ฉ์๋ฅผ ์ง์ํ๋ ๋ค๊ตญ์ด ๊ธฐ๋ฅ์ด ํ์์ ์ ๋๋ค. ๋ฆฌ์กํธ(React)๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์์๋ ๊ตญ์ ํ(i18n) ๊ธฐ๋ฅ์ ์ ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ง์ถคํ ์ธ์ด ํ๊ฒฝ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ๋ํ์ ์ธ ๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ react-i18next์ ํจ๊ป ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ์ค๊ณํ๊ณ ๋ค๊ตญ์ด ์ง์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ตญ์ ํ(i18n)์ ์ค์์ฑ๊ณผ ๋ฆฌ์กํธ์์์ ์ ์ฉ ํ์์ฑ
๋ค๊ตญ์ด ์ง์์ ๋จ์ํ ์ฌ๋ฌ ์ธ์ด๋ก ๋ฒ์ญ๋ ํ ์คํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋์ด, ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI), ๋ ์ง ๋ฐ ์ซ์ ํ์, ํํ ๋จ์ ๋ฑ ๋ค์ํ ๋ฌธํ์ ์์๋ฅผ ๋ฐ์ํด์ผ ํฉ๋๋ค. ๊ธ๋ก๋ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๊ตญ์ ํ ๊ธฐ๋ฅ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์ : ์ฌ์ฉ์๊ฐ ๋ชจ๊ตญ์ด๋ก ๋ ์ฝํ ์ธ ๋ฅผ ์ ํ ๋, ๋ณด๋ค ์น๊ทผํ๊ณ ์ง๊ด์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์์ฅ ํ๋: ๋ค์ํ ์ธ์ด๋ฅผ ์ง์ํจ์ผ๋ก์จ, ๊ธ๋ก๋ฒ ์์ฅ ์ง์ถ ๋ฐ ๋ค์ํ ๊ตญ๊ฐ์ ์ฌ์ฉ์ ํ๋ณด์ ์ ๋ฆฌํฉ๋๋ค.
- ๋ฌธํ์ ์ฐจ์ด ๋ฐ์: ๋ ์ง, ์๊ฐ, ํํ ๋ฑ ๋ฌธํ์ ๋ฐ๋ฅธ ํ๊ธฐ ๋ฐฉ์์ ๋ฐ์ํ์ฌ ์ฌ์ฉ์์ ์ ๋ขฐ๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
๋ฆฌ์กํธ ํ๋ก์ ํธ์์ ๊ตญ์ ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์๋, ๋จ์ํ ํ ์คํธ๋ฅผ ๋ฒ์ญํ๋ ๊ฒ์ ๋์ด์ ์ปดํฌ๋ํธ๋ณ๋ก ๋ฒ์ญ ๋ฌธ์์ด์ ๊ด๋ฆฌํ๊ณ , ๋์ ์ผ๋ก ์ธ์ด๋ฅผ ์ ํํ ์ ์๋ ๊ตฌ์กฐ๊ฐ ํ์ํฉ๋๋ค.
react-i18next ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๊ฐ ๋ฐ ์ค์น
react-i18next๋ i18next์ ๋ฆฌ์กํธ ์ ์ฉ ๋ํผ๋ก, ๊ฐ๋ ฅํ ๊ตญ์ ํ ๊ธฐ๋ฅ๊ณผ ์ ์ฐํ ์ค์ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ฝ๊ฒ ๋ค๊ตญ์ด ํ ์คํธ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ฌ์ฉ์ ์ธ์ด์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์ฝํ ์ธ ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ค์น ๋ฐฉ๋ฒ
ํ๋ก์ ํธ์ react-i18next์ i18next๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
npm install react-i18next i18next
๋๋ yarn์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ:
yarn add react-i18next i18next
๊ตญ์ ํ ์ด๊ธฐ ์ค์ ๋ฐ ๊ตฌ์ฑ
ํ๋ก์ ํธ ๋ฃจํธ์ i18n.js ํ์ผ์ ์์ฑํ์ฌ, i18next ์ด๊ธฐ ์ค์ ์ ์งํํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ์ ์ธ ์ธ์ด ์ค์ ๊ณผ ๋ฆฌ์์ค(resource)๋ฅผ ์ ์ํฉ๋๋ค.
// i18n.js
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
// ์ธ์ด๋ณ ๋ฒ์ญ ๋ฆฌ์์ค ์ค์
const resources = {
en: {
translation: {
welcome: 'Welcome to our website!',
description: 'This is a sample description in English.',
buttonText: 'Click Here',
},
},
ko: {
translation: {
welcome: '์ ํฌ ์น์ฌ์ดํธ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค!',
description: '์ด๊ฒ์ ํ๊ตญ์ด๋ก ์์ฑ๋ ์ํ ์ค๋ช
์
๋๋ค.',
buttonText: '์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์',
},
},
es: {
translation: {
welcome: '¡Bienvenido a nuestro sitio web!',
description: 'Esta es una descripción de muestra en español.',
buttonText: 'Haz clic aquí',
},
},
};
i18n
.use(initReactI18next) // ๋ฆฌ์กํธ์ ์ฐ๊ฒฐ
.init({
resources,
lng: 'en', // ๊ธฐ๋ณธ ์ธ์ด ์ค์
fallbackLng: 'en', // ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์ด๊ฐ ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ธ์ด๋ก ๋์ฒด
interpolation: {
escapeValue: false, // ๋ฆฌ์กํธ๋ XSS ๋ฐฉ์ง๋ฅผ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ํจ
},
});
export default i18n;
์ ํ์ผ์ ๋ค๊ตญ์ด ๋ฆฌ์์ค๋ฅผ ์ ์ํ๊ณ , ๊ธฐ๋ณธ ์ธ์ด๋ฅผ ์์ด๋ก ์ค์ ํฉ๋๋ค. ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ์ธ์ด์ ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, fallbackLng ์ต์ ์ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ญ์ด ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ธ์ด๋ก ๋์ฒดํฉ๋๋ค.
๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์ i18next ์ฌ์ฉํ๊ธฐ
์ค์ ์ด ์๋ฃ๋๋ฉด, ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์ ๊ตญ์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ๊ฒ์ ๋๋ค. react-i18next์์๋ useTranslation ํ ์ ์ ๊ณตํ์ฌ, ์ปดํฌ๋ํธ ๋ด์์ ๋ฒ์ญ ๋ฌธ์์ด์ ์ฝ๊ฒ ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
์์ : ๋ค๊ตญ์ด ๋ฒํผ ์ปดํฌ๋ํธ
์๋ ์์ ๋ ๋ค๊ตญ์ด ๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ๋ฒํผ์ ํ ์คํธ๋ ์ฌ์ฉ์์ ํ์ฌ ์ธ์ด ์ค์ ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
// LanguageSwitcher.jsx
import React from 'react';
import { useTranslation } from 'react-i18next';
import styled from 'styled-components';
const Button = styled.button`
padding: 10px 20px;
margin: 5px;
background-color: #1976d2;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
&:hover {
background-color: #1565c0;
}
`;
const LanguageSwitcher = () => {
const { i18n } = useTranslation();
const changeLanguage = (lng) => {
i18n.changeLanguage(lng);
};
return (
<div>
<Button onClick={() => changeLanguage('en')}>English</Button>
<Button onClick={() => changeLanguage('ko')}>ํ๊ตญ์ด</Button>
<Button onClick={() => changeLanguage('es')}>Español</Button>
</div>
);
};
export default LanguageSwitcher;
์์ : ๋ค๊ตญ์ด ํ ์คํธ๋ฅผ ํ์ํ๋ ์ปดํฌ๋ํธ
๋ค์ ์์ ๋ ๋ค๊ตญ์ด ํ ์คํธ๋ฅผ ํ์ํ๋ ๊ฐ๋จํ ์ปดํฌ๋ํธ์ ๋๋ค.
// WelcomeMessage.jsx
import React from 'react';
import { useTranslation } from 'react-i18next';
import styled from 'styled-components';
const MessageContainer = styled.div`
padding: 20px;
text-align: center;
`;
const WelcomeMessage = () => {
const { t } = useTranslation();
return (
<MessageContainer>
<h2>{t('welcome')}</h2>
<p>{t('description')}</p>
</MessageContainer>
);
};
export default WelcomeMessage;
์ ์ปดํฌ๋ํธ๋ useTranslation ํ ์ ์ฌ์ฉํ์ฌ, i18next์ ์ค์ ๋ ๋ฒ์ญ ๋ฌธ์์ด์ ๋ถ๋ฌ์ต๋๋ค. t('welcome')์ ๊ฐ์ด ํค๋ฅผ ์ฌ์ฉํ์ฌ ํด๋นํ๋ ๋ฒ์ญ ํ ์คํธ๋ฅผ ๊ฐ์ ธ์ค๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ธ์ด๋ฅผ ์ ํํ๋ฉด ์๋์ผ๋ก UI๊ฐ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๋ค๊ตญ์ด ์ง์ ์ปดํฌ๋ํธ ์ค๊ณ ์ ๋ต ๋ฐ ๋ฒ ์คํธ ํ๋ํฐ์ค
๋ค๊ตญ์ด ์ง์์ ๊ตฌํํ ๋ ๊ณ ๋ คํด์ผ ํ ๋ช ๊ฐ์ง ์ ๋ต๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ๋ฐ ์ฌ์ฌ์ฉ์ฑ
- ๋ฒ์ญ ์ปดํฌ๋ํธ ๋ถ๋ฆฌ: ํ ์คํธ๋ฅผ ์ง์ ํ๋์ฝ๋ฉํ๋ ๋์ , ๋ค๊ตญ์ด ์ง์์ ์ํด ๋ณ๋์ ๋ฒ์ญ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด, ๋ฒ์ญ ํ์ผ์ ๊ด๋ฆฌํ๊ณ , ๋ค๊ตญ์ด ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๋ ํด๋น ์ปดํฌ๋ํธ๋ง ์์ ํ๋ฉด ๋์ด ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋๋ค.
- ๊ณตํต ๋ ์ด์์ ํ์ฉ: ๋ค๊ตญ์ด ์ง์ UI์์๋ ๊ณตํต ๋ ์ด์์๊ณผ ์คํ์ผ์ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ ์ญ ์คํ์ผ์ด๋ ํ ๋ง๋ฅผ ๊ด๋ฆฌํ๋ ์ปจํ ์คํธ์ ๊ฒฐํฉํ์ฌ, ์ธ์ด ์ ํ ์ UI ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๋๋ก ํฉ๋๋ค.
2. ๋ฒ์ญ ๋ฆฌ์์ค ๊ด๋ฆฌ
- ์ธ๋ถ ํ์ผ ๊ด๋ฆฌ: ๋ฒ์ญ ๋ฆฌ์์ค๋ JSON ํ์ผ ๋ฑ ์ธ๋ถ ํ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๋ฉด, ์ธ์ด ์ถ๊ฐ ๋ฐ ์์ ์ ๊ฐ๋ฐ์์ ๋ฒ์ญ ๋ด๋น์ ๊ฐ์ ํ์ ์ด ์ํํด์ง๋๋ค.
- ๋์ ๋ก๋ฉ: ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง ๊ฒฝ์ฐ, ๋ชจ๋ ๋ฒ์ญ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ก๋ํ๋ ๋์ , ์ฌ์ฉ์๊ฐ ์ ํํ ์ธ์ด์ ํด๋นํ๋ ๋ฒ์ญ ํ์ผ๋ง ๋์ ์ผ๋ก ๋ถ๋ฌ์ค๋ ์ ๋ต์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค.
3. ์ ๊ทผ์ฑ๊ณผ SEO ๊ณ ๋ ค
- ARIA ์์ฑ ํ์ฉ: ๊ตญ์ ํ๋ UI์์๋ ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ํ ์คํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์ํ ์ ์๋๋ก ARIA ์์ฑ์ ์ถ๊ฐํ๊ณ , SEO ์ธก๋ฉด์์ ์ค์ํ ๋ฉํ ํ๊ทธ๋ฅผ ๊ฐ ์ธ์ด์ ๋ง๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค.
- URL ๊ตฌ์กฐ: ๋ค๊ตญ์ด ์ง์ ์น์ฌ์ดํธ์์๋ ์ธ์ด๋ณ URL ๊ตฌ์กฐ(์: /en, /ko, /es)๋ฅผ ์ ์ฉํ์ฌ, ๊ฒ์ ์์ง์ด ๊ฐ ์ธ์ด๋ณ ์ฝํ ์ธ ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์ํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
4. ํ ์คํธ์ ์ฌ์ฉ์ ํผ๋๋ฐฑ
- ๋ค๊ตญ์ด ํ ์คํธ: ๊ฐ ์ธ์ด๋ณ๋ก UI์ ๋ฒ์ญ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฉ๋์๋์ง ํ์ธํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๊ณ , ์ค์ ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ํตํด ๊ฐ์ ํ ๋ถ๋ถ์ ์ง์์ ์ผ๋ก ๋ณด์ํฉ๋๋ค.
- ์๋ํ๋ ํ ์คํธ: Jest๋ React Testing Library์ ๊ฐ์ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ, ๋ค๊ตญ์ด ์ง์ ์ปดํฌ๋ํธ์ ๋์์ ์๋ํ๋ ํ ์คํธ๋ก ๊ฒ์ฆํ๋ฉด, ์ ๋ฐ์ดํธ ์ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ค์ผ ์ ์์ต๋๋ค.
์ค์ ํ๋ก์ ํธ ์ ์ฉ ์ฌ๋ก
๋ค๊ตญ์ด ์ง์ ๊ธฐ๋ฅ์ ๊ธ๋ก๋ฒ ์ ์์๊ฑฐ๋, ๋ด์ค ํฌํธ, SaaS ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์์๊ฑฐ๋ ์ฌ์ดํธ์์๋ ์ฌ์ฉ์ ์ธ์ด์ ๋ฐ๋ผ ์ํ ์ค๋ช , ๋ฆฌ๋ทฐ, ๊ฒฐ์ ์ ๋ณด ๋ฑ์ด ์๋์ผ๋ก ์ ํ๋๋ฉฐ, ๋ด์ค ํฌํธ์์๋ ๊ฐ ๋๋ผ์ ๋ ์์๊ฒ ๋ง๋ ๋ด์ค ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
์ค์ ํ๋ก์ ํธ์์๋ react-i18next์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ฝ๊ฒ ๊ตญ์ ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ , ๋ณ๋์ ๋ฒ์ญ ๋ฆฌ์์ค ํ์ผ์ ๊ด๋ฆฌํ์ฌ, ์ธ์ด ์ถ๊ฐ ๋ฐ ์์ ์์ ์ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๋ํ, ์ธ์ด ์ ํ UI๋ฅผ ๋ช ํํ๊ฒ ์ ๊ณตํจ์ผ๋ก์จ ์ฌ์ฉ์๊ฐ ์์ฝ๊ฒ ์ํ๋ ์ธ์ด๋ก ์ฝํ ์ธ ๋ฅผ ํ์ธํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.
๊ฒฐ๋ก
๋ฆฌ์กํธ์์ ๊ตญ์ ํ(i18n) ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ๋ง์ถคํ ๊ฒฝํ์ ์ ๊ณตํ๊ณ , ๋ค์ํ ์์ฅ์์ ์ฑ๊ณต์ ์ธ ์๋น์ค๋ฅผ ์ด์ํ๊ธฐ ์ํด ํ์์ ์ธ ์ ๋ต์ ๋๋ค. react-i18next์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ฉด, ๋ค๊ตญ์ด ๋ฒ์ญ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์ปดํฌ๋ํธ๋ณ๋ก ๋ฒ์ญ ๋ฌธ์์ด์ ๋์ ์ผ๋ก ๋ ๋๋งํ ์ ์์ต๋๋ค.
- ์ด๊ธฐ ์ค์ : i18n ์ด๊ธฐ ์ค์ ํ์ผ์ ํตํด ์ธ์ด๋ณ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๊ณ , ๊ธฐ๋ณธ ์ธ์ด์ ํด๋ฐฑ ์ธ์ด๋ฅผ ์ค์ ํฉ๋๋ค.
- ์ปดํฌ๋ํธ ํ์ฉ: useTranslation ํ ์ ํ์ฉํ์ฌ ๋ค๊ตญ์ด ํ ์คํธ๋ฅผ ์ฝ๊ฒ ๋ถ๋ฌ์ค๊ณ , ์ธ์ด ์ ํ ๋ฒํผ๊ณผ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ์ง์ ์ธ์ด๋ฅผ ์ ํํ ์ ์๋๋ก ๊ตฌํํฉ๋๋ค.
- ์ค๊ณ ์ ๋ต: ์ปดํฌ๋ํธ ๋ถ๋ฆฌ, ์ธ๋ถ ๋ฒ์ญ ํ์ผ ๊ด๋ฆฌ, ๋์ ๋ก๋ฉ, ์ ๊ทผ์ฑ ๋ฐ SEO ๊ณ ๋ ค ๋ฑ ๋ค์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํ์ฌ, ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋์ ๋ค๊ตญ์ด ์ง์ ์์คํ ์ ๊ตฌ์ถํฉ๋๋ค.
์ด์ ๊ฐ์ ๊ตญ์ ํ ๊ธฐ๋ฅ์ ํตํด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ๋ณด๋ค ์น์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ์๋น์ค์ ๊ฒฝ์๋ ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์์ผ๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ์์ ๋ค๊ตญ์ด ์ง์ ๊ธฐ๋ฅ์ ์ ๊ทน ๋์ ํ์ฌ, ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ง์ถคํ ๊ฒฝํ์ ์ ๊ณตํ๊ณ , ์ฑ๊ณต์ ์ธ ๊ธ๋ก๋ฒ ์๋น์ค๋ฅผ ๊ตฌํํ์๊ธธ ๋ฐ๋๋๋ค.
๋๊ธ