web-dev-qa-db-ja.com

テーマのテキストドメイン&language.POファイルが機能しない

私のテーマの中で自分の翻訳をうまく動かすことができない。これは私が持っているものです

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');?>&amp;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フィード更新情報

この翻訳が機能していないのはなぜでしょうか。

2
Steve

あなたのテーマを調べた後、これは私が思い付いたものです。私は、この答えをできるだけ完全にするために、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.posomename-en_US.moはプラグインによってのみ使用されます。テーマはen_US.poen_US.moというファイル名だけを使います

番号5。あなたのpoファイルは間違って作成されています。 poedit を使用してpoファイルを作成するには、次の手順に従います。私の詩はアフリカーンス語です。

Poeditを開き、カタログを作成するためのオプションを選択します。以下の画面が表示されます

image1

図のように必須フィールドに入力します。

「Sources paths」タブをクリックして、図のように入力します。言語ファイルがメインディレクトリにある場合は "Paths"フィールドに.を使用し、言語ファイルがlanguageのようなフォルダにある場合は..を使用します。

image2

次に[Sources keywords]タブをクリックして、図のように入力します。

image3

今すぐあなたの言語ファイルに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をチェックしてください。私が翻訳を始めたとき、本当に助かりました。お役に立てれば。

11
Pieter Goosen

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 );
    }
3
Ruben Bristian

load_theme_textdomainを使用するとき、あなたの言語のファイル名は正確にロケールに基づいて命名されなければなりません。transparent-en_US.moの代わりにen_US.moという名前を付けます

次のURLにある手順をよく読んでください。 https://codex.wordpress.org/Function_Reference/load_theme_textdomain

1
MegaWork