web-dev-qa-db-ja.com

言語の方向性を見つける方法

LTRまたはRTLの場合、関数is_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はありますか?ブログの言語として設定されていない言語の指示を取得するにはどうすればよいですか。

2
Fahad Alduraibi

text_directionクラスWP_Localeプロパティは、 その宣言 に従ってデフォルトで'ltr'になります。その後、クラスのinit()初期化関数で wp-includes/locale.php (near WP 4.5 )の行#207に次のロジックを追加します。

// 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グローバルの値(存在する場合)に変更します。それに失敗すると、 _x()関数 を適用して、'ltr'のコンテキストで文字列'text direction'のローカライズされた値を取得します。

そのため、多くの場合、テキストの方向は選択した言語の翻訳ファイルによって設定されます。 こちら コア翻訳用のウェブベースのインターフェースでアラビア語のテキスト方向の翻訳を見ることができます。

使用する言語を決定した後、WordPressは the load_default_textdomain() function を使用して、ローカライズ機能が翻訳に依存する$l10nグローバルを介して、構成されたロケールの言語データへのアクセスを提供します。

WordPressが 多言語インストール を必要とするのと同じ意味で、デフォルト以外の言語の言語方向を決定することもできます。リンクされたCodexエントリで詳しく説明されているメソッドの多くは、アクティブなロケールをその場で切り替えます。そのため、アクティブな言語のテキストの方向は、_x( 'ltr', 'text-direction' );によって常に利用可能です。

あるいは、非アクティブな言語の方向を取得する必要がある場合は、テキスト方向を取得したいすべての言語に対して 翻訳ファイルをインストール し、Moクラスのインスタンスを作成し、import_from_file()を呼び出して言語データを保持します分離され、その後$mo->translate( 'ltr', 'text_direction' );の呼び出しは、設定されている場合、言語のテキスト方向を返します。

アンロードされた言語のテキスト方向を取得する必要がある理由によっては、事前に言語方向の静的リストをコンパイルする方がはるかに効率的であり、リソースをあまり必要としません。

1
bosco