私のテーマの中で自分の翻訳をうまく動かすことができない。これは私が持っているものです
Functions.phpでは、私は持っています:
load_theme_textdomain( 'transparent', get_template_directory_uri() .'/languages' );
私は持っています
... /テーマ/言語/ transparent-en_US.po、
を含む:
# English translations for Transparent package.
# Copyright (C) 2014 Steven Doig
# This file is distributed under the same license as the Transparent package.
# Automatically generated, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: my-pluginname 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-08-06 13:46-0400\n"
"PO-Revision-Date: 2013-03-21 11:20+0400\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"X-Poedit-SourceCharset: iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"
#: header.php:58
msgid "thanks-for-visiting"
msgstr "Hello! Thank you for visiting. Take a look around and subscribe to the "
#: header.php:60
msgid "subscribe-by-email"
msgstr "subscribe by email"
#: header.php:62
msid "for-updates"
msgstr "for updates."
58行目のheader.phpでは、次のようになります。
<p><?php echo __("thanks-for-visiting", 'transparent'); ?><a href="<?php bloginfo('rss2_url'); ?>" title="<?php bloginfo('name'); ?> RSS feed">RSS feed</a>
<?php if (of_get_option('feedburner', '') !== '') {?>
or <a href="http://feedburner.google.com/fb/a/mailverify?uri=<?php echo of_get_option('feedburner', 'no entry');?>&loc=en_US" target="_blank"><?php echo __("subscribe-by-email", 'transparent'); ?></a>
<?php } ?>
<?php echo __("for-updates", 'transparent'); ?></p>
私のstyle.cssには、私は次のものがあります
/*
Theme Name: Transparent
Theme URI: http://websitetechnology.com.au/category/themes/transparent/
Description: Transparent responsive two-column theme.
Tags: green, two-columns, right-sidebar
Author:Steven Doig
Author URI:http://tech.doig.com.au
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Version:1.2
*/
しかし、 フロントエンド には、
thanks-for-visitingRSSフィード更新情報
この翻訳が機能していないのはなぜでしょうか。
あなたのテーマを調べた後、これは私が思い付いたものです。私は、この答えをできるだけ完全にするために、Rubenの解決策も含めて自由を取った。
ここにいくつかの問題があります。
番号1。load_theme_textdomain( 'transparent', get_template_directory_uri() .'/languages' );
する必要があります:
function transparent_theme_setup() {
load_theme_textdomain( 'transparent', get_template_directory() . '/languages' );
$locale = get_locale();
$locale_file = get_template_directory() . "/languages/$locale.php";
if ( is_readable( $locale_file ) ) {
require_once( $locale_file );
}
}
add_action( 'after_setup_theme', 'transparent_theme_setup' );
言語ファイルは常にafter_setup_theme
フックで呼び出される必要があります。
get_template_directory_uri()
も
あるべき
get_template_directory()
。
番号2。<?php echo __("thanks-for-visiting", 'transparent'); ?>
。
全く間違っています。まず、翻訳文字列の中で決して"
を使ってはいけません。翻訳者はそれを認識せず、その文字列をスキップします。常に'
を使用してください。次に、echo
を含む文字列をecho
にしないでください。この場合は_e
を使用する必要があります。したがって、文字列は<?php _e('thanks-for-visiting', 'transparent'); ?>
のようになります。
番号3。スタイルシートのヘッダーにテキストドメインが設定されていません。ヘッダーの最後のText Domain: transparent
のすぐ上に*/
を追加します。だからあなたのヘッダはこのように見えるはずです:
/*
Theme Name: Transparent
Theme URI: http://websitetechnology.com.au/category/themes/transparent/
Description: Transparent responsive two-column theme.
Tags: green, two-columns, right-sidebar
Author:Steven Doig
Author URI:http://tech.doig.com.au
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Version:1.2
Text Domain: transparent
*/
あなたのpoファイルの命名は間違っているので、あなたのmoファイルはそうするべきです。 somename-en_US.po
とsomename-en_US.mo
はプラグインによってのみ使用されます。テーマはen_US.po
とen_US.mo
というファイル名だけを使います
番号5。あなたのpoファイルは間違って作成されています。 poedit を使用してpoファイルを作成するには、次の手順に従います。私の詩はアフリカーンス語です。
Poeditを開き、カタログを作成するためのオプションを選択します。以下の画面が表示されます
。
図のように必須フィールドに入力します。
「Sources paths」タブをクリックして、図のように入力します。言語ファイルがメインディレクトリにある場合は "Paths"フィールドに.
を使用し、言語ファイルがlanguageのようなフォルダにある場合は..
を使用します。
次に[Sources keywords]タブをクリックして、図のように入力します。
今すぐあなたの言語ファイルにen_US.po
としてpoeditファイルを保存してください。 poファイルは、本来あるべき場所に直接保存することが重要です。そうしないと機能しません。 Poeditはあなたのpoファイルに翻訳するための全ての文字列を検索して追加します。 poファイルを保存すると、moファイルが自動的に作成されます。
最後に、あなたのpoヘッダはこのようになっているはずです。
msgid ""
msgstr ""
"Project-Id-Version: Transparent v1.2\n"
"POT-Creation-Date: 2014-03-12 16:25+0200\n"
"PO-Revision-Date: 2014-03-12 16:28+0200\n"
"Last-Translator: Pieter Goosen <[email protected]>\n"
"Language-Team: Transparent <[email protected]>\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.5\n"
"X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: ..\n"
さらに読むために、 this tutorialをチェックしてください。私が翻訳を始めたとき、本当に助かりました。お役に立てれば。
get_template_directory_uri() を使用しないでください。代わりに get_template_directory() を使用してください。あなたのコードは次のようになります。
load_theme_textdomain( 'transparent', get_template_directory() . '/languages' );
$locale = get_locale();
$locale_file = get_template_directory() . "/languages/$locale.php";
if ( is_readable( $locale_file ) ) {
require_once( $locale_file );
}
load_theme_textdomain
を使用するとき、あなたの言語のファイル名は正確にロケールに基づいて命名されなければなりません。transparent-en_US.moの代わりにen_US.moという名前を付けます
次のURLにある手順をよく読んでください。 https://codex.wordpress.org/Function_Reference/load_theme_textdomain