다국어 사이트 제작중 질문

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
다국어 사이트 제작중 질문

QA

다국어 사이트 제작중 질문

본문

제품 기본 설명을 언어별로 다르게 출력하고 싶은데 
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;
    }
}
답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT