5

プラグインが完成しました。ユーザーに多言語機能を提供したいと考えています。私はそれについてゴーグルしましたが、実装するのは難しいです。

WordPress の翻訳を見てきましたが、プラグインに従って翻訳するには基本的な手順が必要です。

私はこれらをやった

  1. POEditをダウンロードしました。
  2. プラグインディレクトリに「french.po」ファイルを作成
  3. コンパイル済み 'french.po' -> 'french.mo'

する必要があります

  1. poファイルでmsgidmsgstrを定義するには?
  2. プラグインに po/mo ファイルをロードする方法は?
  3. po/mo ファイルを介してラベル/テキストを置き換える方法は?
  4. __e()&を使用___()してプラグイン ページの 'msgstr' を置き換える方法は?
4

2 に答える 2

14

Codestyling Localizationというプラグインを使用すると、POEditを使用する必要がなくなります。

'localizationsample' をテキスト ドメインとして使用する例を示します。この場合、言語ファイルは /lang/ ディレクトリにあります。実際のプラグインでこれらの名前である必要はありません。それらは単なる例です。

手順

  1. これらの行をプラグインのコメント ヘッダーに追加して、Codestyling Localization によって認識されるようにします。

    テキスト ドメイン: localizationsample
    ドメイン パス: /lang

  2. langプラグイン ディレクトリに名前の付いたディレクトリを作成します。

  3. Codestyling Localizationプラグインをインストールして有効にします。

  4. に行くTools- >Localization

  5. プラグインを見つけてクリックしますAdd New Language

  6. ラジオ ボタンでローカライズする言語 (国) を選択し、 を押しますCreate po-file。この時点で、.po ファイルが lang フォルダーに作成されていることを確認します。

  7. 押すRescan->scan now私のシステムではこれを行わないと、プラグインは常に「すべてのアイテムが同じテキスト ドメインを使用しているわけではありません」というエラーを表示するため、これをお勧めします。

  8. これを押すEditと、翻訳可能なメッセージをリストした別のページが表示されます。__()これらのメッセージは、関数と_e()プラグイン コードに渡されるものです。

  9. Editの横にある表の をクリックするとCopy、各メッセージの翻訳を入力するダイアログ ボックスが表示されます。翻訳を終了します。

  10. generate mo-fileこの時点で、フォルダに .mo ファイルが作成されているのがわかりますlang

  11. で指定されたロケールを変更wp-config.phpして、翻訳を反映させます。デフォルトはdefine('WPLANG', '');

サンプルプラグイン

/*  
    Plugin Name: Sample Localization
    Description: Demonstrates how to localize your plugin.
    Text Domain: localizationsample
    Domain Path: /lang
*/

// Localization
add_action('init', 'localizationsample_init');
function localizationsample_init() {
    $path = dirname(plugin_basename( __FILE__ )) . '/lang/';
    $loaded = load_plugin_textdomain( 'localizationsample', false, $path);
    if ($_GET['page'] == basename(__FILE__) && !$loaded) {          
        echo '<div class="error">Sample Localization: ' . __('Could not load the localization file: ' . $path, 'localizationsample') . '</div>';
        return;
    } 
} 

// Add Admin Menu 
add_action('admin_menu','localizationsample_menu');
function localizationsample_menu() { 
    add_options_page(
        'Localization Demo',            // admin page title
        'Localization Demo',            // menu item name
        'manage_options',               // access privilege
        basename(__FILE__),                         // page slug for the option page
        'localization_demo_adminpanel'  // call-back function name
    );
}
function localization_demo_adminpanel() {

    echo '<div class="wrap"><div id="icon-themes" class="icon32"></div>';
    echo '<h2>' . __('Hi there!', 'localizationsample') . '</h2>'; 
    echo '<p>';
    _e('Hello world!', 'localizationsample');
    echo '</p>';
    echo '</div>'; // end of wrap
}
于 2012-09-28T15:18:03.713 に答える
5

(この例は DEUTCH への翻訳です。習慣を希望の名前に変更できます。)

すべてのプラグイン ヘッドには、一意の名前があります。(例えば:

/*
Plugin Name: my-pluginname
.......
*/

次に、そのプラグインのフォルダーに、フォルダー「言語」を作成します。

次に、プラグインの .php ファイル (上部のどこかに) に、初期化コードを挿入します。

class load_language 
{
    public function __construct()
    {
    add_action('init', array($this, 'load_my_transl'));
    }

     public function load_my_transl()
    {
        load_plugin_textdomain('my-pluginname', FALSE, dirname(plugin_basename(__FILE__)).'/languages/');
    }
}

$zzzz = new load_language;

次に、任意のテキスト エディターを開き、次のコードのように挿入します (「hello」と「bye」の 2 つのサンプル メッセージのみを追加することに注意してください。同様の行を使用して、好きなだけメッセージを追加できます)。

# English translations for PACKAGE package.
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE 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"


#: mypluginindex.php:87 (it is just a line of a note, to remind where our code appears)
msgid "mymessage1"
msgstr "Hello"

#: mypluginindex.php:88
msgid "mymessage2"
msgstr "Bye"

次に、このファイルを「my-pluginname-en_US.po」として保存します (.po はファイルの拡張子なので、テキスト エディター プログラムが「my-pluginname-en_US.po.TXT」に保存されていないことを確認してください)。

次に、POEDIT ソフトウェアをダウンロードし、このファイルを開きます。「translation」フィールドを編集し、「my-pluginname-de_DE」として保存すると、2 つのファイルが生成されます (poEdit が 2 つ目の .mo ファイルを自動的に生成しない場合は、[ファイル] -> [設定] -> [エディタ] に移動して確認してください)。 「保存時に .mo ファイルを自動的にコンパイルする」というボックス)、

次に、これら2つのファイルを「言語」フォルダーに入れます。

この後、wp-config.php を開き、次のコードを見つけます。

define ('WPLANG, '');

そしてに変更

define ('WPLANG, 'de_DE');

それで全部です。wordperss が読み込まれると、プラグイン言語ファイルがプレフィックス -de_DE で読み込まれます。

したがって、プラグインの .php ファイルでは、次の代わりに:

echo "Something string";

あなたが使用する必要があります:

echo __("mymessage1", 'my-pluginname');



終了した。次に、プラグインをテストする必要があります。
psused リンク: https://codex.wordpress.org/I18n_for_WordPress_Developers
http://codex.wordpress.org/Translating_WordPress
https://codex.wordpress.org/Writing_a_Plugin
http://codex.wordpress.org/Installing_WordPress_in_Your_Language

于 2013-03-27T13:33:18.830 に答える