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

1번째사이트는 번역이 잘되고 2번째사이트부터는 사이트번역 안되는데 뭐가문제인가요? 채택완료

9개월 전 조회 1,488

사이트를 복사해서 테스트를 해보는데 똑같은코드인데 2번째사이트부터는 번역이 안되는데 이유가뭘까요?  

</strong></p>

<p><!-- 구글 웹사이트 번역 플러그인 [s] --></p>

<p><style type="text/css"></p>

<p>    #goog-gt-tt {</p>

<p>        display: none !important;</p>

<p>    }</p>

<p>    .goog-te-banner-frame {</p>

<p>        display: none !important;</p>

<p>    }</p>

<p>    .goog-te-menu-value:hover {</p>

<p>        text-decoration: none !important;</p>

<p>    }</p>

<p>    .goog-te-gadget-icon {</p>

<p>        background-image: url(//gtranslate.net/flags/gt_logo_19x19.gif) !important;</p>

<p>        background-position: 0 0 !important;</p>

<p>    }</p>

<p>    body {</p>

<p>        top: 0 !important;</p>

<p>    }</p>

<p>    a.gflag {</p>

<p>        vertical-align: middle;</p>

<p>        font-size: 15px;</p>

<p>        padding: 0px;</p>

<p>        background-repeat: no-repeat;</p>

<p>        background-image: url(<a href="https://www.drupal.org/files/issues/2018-06-04/16.png);" target="_blank" rel="noopener noreferrer">https://www.drupal.org/files/issues/2018-06-04/16.png);</a></p>

<p>    }</p>

<p>    a.gflag img {</p>

<p>        border: 0;</p>

<p>    }</p>

<p>    a.gflag:hover {</p>

<p>        background-image: url(<a href="https://www.drupal.org/files/issues/2018-06-04/16a.png);" target="_blank" rel="noopener noreferrer">https://www.drupal.org/files/issues/2018-06-04/16a.png);</a></p>

<p>    }</p>

<p>    #google_translate_element_site2 {</p>

<p>        display: none !important;</p>

<p>    }</p>

<p>    .skiptranslate {</p>

<p>        display: none;</p>

<p>    }</p>

<p></style></p>

<p> </p>

<p><div id="google_translate_element_site2"></div></p>

<p> </p>

<p><a href="#" onclick="toggleLanguage();return false;" title="언어 전환" class="gflag nturl" style="background-position:-0px -200px;"></p>

<p>    <img src="//gtranslate.net/flags/blank.png" height="16" width="16" alt="언어 전환"/></p>

<p></a></p>

<p> </p>

<p><script type="text/javascript"></p>

<p>function loadGoogleTranslateScript(callback) {</p>

<p>    if (!document.querySelector('script[src*="translate.google.com/translate_a/element.js"]')) {</p>

<p>        const script = document.createElement('script');</p>

<p>        script.src = '<a href="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit2';" target="_blank" rel="noopener noreferrer">https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit2';</a></p>

<p>        script.async = true;</p>

<p>        script.onload = () => {</p>

<p>            console.log("Site 2: Google Translate 스크립트 로드 성공");</p>

<p>            if (typeof callback === 'function') callback();</p>

<p>        };</p>

<p>        script.onerror = () => {</p>

<p>            console.error("Site 2: Google Translate 스크립트 로드 실패. 네트워크 상태 확인 필요.");</p>

<p>        };</p>

<p>        document.head.appendChild(script);</p>

<p>    } else {</p>

<p>        if (typeof googleTranslateElementInit2 === 'function') googleTranslateElementInit2();</p>

<p>        if (typeof callback === 'function') callback();</p>

<p>    }</p>

<p>}</p>

<p> </p>

<p>function googleTranslateElementInit2() {</p>

<p>    if (typeof google === 'undefined' || !google.translate) {</p>

<p>        console.error("Site 2: Google Translate 라이브러리가 로드되지 않음. 네트워크 또는 CORS 문제 확인.");</p>

<p>        return;</p>

<p>    }</p>

<p> </p>

<p>    new google.translate.TranslateElement({</p>

<p>        pageLanguage: 'ja',</p>

<p>        autoDisplay: false</p>

<p>    }, 'google_translate_element_site2');</p>

<p> </p>

<p>    // 페이지 로드 시 일본어 -> 한국어로 자동 번역</p>

<p>    function setKoreanTranslation() {</p>

<p>        document.cookie = 'googtrans=/ja/ko; path=/0303; max-age=31536000';</p>

<p>        const translateElement = document.querySelector('.goog-te-combo');</p>

<p>        if (translateElement) {</p>

<p>            translateElement.value = 'ko';</p>

<p>            GTranslateFireEvent(translateElement, 'change');</p>

<p>            console.log("Site 2: 일본어 -> 한국어 번역 완료 (자동)");</p>

<p>        } else {</p>

<p>            console.error("Site 2: Google Translate 요소를 찾을 수 없습니다.");</p>

<p>        }</p>

<p>    }</p>

<p> </p>

<p>    // Google Translate iframe 준비 확인</p>

<p>    function waitForTranslateFrame(callback) {</p>

<p>        let tries = 0;</p>

<p>        const checkInterval = setInterval(() => {</p>

<p>            const frame = document.querySelector('.goog-te-menu-frame');</p>

<p>            if (frame || tries > 20) {</p>

<p>                clearInterval(checkInterval);</p>

<p>                if (frame) {</p>

<p>                    console.log("Site 2: Google Translate frame 준비 완료");</p>

<p>                    callback();</p>

<p>                } else {</p>

<p>                    console.error("Site 2: Google Translate frame을 찾을 수 없습니다.");</p>

<p>                }</p>

<p>            }</p>

<p>            tries++;</p>

<p>        }, 200);</p>

<p>    }</p>

<p> </p>

<p>    waitForTranslateFrame(setKoreanTranslation);</p>

<p>}</p>

<p> </p>

<p>// 언어 전환 기능 (전역으로 정의)</p>

<p>window.toggleLanguage = function() {</p>

<p>    if (typeof doGTranslate !== 'function') {</p>

<p>        console.error("Site 2: doGTranslate 함수가 정의되지 않음. 스크립트 로드 실패.");</p>

<p>        return false;</p>

<p>    }</p>

<p> </p>

<p>    let clickCount = (window.toggleLanguageClickCount || 0) + 1;</p>

<p>    window.toggleLanguageClickCount = clickCount;</p>

<p>    let langPair = '';</p>

<p> </p>

<p>    switch (clickCount % 3) {</p>

<p>        case 1: langPair = 'ja|en'; break;</p>

<p>        case 2: langPair = 'en|ja'; break;</p>

<p>        case 0: langPair = 'ja|ko'; break;</p>

<p>    }</p>

<p> </p>

<p>    function executeTranslation() {</p>

<p>        waitForTranslateFrame(() => {</p>

<p>            doGTranslate(langPair);</p>

<p>            console.log("Site 2: 번역 실행: " + langPair);</p>

<p>        });</p>

<p>    }</p>

<p> </p>

<p>    if (document.querySelector('.goog-te-menu-frame')) {</p>

<p>        executeTranslation();</p>

<p>    } else {</p>

<p>        waitForTranslateFrame(executeTranslation);</p>

<p>    }</p>

<p>    return false;</p>

<p>};</p>

<p> </p>

<p>// GTranslateFireEvent 함수 (기존 코드 유지)</p>

<p>eval(function (p, a, c, k, e, r) {</p>

<p>    e = function (c) {</p>

<p>        return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))</p>

<p>    };</p>

<p>    if (!''.replace(/^/, String)) {</p>

<p>        while (c--) r[e(c)] = k[c] || e(c);</p>

<p>        k = [function (e) { return r[e] }];</p>

<p>        e = function () { return '\\w+' };</p>

<p>        c = 1;</p>

<p>    }</p>

<p>    while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);</p>

<p>    return p</p>

<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, {}));</p>

