WordPressには文字列単位での多言語化機能があります。
この機能を利用するには、言語ごとに.moファイルを用意する必要があります。
そして、このファイルの名前には言語と対応するロケール名を含めないといけません。
ロケール名はネットなどで検索して調べることができます。
しかし日本語ロケール一つを見ても、「ja」とか「ja_JP」とか「ja_JP.utf8」とかいろいろ出てきます。
どれを使用するべきか不明なので、WordPressの中身を覗いて確認してみます。
一般設定画面でロケール名一覧を確認できた
当初はソースコードを解読する予定でしたが、もっと簡単な方法でロケール名一覧を確認できました。
次の手順で確認できます。
- 管理画面にログインする
- 設定 > 一般 を開く
- ページのソースを表示する
表示方法
ブラウザ上でマウスの右をクリックしてメニューを表示します。

ページの表示をクリックします。 - スクロールやブラウザの検索機能を使用して、「サイトの言語」という文字を探す
検索方法
Windowsは Ctrl+Fキー を、Macは ⌘command+Fキー を押すと検索窓が表示されます。 - 以降に続く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;
- }
投稿記事内で、[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にアクセスすると、次のように結果が表示されます。

2022/4現在は前項のデータを得ることができますが、しばらく経つと内容が変更されているかもしれませんね。
■Googleで他サイト検索
■僕がおススメするアフィリエイト教材
■マーケティング施策ツール





こんにちは。