SWELLの日本語表記を書き換える(英語表記も対応)多言語化カスタマイズ
SWELLは一応英語の翻訳ファイル(.poファイル)が付いていますので、英語対応されています。
サイトの言語を英語にすれば、SWELLの日本語表記の部分は英語になるはずです。
SWELLのフォーラムに以下のような質問がありました。
デフォルトで設定されている以下の日本語表記を変更する方法を教えてください。
- 検索機能を閉じる際にある「閉じる」
- 画像の横スクロール設定時に出る「スクロールができます」
- 参考サイトのHTML貼り付け時に出る「合わせて読みたい記事」
これらを英語に変更したい場合、どこで編集できますでしょうか。
https://users.swell-theme.com/forum/swell-forum/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A1%A8%E8%A8%98%E7%AE%87%E6%89%80%E3%81%AE%E8%A8%80%E8%AA%9E%E5%A4%89%E6%9B%B4/
サイトの言語を英語にせずに、日本語の表記を部分的に英語に変える方法を知りたいということだと思います。
この記事で簡単なカスタマイズ方法をお伝えします。
SWELLは多言語化に対応したテーマなの?
SWELLの対応言語は?
SWELLは日本語と英語以外の言語に対応していません。
理由はシンプルに言語ファイル(poファイル)が用意されていないからです。
英語と日本語以外の言語に対応するには、自分で言語ファイルを用意するかプラグインなどでテキストを置き換えないと対応できません。
SWELLと組み合わせて使われる多言語化のプラグインとして有名なのは、Contact form 7の作者がリリースしているBOGOだと思います。
SWELLは公式サイトを見ても、多言語化プラグインへの対応は明言していません。
実際、多言語化プラグインBogoとSWELLの組み合わせは問題が起きることがフォーラムで報告されています。
SWELLのテーマ表記を英語化するには?
日本語か英語のどちらかしか使わないのであれば、SWELLの言語を変更するのは簡単です。
設定⇒一般と進み、サイトの言語をEnglishにすればテーマの表記が英語に切り替わります。
SWELLのテキストはフックで簡単に書き換えられる
SWELLは、多言語対応を意識してコーディングされていますので、日本語のテキストは翻訳ファイルで置き換えられるようになっています。
今回のケースで言えば、以下の3か所も翻訳ファイルで置き換えられるようになっています。
- 検索機能を閉じる際にある「閉じる」
- 画像の横スクロール設定時に出る「スクロールできます」
- 参考サイトのHTML貼り付け時に出る「あわせて読みたい記事」
それぞれのコーディングを確認
SWELLの日本語テキストは、__()
という関数で翻訳ファイルで置き換えられるようになっています。
検索機能を閉じる際にある「閉じる」
<i class="icon-batsu"></i> <?=esc_html__( '閉じる', 'swell' )?>
画像の横スクロール設定時に出る「スクロールできます」
$hint_src = '<div class="c-scrollHint' . esc_attr( $hint_class ) . '"><span>' . esc_html__( 'スクロールできます', 'swell' ) . ' <i class="icon-more_arrow"></i></span></div>';
参考サイトのHTML貼り付け時に出る「あわせて読みたい」
$caption = $caption ?: $site_name ?: __( 'あわせて読みたい', 'swell' );
__()をフックで書き換えるカスタマイズ
__()
関数は、gettext
フックで上書きすることができます。
フックのcallback関数内で、特定の表記を判定して上書きすることで、英語表記にすることもできますし、好きなテキストに置き換えることもできます。
add_filter( 'gettext', 'um_rename_messagetxt', 10, 3);
function um_rename_messagetxt( $translation, $text, $domain ) {
if ( 'swell' === $domain ) {
if ( 'スクロールできます' === $text ) {
$translation = '置き換えたい名前';
}
if ( 'あわせて読みたい' === $text ) {
$translation = '置き換えたい名前';
}
if ( '閉じる' === $text ) {
$translation = '置き換えたい名前';
}
}
return $translation;
}
参考:https://nldot.info/gettext-filter-hook/
関連記事の見出しは書き換えられない
SWELLによくある現象なのですが、実装が中途半端というか未完成な部分があります。
記事下コンテンツの関連記事の見出しは、多言語対応していません。
カスタマイザーから関連記事のタイトルを直接書き換えるようになっているので、置き換えるべきテキストが可変になってしまうので、多言語対応していないようです。
フックで書き換えればいいと思うのですが、なぜかそうなっていませんでした。
そういうわけで、今回ご紹介した方法では、多言語対応していない箇所は書き換えられないのです。
プラグインを使う場合
Say what?というプラグインを使うとこの記事と同じ方法のカスタマイズをプラグイン上から行うことができます。
code snippetsやfunctions.phpを使ったカスタマイズを避けたい場合には、Say what?を使ってもいいかもしれません。
まとめ
SWELLのテーマで決め打ちされている日本語テキストを英語表記に置き換えたり、別の日本語表記に置き換えたい場合、子テーマで書き換える方法もありますが、gettextフックを使うことで簡単に対応できます。
覚えておいて損はないでしょう。
コメント