Intereting Posts
Где установлены $ current_user-> allcaps? Как создать короткий код для печати определенных значений, хранящихся в мета-массиве сообщений? вы можете установить значение по умолчанию для настраиваемого поля Фильтр по значению игнорирует короткие коды Загрузите пользовательский файл csv, прочитайте содержимое и удалите этот файл Не удалось get_the_content (); сообщения в WordPress через AJAX Получать данные всех сообщений запроса перед разбиением на страницы Отправить сообщение пользователям после удаления учетной записи Ссылка на URL-адрес файла по умолчанию Что означает «и» означает infront переменной? Загрузка JS / CSS короткого кода в сообщении Можно ли каким-то образом использовать пользовательские типы типа сообщений на странице с тем же самым пропуском? Как иметь одну страницу с сообщениями в хронологическом порядке, но другие хронологически? Пользовательское поле редактора, отображающее HTML в редакторе Visual Такая же таксономия для разных типов объектов

Почему я не могу использовать константу класса как текстовый домен?

Что делает WordPress.org сделать интернационализацию плагина одобренным?

Я создал свой первый плагин и вот главный код:

https://plugins.trac.wordpress.org/browser/mastercurrency-wp/trunk/mastercurrencywp.php?rev=1374404

Я использую константу для текстового домена:

class mastercurrencywp { const plugin_textdomain = 'mcwpww'; } 

И позже в том же классе я использую его вот так:

 $curr_desc['EUR'] = __('Euro', self::plugin_textdomain); 

Я тестировал это локально, а затем интернационализировал плагин, я также добавил шведский перевод (который работает на моем локальном сервере), но wordpress.org заявляет:

 This plugin is not properly prepared for localization. If you would like to translate this plugin, please contact the author. 

( https://translate.wordpress.org/projects/wp-plugins/mastercurrency-wp )

Зачем? (Чего не хватает?)

Я только что обновил плагин, так что может потребоваться некоторое время, прежде чем wordpress.org обновит его заявление?

Solutions Collecting From Web of "Почему я не могу использовать константу класса как текстовый домен?"

Значение константы или переменной может быть оценено только парсером PHP. Инструмент, который используется для извлечения переводимых строк, написан на PHP, но это просто синтаксический анализатор строк. Он не запускает ваш код, потому что это будет слишком медленно и подвержено ошибкам.

Вот пример того, насколько сложным может быть:

 interface FooTranslate { const TEXT_DOMAIN = 'foo'; } interface BarTranslate extends FooTranslate {} class FooBar implements BarTranslate { public function greeting() { _e( 'hello!', self::TEXT_DOMAIN ); } } (new FooBar)->greeting(); 

Теперь найдите правильное строковое значение для текстового домена без выполнения PHP. Сложно.


Вы должны использовать простую строку для всех вызовов функций перевода.

Руководство разработчика говорит нам, что очень четко, к сожалению, в стиле сообщения об ошибке и с неправильными кавычками:

Не используйте имена переменных для части текстового домена функции gettext. Не делайте это как ярлык: __( 'Translate me.' , $text_domain );

Во второй заметке: Пожалуйста , не загружайте файлы перевода в init . Это дорого: эти файлы теперь загружаются при каждом вызове запросов AJAX, комментариев и других файлов, которые могут быть даже не связаны с вашим плагином. Проверьте текущий контекст запроса, прежде чем вы попросите WordPress включить файл.