2013-02-19

Image Widget のアップデートで日本語表示されなくなったときの対応

WordPress のウィジェット機能で簡単にバナー管理ができるウィジェット Image Widget を久しぶりに使おうと思ったら、プラグインのバージョンアップの影響で翻訳ファイルが読み込まれなくなっていました。

WordPress › Image Widget « WordPress Plugins

前バージョンの翻訳ファイルを作成した宮内さんに確認しながら翻訳ファイルの作成やバグ報告などをしていましたが、翻訳ファイルが読み込まれない問題が修正されていないので、現バージョンでも日本語化されるようにする方法をまとめました。

なお、この方法は現時点のバージョン(ver. 4.0.5)での暫定対応です。

追記(2013年2月22日):プラグインがアップデートされ、ver. 4.0.6では以下の方法は不要になりました。

翻訳ファイルを読みこませる方法

前バージョンの翻訳ファイルを作成した宮内さんに聞いてみたところ、textdomain と翻訳ファイル名が違うため日本語化されないとのこと。
ということで textdomain と翻訳ファイル名を合わせるために、image-widget-ja.mo を image_widget-ja.mo にリネーム。
こうするだけでちゃんと翻訳ファイルを読み込んでくれます。
※ ハイフン(-)とアンダースコア(_)の違い

こちらの内容は Image Widget プラグイン作者に連絡してありますので、以降のバージョンアップで修正される可能性もあります。

追記(2013年2月19日): プラグインがアップデートされても大丈夫な方法を宮内さんが教えてくれました。

以下の内容をテーマの functions.php に追記することで、プラグイン内の言語ファイル名の間違いを無かったことにしてくれます。

add_filter("load_textdomain_mofile", "my_load_textdomain_mofile", 10, 2); 
function my_load_textdomain_mofile($mo, $domain){
    if ($domain === 'image_widget') {
        return str_replace('image_widget-ja.mo', 'image-widget-ja.mo', $mo);
    }   
    return $mo;
}

翻訳ファイルの一部未反映の箇所を反映させる方法

画像サイズの選択部分ですが、翻訳ファイルには訳語が入っているにも関わらず、表示には WordPress 本体の翻訳ファイルを使用しているので、内容が統一されません。

この箇所に翻訳ファイルの訳語を当てるには、/views/widget-admin.php の49行目〜52行目を以下のように変更。

$possible_sizes = apply_filters( 'image_size_names_choose', array(
    'full'      => __('Full Size'),
    'thumbnail' => __('Thumbnail'),
    'medium'    => __('Medium'),
    'large'     => __('Large'),
) );
$possible_sizes = apply_filters( 'image_size_names_choose', array(
    'full'      => __('Full Size', 'image_widget'),
    'thumbnail' => __('Thumbnail', 'image_widget'),
    'medium'    => __('Medium', 'image_widget'),
    'large'     => __('Large', 'image_widget'),
) );

Note: this is dumb. We shouldn’t need to have to do this. There should really be a centralized function in core code for this.

これらの記述の上に引用の様に書いてあるので、この箇所については対応してくれないかもしれないです。
それなら翻訳ファイルに入れなくてもいいのにとも思うけど、これを残しておいてくれたから変更かけられるということで。

これはプラグインのアップデートで上書きされちゃうので、アップデートで元に戻っちゃって、それが気になる方は都度変更かけてください。

ということで、以上の変更をすることで問題なく日本語が表示されるようになります。