Локализация темы WordPress без текстового домена - PullRequest
1 голос
/ 28 июля 2010

У меня есть тема WordPress без textdomain (то есть e (x), а не e (x, domain)). У меня также есть файлы .po и .mo в папке в / themes / My Theme / localization (обратите внимание на имя пробела в моей теме). Я хотел бы активировать fr_FR. Я создал fr_FR.po и .mo и изменил wp-config, чтобы добавить локаль для fr_FR. Тем не менее, я все еще не заставляю французов работать. Я видел много сайтов, в которых вам предлагалось добавить домен load_theme_textdomain в верхней части functions.php, но я не знаю, каким будет мой текстовый домен. Любая помощь будет оценена.

Юсеф

Ответы [ 3 ]

6 голосов
/ 28 июля 2010

Чтобы заставить работать локализацию темы, вам нужно пройтись по вашей теме и добавить домен к каждому вызову функции _e() и __().это:

_e('some text');
__('some other text');

Должно стать так:

_e('some text', 'your-domain');
__('some other text', 'your-domain');

Далее вам нужно добавить этот бит кода в начало вашего файла functions.php:

load_theme_textdomain( 'your-domain', TEMPLATEPATH.'/localization' );

$locale = get_locale();
$locale_file = TEMPLATEPATH."/localization/$locale.php";
if (is_readable($locale_file))
    require_once($locale_file);

Подробнее об этом можно прочитать в этом посте .

5 голосов
/ 20 апреля 2011

Добавьте свой собственный текстовый домен. Я сделал это недавно с темой, которая не была предназначена для локализации, поэтому я публикую то, что я сделал.

Добавить это в functions.php

load_theme_textdomain( 'your-domain', TEMPLATEPATH.'/languages' );

где your-domain может быть любым именем, но сохраняйте его единообразным во всех файлах темы.

Теперь просмотрите все PHP-файлы темы и выполните следующие действия:

Если вы видите _e('some text'), измените его на _e('some text', 'your-domain');

Если вы видите __('some text'), измените его на __('some text', 'your-domain');

Если вы видите "some text" без __() или _e(), тогда

Если в вызове функции используется "some text", сделайте его __(), как указано выше, включая текстовый домен

Если "some text" только что напечатан и не является частью какого-либо вызова функции, окружите его _e(), как показано выше, и не забудьте текстовую область.

Для получения дополнительной информации прочитайте Руководство по интернационализации и локализации Wordpress .

0 голосов
/ 31 декабря 2012

После невероятно длинной цепочки форумов, проходящих те же шаги по настройке, когда все работает правильно, я наконец-то нашел причину проблемы для меня.

Если сервер устанавливает глобальный $locale до того, как WordPress использует bash, тогда WordPress использует языковые настройки сервера (в файле wp-includes/l10n.php функция get_locale).

Решение, которое я использовал, - установить глобальный языковой стандарт $ прямо рядом с определением WPLANG ...

global $locale;
$locale = 'am_AM';
define('WPLANG', $locale);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...