13

たとえば、Poeditを使用して.poファイルと.moファイルを生成することにより、テーマとテンプレートの翻訳を作成する方法を知っています。しかし、テンプレート名は各テンプレートファイルの上部にあるPHPコメントに記述されているため、私が見ているようにこれを翻訳する方法はありません。

WordPressテンプレートヘッダー:

/**
 * Template Name: Three columns
 *
 * @package WordPress
 */

テンプレート名はWordpressによって何らかの形で解析され、ページを作成するときにテンプレート選択ドロップダウンに入力するために使用されます。

だから私の質問は:WordPressテンプレート名を翻訳する方法はありますか?WordPressは、テンプレートファイルに設定できる特定の変数も検索しますか?それとも不可能ですか?

4

2 に答える 2

15

私はごく最近それに出くわしました。これが私がこれを回避した方法です:

まず、(まだ持っていない場合) を に追加Text Domain: mytext_domainしますstyle.css。ここで、mytext_domainはテーマの実際のテキスト ドメインです。

次に、テーマのどこかに翻訳関数へのダミー呼び出しを追加します (最善の方法は、テンプレート名宣言のすぐ下に追加することです。そうすれば、なぜそれを配置したのか不思議に思うことはありません)。

/**
 * Template Name: Three columns
 *
 * @package WordPress
 */
__( 'Three columns', 'mytext_domain' );

これを行う理由は、WordPress がテンプレート名をtranslate()関数に渡すためですが、トランスレーター プラグインはコードを解析するため、テンプレート名が .po (または .mo?) ファイルの一部であることを認識していません。__()その問題を修正するためのダミー呼び出し。

Text Domainstyle.css に宣言を追加する理由は、WordPress がテンプレート名を解析するときにテーマのテキストドメインを探す場所だからです。

正確なソースを提供することはできません。なぜなら、それがどのように機能し、テンプレート名をどのように変換できるかを理解するまで、コア コードを調べただけだからです。

PP: Poedit がどのように機能するかはわかりません。手動で翻訳を追加する場合は、ダミー呼び出しは必要ないかもしれません。ダミー呼び出しを使用した場合と使用しない場合をテストして、最適な方を使用してください :)

于 2012-11-26T09:00:30.887 に答える
6

より良い方法:

  1. Text Domain: theme-slugまだ行っていない場合は、style.css ファイルにヘッダーを追加します。

  2. 公式の WordPress 開発者パッケージを入手するには、develop.svn トランクをチェックしてください: http://develop.svn.wordpress.org/trunk/

  3. そこに、/tools/i18n というディレクトリがあります。そのディレクトリにはmakepot.phpファイルがあります。次のようにテーマに使用できます。

> php makepot.php wp-theme /path/to/your/theme/directory theme-slug.pot

これにより、最新の WordPress コードを使用して POT ファイルが作成されます。ヘッダーから、すべての WordPress i18n 関数から、すべての文字列を取得します。また、他の回答が示唆するような「偽の」文字列を作成する必要がないことも意味します。

svn updatei18n ツールとコア トランク コードは時々新しいものに更新される可能性があるため、時々必ず を実行してください。

i18n ツールを使用する場合は、トランク チェックアウトにある必要があることに注意してください。それらは WordPress 関数に依存してファイルの解析の一部を行うため、ファイルシステム内を移動することはできません。そのため、ツリーを遡って WordPress コアの /src ディレクトリに戻る相対インクルード パスを持っています。ツールが適切に機能するには、トランク ディレクトリ全体が完全である必要があります。ただし、トランク ディレクトリは構成解除することができます。WordPress を正常にインストールする必要はありません。ファイルを適切に解析するために WordPress コードの一部が必要なだけです。

于 2013-11-12T10:52:25.537 に答える