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で他サイト検索
■僕がおススメするアフィリエイト教材
■マーケティング施策ツール