다국어 사이트 제작중 질문

다국어 사이트 제작중 질문

QA

다국어 사이트 제작중 질문

답변 2

본문

제품 기본 설명을 언어별로 다르게 출력하고 싶은데 
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 로 부터 국가코드를 알아내는 방법중 하나입니다.


<?php
function langinfo($ipaddr) {
    $lang = 'basic';
    $url = 'http://www.geoplugin.net/php.gp?ip=' . $ipaddr;
    $info = file_get_contents($url);
    if (empty($info) == false && substr($info, 0, 2) == 'a:') {
        $info = unserialize($info);
        $lang = strtolower($info['geoplugin_countryCode']);
    }
 
    return $lang;
}
 
function langcustom($ipaddr) {
    $lang = langinfo($ipaddr);
    if ($lang != 'jp' && $lang != 'kr') {
        $lang = 'en';
    }
    if ($lang == 'kr') {
        $lang = 'basic';
    }
 
    return 'it_' . $lang;
}
 
$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
];
 
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
*/
 
echo '<hr />';
 
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
*/
echo '</pre>';
?>

 

www.geoplugin.net 에서 정보를 얻는동안 지연시간이 짧지는 않습니다.

속도가 중요할 경우 다른 솔루션이나 상용솔루션을 검색해보시면 될것 같고

 

접속자의 국가정보를 얻기 위해

langinfo($_SERVER['REMOTE_ADDR']); 의 형태로 호출해볼수 있는데

요청헤더에 XFF(X-Forwarded-For) 관련 헤더 필드가 있는 경우 적당히 참조하도록 수정할 필요는 있습니다.


switch($_GET['lang']):{
    case 'en';{
    echo $it['it_en'];
    break;
    }
case 'ja_JP':{
    echo $it['it_jp'];
    break;
    }
default:{
    echo $it['it_basic'];
    break;
    }
}
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 16,737
© SIRSOFT
현재 페이지 제일 처음으로