如何找到语言方向?

时间:2016-04-13 作者:Fahad Alduraibi

功能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?如何获取未设置为博客语言的语言的方向?

1 个回复
最合适的回答,由SO网友:bosco 整理而成

这个text_direction 的属性the WP_Locale class 默认为\'ltr\' 根据it\'s declaration, 然后可以在类的init() 中的初始化函数wp-includes/locale.php (靠近line #207 in 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 全局,如果存在。否则,它适用the _x() function 检索字符串的本地化值\'ltr\' 上下文为\'text direction\'.

因此,文本方向通常由所选语言的翻译文件设置。Here 您可以在基于web的核心翻译界面中看到阿拉伯语的文本方向翻译。

确定要使用的语言后,WordPress使用the load_default_textdomain() function 通过提供对已配置语言环境的语言数据的访问$l10n 然后本地化功能将依赖于global进行翻译。

用WordPress所需要的相同方法确定非默认语言的语言方向a multi-language installation. 链接的Codex条目中详细介绍的许多方法会动态地切换出活动区域设置,因此活动语言的文本方向始终可以通过_x( \'ltr\', \'text-direction\' );.

或者,如果需要了解非活动语言的方向,可以install the translation file 对于您希望获取其文本方向的每种语言,请创建Mo 类和调用import_from_file() 保持语言数据分离,然后调用$mo->translate( \'ltr\', \'text_direction\' ); 将返回语言的文本方向(如果设置)。

根据您需要获取已卸载语言的文本方向的原因,事先编译一个静态语言方向列表可能会更高效,资源消耗更少。

相关推荐

如何删除LANGUAGE_ATTRIBUTES()上的XMLN?

Hello I\'am get this error on w3c,因为xmlns 已弃用。如何删除xmlns?属性xmlns:此处不允许fb<html lang=\"en-US\" xmlns:fb=\"http://ogp.me/ns/fb#\" xmlns:addthis=\"http://www.addthis.com/help/api-spec\" prefix=\"og: http://ogp.me/ns#\"> 我的代码是<html <?php langu