テーマの日本語化

閲覧数: 28(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

【最終更新日: 2019年5月20日】
カテゴリーIT閑話, 公開タグ, , ,
パンくずリスト詳細
2020年5月12日

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

テーマリニューアル2017
blank
2017年7月21日

すっかりご無沙汰してしまいました。 復帰記念に久しぶりにテーマを変更しました。今回使用するのは「ob  続きを読む

パンくずリスト
blank
2015年11月10日

英語だと、Breadcrumb、パンくずって訳すしかないわなぁ。でもどうもしっくりこない。個人のサイ  続きを読む

アクセシビリティ対策
blank
2019年6月23日

テーマカスタマイズの一環で、トップページに一覧表示されている「写真を左右交互に表示する」ようにした際  続きを読む

dockerとproxy
blank
2019年6月18日

dockerやdocker-composeをプロキシ環境下で使うのに苦労したので忘れないようにメモし  続きを読む

関連記事の大原則
blank
2019年6月16日

ググったりしてあるページにたどり着いた閲覧者に対して、それに関連する記事を提示して少しでもサイトの滞  続きを読む

コメントを残す

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