WordPress: WordPressで使用できるロケール名一覧を取得してみる

WordPressには文字列単位での多言語化機能があります。
この機能を利用するには、言語ごとに.moファイルを用意する必要があります。
そして、このファイルの名前には言語と対応するロケール名を含めないといけません。

ロケール名はネットなどで検索して調べることができます。
しかし日本語ロケール一つを見ても、「ja」とか「ja_JP」とか「ja_JP.utf8」とかいろいろ出てきます。

どれを使用するべきか不明なので、WordPressの中身を覗いて確認してみます。

一般設定画面でロケール名一覧を確認できた

当初はソースコードを解読する予定でしたが、もっと簡単な方法でロケール名一覧を確認できました。
次の手順で確認できます。

  1. 管理画面にログインする
  2. 設定 > 一般 を開く
  3. ページのソースを表示する
    表示方法
    ブラウザ上でマウスの右をクリックしてメニューを表示します。
    ブラウザ メニュー
    ページの表示をクリックします。
  4. スクロールやブラウザの検索機能を使用して、「サイトの言語」という文字を探す

    検索方法
    Windowsは Ctrl+Fキー を、Macは ⌘command+Fキー を押すと検索窓が表示されます。
  5. 以降に続くoptionタグを見ることで、ロケール一覧を確認できます。

■optionタグの見方

optionタグを見ると、特定の属性を持っているものと持っていないものがあります。
今回は気にしなくても大丈夫です。
重要なのは value属性です。

例えば日本語が選択されているとき、次のようになっていると思います。

<option value="ja" lang="ja" selected='selected' data-installed="1">日本語</option>

このときvalue属性を見ると、"ja" となっています。
これが日本語のロケール名になります。

ページのソースをよくみると、最初のoptionタグのvalue属性が空欄になっています。

<option value="" lang="en" data-installed="1">English (United States)</option>

WordPressは 英語(米国)が規定値のためです。
内部では "en_US" が使用されます。

なお、言語の表記は現地の文字になります。
例えばフランス語は、次のようになっています。

<option value="fr_CA" lang="fr">Français du Canada</option>
<option value="fr_BE" lang="fr">Français de Belgique</option>
<option value="fr_FR" lang="fr">Français</option>

フランス語のロケール名を調べるとき英語の「French」では検索できません。
現地の文字を使用する必要があります。

内部の情報を参照してロケール一覧を作成する

現地の文字で検索するのは少し面倒ですね。
WordPressの内部では英語での言語名を保持しているようなので、これを利用してロケール一覧を作成してみます。

次のコードをfunction.phpや自作プラグインに記述します。

  • add_shortcode( 'print_transient' ,'my_print_transient');
  • function my_print_transient(){
  • $translations = get_site_transient( 'available_translations' );
  • $result = '<style>#translationstbl{margin: 1em auto;}#translationstbl td{border:1px solid black;}</style>';
  • $result .= "\n<table id='translationstbl'>\n";
  • $result .= "<tr><th>英語表記</th><th>現地表記</th><th>ロケール名</th></tr>\n";
  • forEach( $translations as $trans ){
  • $result .= "<tr><td>{$trans['english_name']}</td><td>{$trans['native_name']}</td><td>{$trans['language']}</td></tr>\n";
  • }
  • $result .= "</table>\n";
  • return $result;
  • }
AFFS Simple Code Viewer
Copy

投稿記事内で、[print_transient] を記述してショートコードを呼び出します。
結果はWordPressで使用されているロケール一覧を見てください。

コード内のget_site_transient()関数は、キャッシュされたデータを取得しています。
そのため期限切れなどでデータがキャッシュされていないときは、返り値がfalseになります。
この時の処理は行っていないので、公開記事や管理画面等で使用しないでください。

あくまで一時的な確認用で使用しましょう。

WordPressで使用されているロケール一覧

前項のコードを実行した結果です。
参考にしてください。

