3

ドイツ語と英語で作成する必要がある Wordpress テーマを作成しました。ナビゲーションには、現在使用している言語に応じて言語を変更するボタンがあります。(英語のページを表示している場合は、「Deutsch」と表示され、その逆も同様です。)

qTranslate Plus を使用しており、URL に言語コードを表示することを選択しました (/de または /en)。私の主な問題は、カスタム ページ (テンプレート付きの Wordpress ページ) (/custom-page) にいて、言語を変更してもドイツ語に変更されない場合にありますが、ソース コードではリンクに /de/custom-page が表示されます。 . 言語コードを完全に無視し、再び /custom-page に移動します。そのため、言語コードを取り除いているようです。

これは Wordpress の標準的な動作ですか? もしそうなら、どうすれば無効にできますか? また、言語を変更するためのより良い、より信頼できる方法はありますか? 言語をセッションに保存できますか?

注: 「未翻訳のコンテンツを非表示にする」と「デフォルト言語の URL 言語情報を非表示にする」の両方。はチェックされていません。

前もって感謝します、ピーター

4

3 に答える 3

1

qTranslate は十分にサポートされていません。実装を始めたばかりなら、他のプラグインを試してみるべきだと思います。ここに qTranslate のいくつかの代替があります: mqTranslatezTranslate。どちらも qTranslate フォークなので、何も失うことはありません。

あなたの質問に関しては、言語セレクターを使用してcssで現在の言語を単純に非表示にすることができます:

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

お役に立てれば。

よろしくお願いします。

于 2014-10-30T12:06:10.307 に答える
1

私が取り組んでいたサイトで同様の問題がありました。この拡張機能をインストールしたところ、URL に関するいくつかの問題が解決されたようです

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

または、条件ステートメントを使用して javascript/jQuery でボタンをターゲットにして、html lang 属性を検出することもできます。このようなもの:

   var lang = document.documentElement.lang;
 if (lang == 'en-US'){
    $('button').html('your button text')
 }
于 2014-10-28T11:50:15.880 に答える
0

2 つのワードプレス インストール (3.8.1 を 4.0 に更新) で、mqtranslate (同じコード) が URL ベースのルーティングを使用している場合、問題と同様にコンテンツを変換しないことに気付きました。

「qtranslate plus」を新しいwp 4.0にインストールしたところ、URLベースのルーティングで期待どおりに機能しました(ただし、投稿ヘッダーの日付形式が台無しになっているようです)。

したがって、問題はバージョン番号がqtranslateとうまく連携していない可能性があると思います。ppqtranslate_core.php の 173 行目の preg_match-code が正しい結果を与えない可能性があります。

回避策: この時点で掘り下げるのをやめ、ドメインベースのルーティング (英語は en.site.com、ドイツ語は site.com) に切り替えました。これは問題なく動作します。できるならやってみる。必要がある

  1. サブドメイン *.site.com をドメイン プロバイダーの管理パネルでサーバー IP にルーティングします (プロバイダーがワイルドカード * を許可していない場合は、単一言語の場合は en.site.com)。
  2. 元のサイトと同じディレクトリにルーティングするように、Web サーバー (en.site.com) にサブドメインを設定します。次のコード (ドメイン名と webroot へのパスを編集) を httpd.conf (または一部のサーバーでは apache2.conf) に追加するだけです。

httpd.conf に追加します。

<VirtualHost *:80>
ServerName "en.site.com"
ServerAdmin webmaster@localhost
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>

でWebサーバーを再起動します

/etc/init.d/httpd restart

このドメインベースの翻訳が機能するはずです。

于 2014-11-03T13:41:58.913 に答える