2014-10-25 4 views
2

독일어 및 영어로 작성해야하는 Wordpress 테마를 만들었습니다. 내비게이션에는 현재 사용중인 언어에 따라 언어를 변경해야하는 버튼이 있습니다. (영어 페이지를보고있는 경우 "Deutsch"을 표시하고 그 반대도 마찬가지입니다.)내비게이션 언어 버튼을 사용하는 Wordpress 언어 전환

나는 qTranslate Plus를 사용 중이며 url (/ de 또는/en)에 언어 코드를 표시하도록 선택했습니다. 내 주요 문제는 사용자 정의 페이지 (템플릿이있는 Wordpress 페이지) (/ 사용자 정의 페이지)에있을 때 소스 코드에서/de/custom-page를 표시하지만 독일어로 변경되지 않는 언어를 변경할 때 발생합니다. . 언어 코드를 완전히 무시하고/custom-page로 다시 이동합니다. 그래서 그것은 언어 코드를 제거하는 것 같습니다.

이 표준 Wordpress 동작입니까? 그렇다면 어떻게 비활성화 할 수 있습니까? 언어를 변경하는 더 나은 방법이 있습니까? 세션 작업에서 언어를 저장하겠습니까?

참고 : "번역되지 않은 콘텐츠 숨기기"및 "기본 언어에 대한 URL 언어 정보 숨기기"둘 다 선택되어 있지 않습니다. 사전에

감사합니다, 피터

+0

q 번역물에는 "번역되지 않은 콘텐츠 숨기기"와 같은 옵션이 있습니다. 번역 된 콘텐츠를 제공하지 않았고 그 옵션을 설정할 수 있습니까? 기본 언어 코드를 숨길 수도 있습니다. – TheFrozenOne

+0

도움 주셔서 감사합니다. "번역되지 않은 콘텐츠 숨기기"및 "기본 언어에 대한 URL 언어 정보 숨기기" 선택되어 있지 않습니다. – Peter

+0

"사용자 정의 페이지"란 무엇입니까? – brasofilo

답변

1

는 제가 만들고 있던 사이트에 비슷한 문제가 있었다. 내가 URL을

대안으로

https://wordpress.org/plugins/qtranslate-slug/

와 함께 몇 가지 문제를 해결 듯이 확장을 설치, 당신은 HTML 랭 ATTR를 감지하는 조건문을 사용하여 자바 스크립트/jQuery로 버튼을 대상으로 할 수있다. 이 같은 것 :

var lang = document.documentElement.lang; 
if (lang == 'en-US'){ 
    $('button').html('your button text') 
} 
+0

이 플러그인은 최신 버전이 아니거나 qTranslate Plus와 호환되지 않습니다. – Peter

1

q 번역물이 제대로 지원되지 않습니다. 방금 플러그인을 구현하기 시작했다면 다른 플러그인을 써야한다고 생각합니다. qTranslate의 대체품은 다음과 같습니다 : mqTranslatezTranslate. 둘 다 qTranslate 포크이므로 아무 것도 풀어서는 안됩니다. 이 도움이

:lang(current languagecode) { display: none; /*the other way to hide things*/ text-indent: 9999px; overflow: hidden; }

희망 : 당신은 단순히 랭 선택기를 사용하여 CSS로 현재 언어를 숨길 수 있습니다 귀하의 질문에 관해서는

.

좋습니다.

+0

감사합니다. 나는이 결과를 게시하고 결과를 게시 할 것입니다. – Peter

0

내 wordpress 설치 중 2 개 (3.8.1이 4.0으로 업데이트 됨)에서 mqtranslate (동일한 코드)가 문제와 유사한 URL 기반 라우팅을 사용할 때 콘텐츠를 번역하지 않는다고 나타났습니다.

신선한 wp 4.0에 "qtranslate plus"가 설치되었으며 url 기반 라우팅에서 예상대로 작동했습니다 (그러나 포스트 헤더에 날짜 형식이 엉망으로 보임).

그래서 문제는 qtranslate와 함께 잘 작동하지 않는 버전 번호 일 수 있다고 생각합니다. ppqtranslate_core.php 라인 173의 preg_match-code가 올바른 결과를 제공하지 않을 수도 있습니다.

해결 방법 : 이 시점에서 파기를 중단하고 도메인 기반 라우팅 (영어의 경우 en.site.com, 독일어의 경우 site.com)으로 전환했습니다. 이것은 완벽하게 작동합니다. 네가 할 수 있다면, 해봐.(당신의 공급자가 와일드 카드를 허가하지 않는 경우 *, 단일 언어 또는 en.site.com)는 도메인 제공 업체의 관리자 패널에서 서버 IP로

  1. 경로 하위 도메인 * .site.com 필요
  2. 은 웹 서버 (en.site.com)에 하위 도메인을 설정하여 원래 사이트와 동일한 디렉토리에 라우팅합니다.

    <VirtualHost *:80> 
    ServerName "en.site.com" 
    ServerAdmin [email protected] 
    DocumentRoot /the/path/to/your/html/ 
    <Directory /> 
        Options FollowSymLinks 
        AllowOverride All 
    </Directory> 
    <Directory /the/path/to/your/html/> 
        Options Indexes FollowSymLinks MultiViews 
        AllowOverride All 
        Order allow,deny 
        allow from all 
    </Directory> 
    
        ErrorLog ${APACHE_LOG_DIR}/error.log 
        CustomLog ${APACHE_LOG_DIR}/access.log combined 
    </VirtualHost> 
    

    다시 시작 : 정당하고 (일부 서버 또는 apache2.conf의)하려면 httpd.conf에 다음 코드 (편집 도메인 이름과 웹 루트 경로)를 추가

는 httpd.conf 파일에 추가 이 도메인 기반 번역을 수행 한 후에 웹 서버에

/etc/init.d/httpd restart 

을 입력해야합니다.