1번째사이트는 번역이 잘되고 2번째사이트부터는 사이트번역 안되는데 뭐가문제인가요? 채택완료
사이트를 복사해서 테스트를 해보는데 똑같은코드인데 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개
번역 쿠키의 경로 설정이 복사된 사이트의 실제 경로와 일치하지 않다고 합니다. 해당 쿠키의 'path' 값을 '/' 또는 사이트에 적절한 경로로 수정하셔야겠습니다.
document.cookie = 'googtrans=/ja/ko; path=/0303; max-age=31536000';
스크립트의 위 코드를[code]
document.cookie = 'googtrans=/ja/ko; path=/; max-age=31536000';
[/code]이와 같이 변경하여, 쿠키가 사이트의 루트 경로에 적용되도록 수정
답변에 대한 댓글 4개
운영 중인 사이트의 실제 경로로 설정해야 정상적으로 작동합니다.
예를 들어, 사이트의 루트 경로에서 전체적으로 적용하려면 'path=/'로 설정하고,
특정 하위 디렉토리에서만 사용한신다면 그 경로로 지정하는 것이 좋습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
그럼 이부분을(path=/0303)
운영하는 사이트의 주소로 설정하면되는건가요?