英語表記 現地表記 ロケール名
Afrikaans Afrikaans af
Amharic አማርኛ am
Arabic العربية ar
Moroccan Arabic العربية المغربية ary
Assamese অসমীয়া as
South Azerbaijani گؤنئی آذربایجان azb
Azerbaijani Azərbaycan dili az
Belarusian Беларуская мова bel
Bulgarian Български bg_BG
Bengali (Bangladesh) বাংলা bn_BD
Tibetan བོད་ཡིག bo
Bosnian Bosanski bs_BA
Catalan Català ca
Cebuano Cebuano ceb
Czech Čeština cs_CZ
Welsh Cymraeg cy
Danish Dansk da_DK
German Deutsch de_DE
German (Austria) Deutsch (Österreich) de_AT
German (Switzerland, Informal) Deutsch (Schweiz, Du) de_CH_informal
German (Switzerland) Deutsch (Schweiz) de_CH
German (Formal) Deutsch (Sie) de_DE_formal
Lower Sorbian Dolnoserbšćina dsb
Dzongkha རྫོང་ཁ dzo
Greek Ελληνικά el
English (UK) English (UK) en_GB
English (New Zealand) English (New Zealand) en_NZ
English (South Africa) English (South Africa) en_ZA
English (Australia) English (Australia) en_AU
English (Canada) English (Canada) en_CA
Esperanto Esperanto eo
Spanish (Ecuador) Español de Ecuador es_EC
Spanish (Mexico) Español de México es_MX
Spanish (Argentina) Español de Argentina es_AR
Spanish (Venezuela) Español de Venezuela es_VE
Spanish (Dominican Republic) Español de República Dominicana es_DO
Spanish (Costa Rica) Español de Costa Rica es_CR
Spanish (Peru) Español de Perú es_PE
Spanish (Chile) Español de Chile es_CL
Spanish (Uruguay) Español de Uruguay es_UY
Spanish (Puerto Rico) Español de Puerto Rico es_PR
Spanish (Spain) Español es_ES
Spanish (Guatemala) Español de Guatemala es_GT
Spanish (Colombia) Español de Colombia es_CO
Estonian Eesti et
Basque Euskara eu
Persian فارسی fa_IR
Persian (Afghanistan) (فارسی (افغانستان fa_AF
Finnish Suomi fi
French (Canada) Français du Canada fr_CA
French (France) Français fr_FR
French (Belgium) Français de Belgique fr_BE
Friulian Friulian fur
Scottish Gaelic Gàidhlig gd
Galician Galego gl_ES
Gujarati ગુજરાતી gu
Hazaragi هزاره گی haz
Hebrew עִבְרִית he_IL
Hindi हिन्दी hi_IN
Croatian Hrvatski hr
Upper Sorbian Hornjoserbšćina hsb
Hungarian Magyar hu_HU
Armenian Հայերեն hy
Indonesian Bahasa Indonesia id_ID
Icelandic Íslenska is_IS
Italian Italiano it_IT
Japanese 日本語 ja
Javanese Basa Jawa jv_ID
Georgian ქართული ka_GE
Kabyle Taqbaylit kab
Kazakh Қазақ тілі kk
Khmer ភាសាខ្មែរ km
Kannada ಕನ್ನಡ kn
Korean 한국어 ko_KR
Kurdish (Sorani) كوردی‎ ckb
Lao ພາສາລາວ lo
Lithuanian Lietuvių kalba lt_LT
Latvian Latviešu valoda lv
Macedonian Македонски јазик mk_MK
Malayalam മലയാളം ml_IN
Mongolian Монгол mn
Marathi मराठी mr
Malay Bahasa Melayu ms_MY
Myanmar (Burmese) ဗမာစာ my_MM
Norwegian (Bokmål) Norsk bokmål nb_NO
Nepali नेपाली ne_NP
Dutch Nederlands nl_NL
Dutch (Belgium) Nederlands (België) nl_BE
Dutch (Formal) Nederlands (Formeel) nl_NL_formal
Norwegian (Nynorsk) Norsk nynorsk nn_NO
Occitan Occitan oci
Punjabi ਪੰਜਾਬੀ pa_IN
Polish Polski pl_PL
Pashto پښتو ps
Portuguese (Brazil) Português do Brasil pt_BR
Portuguese (Portugal) Português pt_PT
Portuguese (Portugal, AO90) Português (AO90) pt_PT_ao90
Portuguese (Angola) Português de Angola pt_AO
Rohingya Ruáinga rhg
Romanian Română ro_RO
Russian Русский ru_RU
Sakha Сахалыы sah
Sindhi سنڌي snd
Sinhala සිංහල si_LK
Slovak Slovenčina sk_SK
Saraiki سرائیکی skr
Slovenian Slovenščina sl_SI
Albanian Shqip sq
Serbian Српски језик sr_RS
Swedish Svenska sv_SE
Swahili Kiswahili sw
Silesian Ślōnskŏ gŏdka szl
Tamil தமிழ் ta_IN
Tamil (Sri Lanka) தமிழ் ta_LK
Telugu తెలుగు te
Thai ไทย th
Tagalog Tagalog tl
Turkish Türkçe tr_TR
Tatar Татар теле tt_RU
Tahitian Reo Tahiti tah
Uighur ئۇيغۇرچە ug_CN
Ukrainian Українська uk
Urdu اردو ur
Uzbek O‘zbekcha uz_UZ
Vietnamese Tiếng Việt vi
Chinese (Taiwan) 繁體中文 zh_TW
Chinese (China) 简体中文 zh_CN
Chinese (Hong Kong) 香港中文版 zh_HK

WordPressのロケール取得先

前項の結果ですが、WordPressのソースコードに含まれていません。
WordPressは次のWeb APIにアクセスして、データを取得しています。

http://api.wordpress.org/translations/core/1.0/

ChromeでURLにアクセスすると、次のように結果が表示されます。

Web API 結果

2022/4現在は前項のデータを得ることができますが、しばらく経つと内容が変更されているかもしれませんね。