Internationalization wordpress (перевод плагинов и тем)

Рубрика: wordpress, Дата: 21 March, 2016, Автор:

Привет!
Рассмотрим Internationalization (интернационализация) в wordpress, это когда мы создаем плагин и можем его перевести на разные языки.

Для того чтобы выводить строки которые могут быть переведены в wordpress существуют различные функции, мы рассмотрим две __() и _e()

__() – функция принимает строку и возвращает значение.
_e() – принимает строку но выводить ее на экран

$text = __('test internationalize Store Settings Page', 'test-internationaliz-plugin');
_e('Simple Add Store Options', 'test-internationaliz-plugin')

Первый параметр это строка которую нужно переводить, а второй параметр это домен который будет использоваться для названия файла, например если русский то название файла с переводом должно быть test-internationaliz-plugin-ru_RU.

Папка localization в папке плагина и в ней находятся файлы с переводами, подключается следующим хуком.

add_action( 'init', 'prowp_init' );
function prowp_init() {
    load_plugin_textdomain( 'test-internationaliz-plugin', false, plugin_basename( dirname( __FILE__ ) .'/localization' ) );
}

Создание файлов переводов используя программу Poedit

Я создал тестовый плагин
Скачать: test-internationaliz
вот его код:

Показать »

test-internationaliz.php

<?php
/*
Plugin Name: test-internationaliz-plagin
Plugin URI: http://kselax.ru/
Description: Create a simple store to display product information
Version: 1.0
Author: Hacker Kselax
Author URI: http://kselax.ru
License: GPLv2
*/
 
/*  Copyright 2016  Hacker Kselax  (email : neovich@mail.ua)
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

add_action( 'init', 'prowp_init' );
function prowp_init() {
    load_plugin_textdomain( 'test-internationaliz-plugin', false, plugin_basename( dirname( __FILE__ ) .'/localization' ) );
}

// == 2. Создаем страницу настроек для продукта и регистрируем опции ==
// Action hook  меню настроек, пункт в setting
add_action( 'admin_menu', 'test_internationaliz_store_menu' );

//создаем маску для суб-меню, добавляя item в настройки
function test_internationaliz_store_menu() {
   
    
    add_options_page( __( 'test internationalize Store Settings Page', 'test-internationaliz-plugin'), __('testinternationaliz Store Settings', 'test-internationaliz-plugin' ), 'manage_options', 'test-internationaliz-store-settings', 'test_internationaliz_store_settings_page' );
     
}
 
//строим плагина настроек страницу
function test_internationaliz_store_settings_page() {
    
    //desplay form
    ?>
    <div class="wrap">
    <h2><?php _e( 'Simple Add Store Options', 'test-internationaliz-plugin' ); ?></h2>
 
    <form method="post" action="options.php">
        <?php 
        //связываем страницу с групой установок
        settings_fields('simple-add-settings-group'); 
        ?>
        <table class="form-table">
            <tr valign="top">
            <th scope="row"><?php _e( 'Show Product Inventory', 'test-internationaliz-plugin' ) ?></th>
            <td><?php _e('show input','test-internationaliz-plugin'); ?></td>
            </tr>
 
            <tr valign="top">
            <th scope="row"><?php _e( 'Currency Sign', 'test-internationaliz-plugin' ) ?></th>
            <td><?php _e('there input too','test-internationaliz-plugin') ?></td>
            </tr>

            <tr valign="top">
            <th scope="row"><?php _e( 'Currency Sign2', 'test-internationaliz-plugin' ) ?></th>
            <td><?php _e('there input too','test-internationaliz-plugin') ?></td>
            </tr>
        </table>
 
        <p class="submit">
        <input type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'test-internationaliz-plugin' ); ?>" />
        </p>
 
    </form>
    </div>
<?php
}

Скачиваем программу Poedit

Дальше устанавливаем программу и запускаем. Я не сразу понял как пользоваться этой программой. Заходим File -> catalogs manager

PoeditВ Catalogs manager вводим название нашего проекта это наше название плагина и указываем путь к директории нашего плагина

poedit 1Нажимаем Ок, Закрываем менежер, дальше идем в File -> New, выбираем язык English (можно и русский выбрать).
Нас могут попроосить сохранить проект, мы при сохранении указываем путь к директории localization. и указываем имя файла internationaliz.pot, нас будет просить по умолчанию сохранить с расширением po, но я ввел pot и у нас сразу же появились два файла в папке localization
LocalizationДальше заходим в подменю меню Catalog->Properties…

catalogПоявится менюшка с настройками и вкладками, на первой вкладке вводим название нашего плагина

catalog-properties

На вкладке Source Path вводим нашу главную директрию плагина

pathМеня еще раз попросили сохранить, первый раз я наверно не тот проект сохранил, я вручную сохранил проект и назвал его так же internationaliz.pot и перезаписали, ну вы сами с этим разберетесь. И дальше на следующей вкладке вводим наши функции

keywordsДальше нажимаем Ок, потом идем в Catalog -> Update from sources

update from sourcesпоявится окошко с кнопками, нажмите сохранить, пойдет процес обработки и у вас вылезет окошко с фразами

Кстати может не создаться файл и вывестись ошибки, у меня такое было ошибки из за того что перед функциями __() и _e() находится комментарий //вавыфаф например такой или другой из за этого может не компилироваться

daneВсе мы Pot файл создали. Закрывае программку и заходим в нашу папку localization открываем файл internationaliz.pot, а файл internationaliz.mo можно удалить, он нам не нуже. Все мы его открыли и у нас появилось такое окошко

create new translationНажимаем кнопку Create new translation и дальше выбираем язык русский и переводим наши фразы

translate

Все нажимаем кнопку сохранить, вводим имя

save-ru_RU

Все у нас создано в директории два файла локализации один .mo, один .po , Перевод мы сделали, заходим в админку и у нас должен текст плагина перевестись на русский

admin wp

Локализация сейчас в вордпресс меняется в админке Настройки -> Общие.
А Раньш прописывали переменную в wp-config.php файле
/** Добавляем локализацию */
//define ( 'WPLANG', 'en-GB' );

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *