テーマ翻訳

閲覧数: 20(0)

ワードプレスの国際化対応はソースコードと翻訳ファイルで行っています。現在のテーマである「Fotografie」ではテンプレートファイルが提供されいていて、それを元に自分で翻訳ファイルを作成すれば、ソースコードの変更無しに「日本語対応」可能です(もちろん日本語以外も)。テンプレートには下のような内容が記載されています。「msgid」がソースコードに書かれるオリジナル言語でのメッセージで、通常「英語」です。ちなみにテンプレートは翻訳対応記述されたソースコードから生成します。例えば、下のソースコードからは、

                                printf(
                                        /* translators: 1: number of comments, 2: post title */
                                        esc_html(
                                                _nx(
                                                        '%1$s Reply to “%2$s”',
                                                        '%1$s Replies to “%2$s”',
                                                        $comments_number,
                                                        'comments title',
                                                        'fotografie'
                                                )

⬇️このようなテンプレートが生成されるわけです。この例は「記事に対するコメント数」です。日本語では「3件の”テーマ翻訳”へのコメント」などと訳されます。

#: ../comments.php:39
#, php-format
msgctxt "comments title"
msgid "%1$s Reply to “%2$s”"
msgid_plural "%1$s Replies to “%2$s”"
msgstr[0] ""
msgstr[1] ""

この流れで「翻訳結果」を確認していたところ、コメントが1件の場合に日本語へ翻訳されていない事が発覚!ソースコード上はちゃんと翻訳対応しているので、翻訳ファイルの方にメッセージが無いことが原因でした。ソースコードは下のように対応済みでした。

                        <?php
                        $comments_number = get_comments_number();
                        if ( '1' === $comments_number ) {
                                /* translators: %s: post title */
                                printf( esc_html_x( 'One Reply to &ldquo;%s&rdquo;', 'comments title', 'fotografie' ), get_the_title() );
                        } else {

「’One Reply to “%s”’」に対応した翻訳メッセージを以下のように用意することで日本語化されることが確認できました。英語では「1件の、、、コメント」となりますが、日本語の場合「1件の」とわざわざ書くと違和感があるので、ここでは日本語らしく件数は省略して「、、、へのコメント」としています。

#: ../comments.php:33
#, php-format
msgctxt "comments title"
msgid "One Reply to &ldquo;%s&rdquo;"
msgstr "&ldquo;%s&rdquo;へのコメント"

この.poファイルを.moファイルへコンパイルするには、「POEDIT」などのGUIツールを使うか、「gettext」を使ってコマンドラインで実行する必要があります。「gettext」がインストールされていない場合、「yum」などを使ってインストールしておきます。コマンドは以下の通りです。

[root@linux-ec2 languages]# msgfmt -o ja.mo ja.po
[root@linux-ec2 languages]# dir
合計 40K
-rw-r--r-- 1 apache 5.5K  6月  1 19:47 2018 ja.mo
-rw-r--r-- 1 apache  30K  6月  1 19:41 2018 ja.po
[root@linux-ec2 languages]# 

前回の記事で書いた通り、子テーマのフォルダから読み込んでいるので、このファイルの配置先は子テーマの「languages」フォルダとなります。

タイトル画像は「ヘルシンキ ヴァンター空港」の案内表示です。英語の他に、フィンランド語、日本語、中国語、韓国語とロシア語?で表記されていました。

【最終更新日: 2019年5月20日】
カテゴリーIT閑話, 公開タグ, ,
検索精度を高める
2020年11月1日

検索ネタを連発するのはElasticsearchやElasticPresがバージョンアップした時のお  続きを読む

ElasticPress日本語設定2020年版
blank
2020年10月29日

ElasticsearchをWordpressで利用するためのプラグインであるElasticPres  続きを読む

ElasticPress 3.5
blank
2020年10月22日

Elasticsearch用のプラグインであるElasticPressがメジャーバージョンアップ(3  続きを読む

Elasticsearch 6.8.11
blank
2020年10月2日

2017年末に「2.4.6」から「5.6.5」へバージョンアップして以来の大幅バージョンアップです。  続きを読む

パンくずリスト詳細
blank
2020年5月12日

テーマの「マイナーチェンジ」に伴って「パンくずリスト」の仕様を若干変更しました。一つ前のテーマではパ  続きを読む

カテゴリーを制限する
blank
2020年5月11日

過去に何度も書いた「カテゴリー制限」の話、元はと言えば初期に書かれた「非公開」の記事が原因です。トッ  続きを読む

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください