테스트 사이트 - 개발 중인 베타 버전입니다

다국어 사이트 제작중 질문 채택완료

klee 2년 전 조회 1,905

제품 기본 설명을 언어별로 다르게 출력하고 싶은데 
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개

채택된 답변
+20 포인트
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개

k
klee
2년 전
감사드립니다.

댓글을 작성하려면 로그인이 필요합니다.

들레아빠

</p>

<p>switch($_GET['lang']):{

    case 'en';{

    echo $it['it_en'];

    break;

    }

case 'ja_JP':{

    echo $it['it_jp'];

    break;

    }

default:{

    echo $it['it_basic'];

    break;

    }

}</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

k
klee
2년 전
감사드립니다!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인