SWELLの多言語化 未対応の見出しを多言語化するには?これで解決できます。
SWELLはpoファイルがあるので、一応多言語化に対応したテーマです。
ですが、実際に英語に切り替えて見ると日本語のまま残ってしまう部分があるようです。
殆どの人に影響あるのは、記事下にある『関連記事』という見出しでしょう。
『関連記事』の文字列はカスタマイザーで自由に変更できるので、英語にしたい場合は直接英語に書き換えればいいのですが、多言語で切り替える場合は上手く動かないことになります。
SWELLの多言語化できない見出しは?
SWELLの設定で、見出しの文字列を変えられる箇所は、多言語化できません。
'share_message' => __( 'よかったらシェアしてね!', 'swell' ),
'post_author_title' => __( 'この記事を書いた人', 'swell' ),
'related_post_title' => __( '関連記事', 'swell' ),
'comments_title' => __( 'コメント', 'swell' ),
見出しを出力しているテンプレートパーツを子テーマにコピーして、上記の呼び出し関数に書き換えてあげれば多言語化できます。
gettextフックを使って、日本語や英語を書き換えてあげれば、いかようにも出力させることができます。
この問題は、SWELLに限った問題ではなくCocoon等の設定で見出しを自由に書き換えられるテーマでは多言語化しても日本語のまま残ってしまう現象は発生します。
右に倣えと言う感じなのかもしれませんが、どうもこの実装は首をかしげてしまいます。
『関連記事』の見出しを多言語化する
関連記事の見出しのコード
SWELLの関連記事は、テンプレートパーツrelated_post_list.php
で出力されています。
<section class="l-articleBottom__section -related">
<?php
echo '<h2 class="l-articleBottom__title c-secTitle">' .
wp_kses( SWELL_Theme::get_setting( 'related_post_title' ), SWELL_Theme::$allowed_text_html ) .
'</h2>';
結局は、SWELLの関連記事タイトルがそのまま読み込まれているわけです。
関連記事の見出しを多言語化するコード
この部分を多言語化しようとおもったら、次のように修正する必要があります。
<section class="l-articleBottom__section -related">
<?php
echo '<h2 class="l-articleBottom__title c-secTitle">' .
wp_kses( __( '関連記事', 'swell' ), SWELL_Theme::$allowed_text_html ) .
'</h2>';
その代わり、カスタマイザーの関連記事タイトルの変更は無効になります。
『よかったらシェアしてね!』を多言語化
『よかったらシェアしてね!』のコード
SWELLの『よかったらシェアしてね!』は、テンプレートパーツshare_btns.php
で出力されています。
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
/**
* sns_btns
*/
$position = $variable['position'];
$the_id = get_the_ID();
$share_url = get_permalink( $the_id );
$share_title = html_entity_decode( get_the_title( $the_id ) );
$SETTEING = SWELL_Theme::get_setting();
$style = $SETTEING['share_btn_style'];
$hashtags = $SETTEING['share_hashtags'];
$via = $SETTEING['share_via'];
$urlcopy_pos = $SETTEING['urlcopy_btn_pos'];
$share_message = $SETTEING['share_message'];
『よかったらシェアしてね!』を多言語化するコード
子テーマにコピーして、以下のように書き換えます。
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
/**
* sns_btns
*/
$position = $variable['position'];
$the_id = get_the_ID();
$share_url = get_permalink( $the_id );
$share_title = html_entity_decode( get_the_title( $the_id ) );
$SETTEING = SWELL_Theme::get_setting();
$style = $SETTEING['share_btn_style'];
$hashtags = $SETTEING['share_hashtags'];
$via = $SETTEING['share_via'];
$urlcopy_pos = $SETTEING['urlcopy_btn_pos'];
$share_message = __( 'よかったらシェアしてね!', 'swell' );
『この記事を書いた人』の見出しを多言語化
『この記事を書いた人』の見出しを出力するコード
SWELLの『この記事を書いた人』は、テンプレートパーツpost_author.php
で出力されています。
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
$author_id = $variable ?: '';
// データ取得
$author_data = SWELL_Theme::get_author_data( $author_id );
$author_name = $author_data['name'] ?? '';
$author_description = $author_data['description'] ?? '';
$author_position = $author_data['position'] ?? '';
$author_sns_list = $author_data['sns_list'] ?? [];
$author_url = get_author_posts_url( $author_id );
?>
<section class="l-articleBottom__section -author">
<h2 class="l-articleBottom__title c-secTitle">
<?php echo wp_kses( SWELL_Theme::get_setting( 'post_author_title' ), SWELL_Theme::$allowed_text_html ); ?>
</h2>
『この記事を書いた人』の見出しを多言語化するコード
子テーマにコピーして、以下のように書き換えます。
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
$author_id = $variable ?: '';
// データ取得
$author_data = SWELL_Theme::get_author_data( $author_id );
$author_name = $author_data['name'] ?? '';
$author_description = $author_data['description'] ?? '';
$author_position = $author_data['position'] ?? '';
$author_sns_list = $author_data['sns_list'] ?? [];
$author_url = get_author_posts_url( $author_id );
?>
<section class="l-articleBottom__section -author">
<h2 class="l-articleBottom__title c-secTitle">
<?php echo wp_kses( __( 'この記事を書いた人', 'swell' ), SWELL_Theme::$allowed_text_html ); ?>
</h2>
『コメント』の見出しを多言語化
『コメント』の見出しを出力するコード
SWELLの『コメント』は、テンプレートパーツcomments.php
で出力されています。
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<section id="comments" class="l-articleBottom__section -comment">
<h2 class="l-articleBottom__title c-secTitle">
<?=esc_html( SWELL_Theme::get_setting( 'comments_title' ) )?>
</h2>
『コメント』の見出しを多言語化するコード
子テーマにコピーして、以下のように書き換えます。
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<section id="comments" class="l-articleBottom__section -comment">
<h2 class="l-articleBottom__title c-secTitle">
<?=esc_html( __( 'コメント', 'swell' ))?>
</h2>
まとめ
SWELLは英語対応していますが、日本語と英語で切り替えるような多言語サイトでは対応が中途半端になります。
大した修正内容ではないので、そのような箇所を子テーマで修正し、gettextフックで好きなようにカスタマイズする方がよいでしょう。
コメント