다국어 사이트 제작중 질문 채택완료
제품 기본 설명을 언어별로 다르게 출력하고 싶은데
db에서 it_en 필드를 it_jp 추가해서 영어 설명을 넣어 보았습니다.
it_basic --> 한국어 기본설명
it_jp --> 일본어 기본설명
it_en --> 영어 기본설명
상품관리페이지에서 각언어별로 저장은 되구요. 이제 item.form.skin 에서 출력해야되는데
<p id="sit_desc">
<?php echo $it['it_basic']; ?></p>
번역언어를 감지해서 (접속국가가 한국이면 한국어로 출력, 일본이면 일본어 그외면 영어로 출력하고 싶습니다. ) 또는 국가 링크를 넣어서 출력하고 싶은데
if 문으로 아래처럼 표현해야하는지 궁금합니다.
$site_lang = $_GET['lang'];
if($site_lang != ''){
if($site_lang != 'en'){
$echo $it['it_en']; ?
}else if
($site_lang != 'ja'){
$echo $it['it_jp']; ?
}else{
$echo $it['it_basic']; ?
}
}
고수님들 의견 부탁드립니다. 감사합니다.
답변 2개
단순히 사용자 IP 로 부터 국가코드를 알아내는 방법중 하나입니다.
</p>
<p><?php
function langinfo($ipaddr) {
$lang = 'basic';</p>
<p> $url = '<a href="http://www.geoplugin.net/php.gp?ip='" target="_blank" rel="noopener noreferrer">http://www.geoplugin.net/php.gp?ip='</a> . $ipaddr;
$info = file_get_contents($url);
if (empty($info) == false && substr($info, 0, 2) == 'a:') {
$info = unserialize($info);
$lang = strtolower($info['geoplugin_countryCode']);
}</p>
<p> </p>
<p> return $lang;
}</p>
<p> </p>
<p>function langcustom($ipaddr) {
$lang = langinfo($ipaddr);</p>
<p> if ($lang != 'jp' && $lang != 'kr') {
$lang = 'en';
}
if ($lang == 'kr') {
$lang = 'basic';
}</p>
<p> </p>
<p> return 'it_' . $lang;
}</p>
<p> </p>
<p>$ipaddrs = [
'1.0.0.0', // USA. au
'1.1.1.0', // USA. au
'100.128.0.0', // USA. us
'8.8.8.8', // USA. us
'1.0.16.0', // Japan. jp
'1.11.0.0' // Korea. kr
];</p>
<p> </p>
<p>echo '<pre>';
foreach ($ipaddrs as $ipaddr) {
$cc = langinfo($ipaddr);
echo str_pad($ipaddr, 15) . ' : ' . $cc . PHP_EOL;
}
/*
1.0.0.0 : au
1.1.1.0 : au
100.128.0.0 : us
8.8.8.8 : us
1.0.16.0 : jp
1.11.0.0 : kr
*/</p>
<p> </p>
<p>echo '<hr />';</p>
<p> </p>
<p>foreach ($ipaddrs as $ipaddr) {
$cc = langcustom($ipaddr);
echo str_pad($ipaddr, 15) . ' : ' . $cc . PHP_EOL;
}
/*
1.0.0.0 : it_en
1.1.1.0 : it_en
100.128.0.0 : it_en
8.8.8.8 : it_en
1.0.16.0 : it_jp
1.11.0.0 : it_basic
*/</p>
<p>echo '</pre>';
?></p>
<p>
www.geoplugin.net 에서 정보를 얻는동안 지연시간이 짧지는 않습니다.
속도가 중요할 경우 다른 솔루션이나 상용솔루션을 검색해보시면 될것 같고
접속자의 국가정보를 얻기 위해
langinfo($_SERVER['REMOTE_ADDR']); 의 형태로 호출해볼수 있는데
요청헤더에 XFF(X-Forwarded-For) 관련 헤더 필드가 있는 경우 적당히 참조하도록 수정할 필요는 있습니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인