Учебники

Как интернационализировать WordPress для локализации

Как интернационализировать WordPress для локализации

Вот Это Да! Если вам интересно, что означает этот пост, не волнуйтесь, вы не единственный! Как вы знаете, WordPress переведен на множество языков, но очень часто плагины или темы содержат некоторые строки, которые не переведены на ваш родной язык, и это более чем разочаровывает: это раздражает.

Так почему это происходит? Видимо потому, что разработчики не используют должную интернационализацию. То есть использование определенных функций, включенных в WordPress, которые позволяют легко переводить все.

Шаг 1. Загрузка файлов перевода

Самый первый шаг при создании темы – загрузить файлы перевода, есть много способов сделать это, но самый простой – использовать этот код:

add_action('after_setup_theme', 'my_theme_setup'); function my_theme_setup(){ load_theme_textdomain('my_theme', get_template_directory(). '/languages'); }

При работе над плагином это примерно то же самое:

function myplugin_init() { load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__) ) ); } add_action('plugins_loaded', 'myplugin_init');

Теперь, когда файлы загружены в папку «languages», вы можете создать файл .pot или .po с помощью бесплатного программного обеспечения POedit.

Шаг 2 – Перевод строк

Когда вам нужна переводимая строка, вам нужно включить содержащуюся строку в функцию. Наиболее часто используемые функции – это e() и _ (). Вот пример использования ():

echo '<p>'. __( 'This is the string content', 'textdomain' ). '</p>';

Что эта функция возвращает содержащуюся строку, но не печатает ее. Вот почему нам нужно использовать эхо. Но функция _e () печатает строку, содержащуюся, без использования echo или print:

echo '<p>'; _e( 'This is the string content', 'textdomain' ); echo '</p>';

Шаг 3 – Перевод строки, содержащей переменные

Но иногда ваша строка может содержать переменные. Использование e () и _ () не работает. Итак, в этом случае вам понадобятся функции printf () и sprintf (). Как мы видели ранее, printf () отображает строку, а sprintf () сохраняет ее.

echo '<p>'; printf( __( 'I bought %d books.' ), $_books_count ); echo '</p>'; echo '<p>'; echo sprintf( __( 'I bought %d books.' ), $_books_count ); echo '</p>';

Шаг 4 – Строки с более чем одной переменной

В случае, если строка содержит более одной переменной, используйте следующий код:

printf( __( 'I bought %1$s books, and %2$s tomatoes.' ), $books_count, $tomatoes_count );

Шаг 5 – Работа с множественным числом

В приведенном выше примере я купил книги и помидоры. Но что я купил только одну книгу? Код напечатает «1 книгу», а это неверно. Итак, чтобы иметь дело с множественным числом, есть еще одна функция, называемая _n (). Вот как им пользоваться:

printf( _n( 'i bought %d book.', 'i bought %d books.', $books_count ), $books_count );

Шаг 6 – Контексты

Иногда слово может иметь разное значение в зависимости от контекста. Затем вы можете использовать эти функции _x () и _ex (). Второй выводит строку, в то время как первый сохраняет только ее содержимое. У этих функций есть второй аргумент, объясняющий контекст. Например, если слово используется дважды на странице, но имеет разные значения в содержимом и на боковой панели, ваш код будет выглядеть примерно так:

/* APPARENT (obvious vs. not clear) — It was apparent to all, Joe was the apparent loser. Two different contexts for the word "apparent" */ // In the content echo _x( 'apparent', 'in_content', 'my-plugin-domain' ); // In the sidebar echo _x( 'apparent', 'in_sidebar', 'my-plugin-domain' );

Шаг 7 – интернационализация Javascript

И, наконец, когда у вас есть строка, которую нужно переводить в файле javascript, вы можете использовать метод, определенный в кодексе, используя wp_localize_script ().

// In your PHP file: wp_enqueue_script( 'script-handle', … ); wp_localize_script( 'script-handle', 'objectL10n', array( 'speed' => $distance / $time, 'submit' => __( 'Submit', 'my-plugin-domain' ),) ); // in the javascript file: $('#submit').val(objectL10n.submit); $('#speed').val('{speed} km/h'.replace('{speed}', objectL10n.speed));

Просто замените свои собственные переменные, и все готово!

Источник записи: https://www.wpexplorer.com

Похожие сообщения
Учебники

Резервное копирование WordPress в облако с помощью BackWPup - подробное руководство

Учебники

Как ограничить контент по участнику в WordPress

Учебники

9 советов для успешного запуска продукта WordPress

Учебники

Создание пользовательских статусов заказов WooCommerce для WordPress