구글 자동번역에서 현재언어를 표시하는 방법 문의드려요.
본문
위 게시물을 보고 들레아빠님께서 공개한 소스를 이용해서 페이지를 자동번역하고 있어요.
만약 일본어로 페이지를 바꾸었을때 현재 페이지에 적용된 언어가 어떤 언어인지를
변수를 가져올 방법이 있을까요?
<?
$language = "추출된 현재언어";
?>
셀렉트폼으로 언어 바꾸는데, 페이지를 새로고침 하였을때
셀렉트폼에서 현재언어 표시가 되지 않아서 문의를 드려요.
도움 부탁 드려요~ㅜ
답변 2
기존 선택된 언어코드에 대해 쿠키 또는 스토리지 같은 저장매체의 이용을 생각해볼수 있고
다음은 sessionStorage 를 사용해 동작하도록 하는 방법중 하나입니다.
<a href="#" onclick="doGTranslate('ko|ko');return false;" title="한국어" class="gflag nturl" style="background-position:-0px -200px;"><img src="http://gtranslate.net/flags/blank.png" height="16" width="16" alt="한국어"/></a>
<a href="#" onclick="doGTranslate('ko|en');return false;" title="English" class="gflag nturl" style="background-position:-0px -0px;"><img src="http://gtranslate.net/flags/blank.png" height="16" width="16" alt="English"/></a>
<a href="#" onclick="doGTranslate('ko|zh-CN');return false;" title="中文" class="gflag nturl" style="background-position:-300px -0px;"><img src="http://gtranslate.net/flags/blank.png" height="16" width="16" alt="中文"/></a>
<a href="#" onclick="doGTranslate('ko|ja');return false;" title="日本語" class="gflag nturl" style="background-position:-700px -100px;"><img src="http://gtranslate.net/flags/blank.png" height="16" width="16" alt="日本語"/></a>
<a href="#" onclick="doGTranslate('ko|vi');return false;" title="Việt Nam" class="gflag nturl" style="background-position:-200px -400px;"><img src="http://gtranslate.net/flags/blank.png" height="16" width="16" alt="Vietnam"/></a>
<div id="google_translate_element2"></div>
<script type="text/javascript">
function googleTranslateElementInit2() {
var locale_default = 'ko';
var locales = window.sessionStorage.getItem('locales');
if (locales == null) {
locales = {from: locale_default, to: locale_default};
window.sessionStorage.setItem('locales', JSON.stringify(locales));
} else {
locales = JSON.parse(locales);
}
var goog_te_TE = new google.translate.TranslateElement({
// pageLanguage: locales.from,
autoDisplay: false
}, 'google_translate_element2');
// var goog_te_combo = document.querySelector('.goog-te-combo');
// if (goog_te_combo != null) {
// goog_te_combo.addEventListener('change', function () {
// locales.to = this.value;
// if (locales.to == '') {
// locales.to = locale_default;
// }
// window.sessionStorage.setItem('locales', JSON.stringify(locales));
// });
// }
setInterval(function () {
// var goog_te_TE = google.translate.TranslateElement.getInstance(); // from: o, to: j
locales.from = goog_te_TE.o;
locales.to = goog_te_TE.j;
window.sessionStorage.setItem('locales', JSON.stringify(locales));
}, 1000);
if (locales.from != locales.to) {
doGTranslate(Object.values(locales).join('|'));
}
}
</script>
<script type="text/javascript" src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit2"></script>
<script type="text/javascript">
/* <![CDATA[ */
eval(function (p, a, c, k, e, r) {
e = function (c) {
return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
};
if (!''.replace(/^/, String)) {
while (c--) r[e(c)] = k[c] || e(c);
k = [function (e) {
return r[e]
}];
e = function () {
return '\\w+'
};
c = 1
}
while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
return p
}('6 7(a,b){n{4(2.9){3 c=2.9("o");c.p(b,f,f);a.q(c)}g{3 c=2.r();a.s(\'t\'+b,c)}}u(e){}}6 h(a){4(a.8)a=a.8;4(a==\'\')v;3 b=a.w(\'|\')[1];3 c;3 d=2.x(\'y\');z(3 i=0;i<d.5;i++)4(d[i].A==\'B-C-D\')c=d[i];4(2.j(\'k\')==E||2.j(\'k\').l.5==0||c.5==0||c.l.5==0){F(6(){h(a)},G)}g{c.8=b;7(c,\'m\');7(c,\'m\')}}', 43, 43, '||document|var|if|length|function|GTranslateFireEvent|value|createEvent||||||true|else|doGTranslate||getElementById|google_translate_element2|innerHTML|change|try|HTMLEvents|initEvent|dispatchEvent|createEventObject|fireEvent|on|catch|return|split|getElementsByTagName|select|for|className|goog|te|combo|null|setTimeout|500'.split('|'), 0, {}))
/* ]]> */
</script>
span 테그 id를 보시면 :1.finishTargetLang 로 되어있네요.
그아래 테그의 class를 보시면 VIpgJd-ZVi9od-xl07Ob-lTBxed 요렇게 되어있는데요.
jquery 를 사용해서.. 하면될거 같습니다.
var langguage = $(':1.finishTargetLang').find("span").eq(0);
요렇게 한번해보시기 바랍니다. (:1.finishTargetLang 아이디 안에 span테그를 찾아서. 0배열의 내용을 langguage 변수에 할당)
답변을 작성하시기 전에 로그인 해주세요.