<p> </p>

<p>// 페이지 로드 시 스크립트 로드 시작</p>

<p>window.onload = function() {</p>

<p>    loadGoogleTranslateScript();</p>

<p>};</p>

<p></script></p>

<p><!-- 구글 웹사이트 번역 플러그인 [e] --></p>

<p><strong>

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

답변 1개

채택된 답변
+20 포인트

번역 쿠키의 경로 설정이 복사된 사이트의 실제 경로와 일치하지 않다고 합니다. 해당 쿠키의 'path' 값을 '/' 또는 사이트에 적절한 경로로 수정하셔야겠습니다.

document.cookie = 'googtrans=/ja/ko; path=/0303; max-age=31536000';

스크립트의 위 코드를[code]

document.cookie = 'googtrans=/ja/ko; path=/; max-age=31536000';

[/code]이와 같이 변경하여, 쿠키가 사이트의 루트 경로에 적용되도록 수정

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

답변에 대한 댓글 4개

관심 감사합니다.
그럼 이부분을(path=/0303)
운영하는 사이트의 주소로 설정하면되는건가요?
네, 맞습니다. 쿠키의 'path' 값은 사이트 내에서 쿠키가 유효한 URL 경로를 지정하는 것이므로,
운영 중인 사이트의 실제 경로로 설정해야 정상적으로 작동합니다.
예를 들어, 사이트의 루트 경로에서 전체적으로 적용하려면 'path=/'로 설정하고,
특정 하위 디렉토리에서만 사용한신다면 그 경로로 지정하는 것이 좋습니다.
감사 합니다.....도움이 되었습니다.~꾸벅
'◡' 꾸~뻑~

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

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

로그인

전체 질문 목록

🐛 버그신고