Intereting Posts
Настройка экрана «Пользователи-пользователи» на основе роли Как получить массив с правильным порядком вложенных комментариев? Разница между `is_serialized_string` и` is_serialized` Как удалить <div = "mceTemp"> с помощью встроенных фильтров WordPress Я супер администратор, и я хочу дать администратору возможность добавлять новых пользователей …? что такое стандартный ulr для разработки плагина wordpress? Измените имя файла из wp_generate_attachment_metadata Допустимый запрос SQL запроса Как получить значение из PHP в JQuery через Ajax как создавать и показывать сеансы в прессе? $ wpdb-> wp_users, возвращающее пустое значение для Вывод короткого кода всегда отображается вверху страницы Как получить код формы с страницы редактирования определенного сообщения? Невозможно изменить приоритет с помощью 'remove_action' и 'add_action' в дочерней теме Выполнить функцию, когда администратор изменяет роль пользователя

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

Что делает 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 включить файл.