Как найти языковое направление?

Функция is_rtl() проверяет направление языка блога, если это LTR или RTL.

 public function is_rtl() { return 'rtl' == $this->text_direction; } 

Но я не мог найти, где и кто заполняет данные text_direction . Если я изменил язык блога на арабский, тогда text_direction станет RTL. Откуда он получает информацию о языке?

Данные списка языков извлекаются из trasnaltions api https://api.wordpress.org/translations/core/1.0/, но это не относится к языковому направлению!

Есть ли для этого другой API? Как я могу получить направление языка, который не задан в качестве языка блогов?

Свойство WP_Locale класса WP_Locale умолчанию имеет значение 'ltr' в соответствии с его объявлением , а затем может быть изменено в функции инициализации класса init() в wp-includes/locale.php (около строки # 207 в WP 4.5 ) со следующей логикой :

 // Set text direction. if ( isset( $GLOBALS['text_direction'] ) ) $this->text_direction = $GLOBALS['text_direction']; /* translators: 'rtl' or 'ltr'. This sets the text direction for WordPress. */ elseif ( 'rtl' == _x( 'ltr', 'text direction' ) ) $this->text_direction = 'rtl'; if ( 'rtl' === $this->text_direction && strpos( $GLOBALS['wp_version'], '-src' ) ) { $this->text_direction = 'ltr'; add_action( 'all_admin_notices', array( $this, 'rtl_src_admin_notice' ) ); } 

Используя вышеприведенную логику инициализации, WordPress меняет направление текста на значение $text_direction global, если оно существует. В противном случае применяется функция _x() для получения локализованного значения строки 'ltr' с контекстом 'text direction' .

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

После определения используемого языка WordPress использует load_default_textdomain() чтобы обеспечить доступ к языковым данным настроенного языкового стандарта через глобальный $l10n , который затем выполняет функции локализации для переводов.

Определение языкового направления для языков, отличных от по умолчанию, тем же способом, что WordPress требует многоязыковой установки . Многие из методов, описанных в связанной записи Кодекса, переключают активный язык на лету, поэтому текстовое направление активного языка всегда доступно _x( 'ltr', 'text-direction' ); ,

В качестве альтернативы, если вам нужно получить направление неактивных языков, вы можете установить файл перевода для каждого языка, направление текста которого вы хотите приобрести, а затем создать экземпляры класса Mo и вызвать import_from_file() чтобы сохранить языковые данные отдельно, после чего вызов $mo->translate( 'ltr', 'text_direction' ); будет возвращать текстовое направление языка, если оно установлено.

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