テーマの日本語化

閲覧数: 41(0)

今回は単なる「翻訳」とかではなくて「文化的」な面での日本語化についての対応。今回の元になったテーマ「Fotografie」は英語圏の文化で作られているので、例えば日付のフォーマットなどは日本的とは言い難いものがある。WordPressそのものとしてはもちろん国際化対応されているので「2018年4月30日」などの日本的なフォーマットでも表示可能ではあるのだが。テーマの作りとしてそこまで意識されていないと、単なる「テーマ翻訳」ではいろいろと不都合が生じる事がある。

前回「テーマ翻訳」では、用意されていたテンプレートをベースに「日本語」用の翻訳ファイルを用意することで「日本語」対応可能と書いた。概ね間違いではないが冒頭で書いたように、単に翻訳ファイルを用意しただけでは「日本語」の文化的な対応がされないということ。

投稿日をクリック」するとその月のアーカイブを表示する仕掛けを導入しているが、テーマ標準のフォーマットでは「April 2018」を日本語化した「4月 2018」と表示される。日本人としてはやはり「2018年4月」と表示して欲しいところ。この程度は翻訳ファイルで対応可能。

ところが翻訳ファイルのみの対応ではテーマが持っている「パンくずリスト」機能で不具合が発生することが判明。「2018」と表示する変数「’Y’」に対して「’Y年’」と翻訳ファイルを設定することで「2018年」と表示させることは可能。この翻訳結果を「パンくずリスト」がアーカイブに対してそのまま使用するので「/2018」というアーカイブに対して「/2018年」を表示しようとして「404エラー」を出してしまう。原因は「パンくずリスト」側の記述。英語圏であれば問題無いソースコードも国際化すると不具合が出る典型的な例。

パンくずリストではアーカイブ「2018年4月」を「ホーム >> 2018年 >> 4月」と表示して欲しいが、リンク先は「2018/04」でなければならなず、置換えた文字をそのままアーカイブ先としては使用できない。この「パンくずリスト」の表示部分を抜き出したのがこれ。

( is_month() ) {
echo sprintf( $link, esc_url( get_year_link( get_the_time( __( 'Y', 'fotografie' ) ) ) ), get_the_time( __( 'Y', 'fotografie' ) ) ) ;

「get_year_link()」の引数は「2018」であるべきところ「2018年」となってしまっている。ここは翻訳する必要が無い。なので以下のように修正する。

( is_month() ) {
echo sprintf( $link, esc_url( get_year_link( get_the_time( 'Y' ) ) ), get_the_time( __( 'Y', 'fotografie' ) ) ) ;

これで表示は「ホーム >> 2018年 >> 4月」であるが「2018年」のリンク先は「2018」となり、正しく年別アーカイブのページへリンクされるようになる。投稿日をクリックすると月別アーカイブページへリンクする際にも「2018年4月30日」という表示に対して、実際のリンク先としては「2018/04」と指定しているのは言うまでもない。

「breadcrumb.php」はテーマの「inc/」フォルダにファイルとして存在している。その中で「fotografie_breadcrumb()」関数として定義されているが、親テーマでも同じ関数名が定義されているので、子テーマ側では別の名前に変更して定義する。

「fotografie_breadcrumb2()」などの単純な名前で十分である。この「breadcrumb.php」を親テーマ側では「functions.php」内でインクルードすることで関数として使用できるようにしているが、子テーマの場合はやり方が少し違う。子テーマの「functions.php」の中ほどに「get_template_part( ‘inc/template’, ‘tags’ )」という記述があり、ここで「inc/template-tags.php」を読込んでいる。

...
get_template_part( 'inc/template', 'tags' );
...

「fotografie_breadcrumb2()」関数が含まれた子テーマの「inc/breadcrumb.php」はこの「inc/template-tags.php」の中で読込む指定をする。指定方法は以下の通り。

...
get_template_part( 'inc/breadcrumb' );
...

「fotografie_breadcrumb2()」関数は「components/features/breadcrumb/breadcrumb.php」の「fotografie_breadcrumb()」関数を置換えて使用するので、以下のように書き換える。これで新しく作った関数で「パンくずリスト」が表示されるようになる。

...
if ( $enable_breadcrumb ) :
        fotografie_breadcrumb2();
...

英語圏のテーマに「日本的な」何かを期待するのは間違っているとしても、その英語圏のテーマを選択してしまった「責任」はあるので、出来るだけ「日本的な」何かに近づける努力は必要だと思う。単に翻訳して終わりでは無かった教訓として。

タイトル画像は「成田に帰ってきたJL414」から見えるボーディングブリッジ。ドアが開いたら「日本」であるw

最終更新日: 2021年2月27日

カテゴリー公開, 閑話(IT)タグ, , ,
検索結果の期待値

Wordpress標準の「検索」は入力された「検索ワード」をデータベースに直接照会する方法と言うのは  続きを読む

Todo’s
blank

スペイン語なら「全ての」って感じ?英語なら「To Do List」で「やるべきこと一覧」といったとこ  続きを読む

ElasticPress日本語設定
blank

前回の「検索結果の期待値」では「日本人としては長い休み」で検索出来ないと言うところまで話をしました。  続きを読む

タイトルを抜粋する
blank

関連記事プラグインを使って、記事本文の下に「関連記事」を表示している。情報としては、タイトル、画像、  続きを読む

ElasticPress 3.5
blank

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

カテゴリーを制限する
blank

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

スポンサーリンク

コメントを残す

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