[WP] PHP⇔日本語翻訳サイトってないかな

このブログはさくらのレンタルサーバ・スタンダード + WordPress 3.8.1 + Tarski 3.2.0 + わしカスタムスペシャルデラックス子テーマ、で運営されております。
フロントページを表示したときの『お知らせ』欄とか、サイドバーのカレンダーをカテゴリーに対応させたりとか(例えば DQX カテゴリーを表示すると、DQX カテゴリーに属するポストが投稿された日のみ強調される)色々自分で好き勝手やれて楽しくて良いのですが、もし何か不具合があった場合、これも自分で何とかしなければなりません。

ポストに(有り難いことに)コメントをいただいて → それに対する執筆者からのお返事、は頂戴したコメントから右に一段下げた“入れ子”の状態で表示、という風にしてるのですが。

140208_01

テスト用の WordPress + Tarski で再現。
返事を投稿したのち新たにコメントをいただいた場合、なぜかそのコメントが入れ子になったままだと言う事にこの日気付きまして。
これ、本来はこうあるべきなのです。

140208_02

わし、こう言う細かい事がすっごい気になるのです。
気になったら最後、気になって気になって他のこと手に付かなくなります。
のでずっと修正作業してました。仕事そっちのけ。

調べてみたところ、WordPress 側の出力する“入れ子”タグ <ol class="children"> が適切に閉じられてないようだと判明。WordPress 側がタグを閉じる前に、テーマ側が次のコメントを出力しちゃってる。みたい。

140208_03

なもんだからテーマ側のコメントの出力が終わったあとに WordPress 側が溜まりに溜まった閉じタグを大量放出。
なのでテーマ側のコメント出力 PHP を修正すれば良いのですが、書かれてるのは当然日本語ではなくて PHP であるので翻訳が必要です。

tarski/library/classes/comment_walker.php at master · beastaugh/tarski · GitHub

この comment_walker.php がそうなのですが ―― うん、わからん!
これがいっくら見てもわからんのです (´・ω・`)
WordPress 側の comment-template.php に戻れてないのだとは思うけど。

判らないので ―― functions.php に自前のコメント出力 PHP を用意し、それを読み込ませるという力業でとりあえず対処しました。
WordPress に詳しい方、是非ヒントを……!

それにしても Tarski テーマをカスタマイズしすぎて、functions.php は肥大化するわ、子テーマだから親テーマの使ってない機能も常に読み込まれるわ。
最低限の機能だけに絞った自前のテーマを一から作りたいところです。

それからこの日気付いたんですけどね。
WordPress 、コメントの「返信」リンクをクリックするとフォームがコメント直下に移動してくるのね! なにこれ便利! いままで「返信」リンク消してて、管理画面内から返事してました。

[wp][XIV] 先生は正しい

Google Reader の終了宣言後、難民受け入れの声があちらこちらから!
もしや Google 先生はこうなるであろうことを見越して身を引いたのか……! やろうと思えば収益化も可能ではあったが、この分野に関してはもう自分が居なくても大丈夫だろうと! 先生、ぼく先生のこと誤解してた! 「Don't be evil」ってスローガンは本当だったんだね! でもこの世界のラスボスはきっと Google 先生。

その混乱の最中気付いたんですが ―― わしん家の RSS フィード、タイトルが『MickeymouthMickeymouth »』ってなってました。フィードタイトルが二重に出力。
調べたところ、WordPress 本体的には wp_title = そのドキュメントのタイトル、でもテーマ(わしん家だと Tarski)的には wp_title = blog 名 + ドキュメントタイトル、という解釈の食い違いによるものでした。てことで修正。

wp-includes/feed-atom.php
wp-includes/feed-rdf.php
wp-includes/feed-rss.php
wp-includes/feed-rss2.php

WordPress の上コアファイルの最初の方にある ――

<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>

から bloginfo_rss('name'); を削除し保存するか、テーマが生成してるであろう wp_title の方を WordPress 本体の解釈に沿うカタチに書き換える。すなわち blog 名を含まない、そのドキュメントのタイトルのみが出力されるように。

ついでに最新ポスト表示中は「» page xx」を出力しないよう手直し。
いま表示してるのは何ページ目? という情報を取得するコマンド get_query_var('paged') を使い、もし1 ページ目を表示中だったら $title 変数には $sitename = Mickeymouth! しか格納しないでね! という命令を書いたつもりなんですが、しかしなぜか言うこと聞いてくれず。
なんでさ! と思ったら ―― 1 ページ目を表示中だと 0 が返ってくるのね……。 get_query_var('paged') == 1 じゃそりゃ言うこと聞いてくれません。ページが存在するか否か、存在したとしてそのページ番号は? なので 1 は絶対に返ってこない数字でありました。「いや 1 ページ目なら 0 だよwww」って言ってくれればいいものを!
そう言う対話型プログラミングツールとか出来ないんですかね。そろそろ出来てもいい気がします。

いつかの深夜に TL に流れてきてブフォ! となったツイート。
“傷ついた夢”が存在するかどうか、存在した場合はその夢が返ってきそう……。

XIV は <守秘義務>                                                                                                                                                                                                                                                                                                                   </守秘義務>

……そろそろ <守秘義務>     </守秘義務> めてマイルドにして! ネタがないんだ!

[WP][Tarski] Tarski 3.2

An elegant, flexible WordPress theme · Tarski

このブログで使わせて戴いてる WordPress テーマ「Tarski」が 3.1.3 → 3.2 に。と言う事でずっとアップデート作業と調整。
この「Traski」のカスタマイズ(子テーマ)と、一部デフォルトテーマ「Twenty Twelve」を参考にして当ブログは構築されております。

・Moved language files to /languages directory.
・Added POT file to theme files in languages directory.

ランゲージファイルが同梱されるようになりました。

WordPress Plugins/JSeries » Tarski テーマ・日本語版

こちらで配布されている過去バージョン用のものを参考にして、このブログで使ってるランゲージファイルがこちら。

tarski.pot

ただしわしん家向けに特化されてるので参考程度に。
もしかして誰かの役に立つのかも知れないし置いておきます。
「Display featured images in header」は翻訳対象になってないみたい。「ヘッダーに注目の画像を表示する」みたいなことか。

Poedit

このファイルを ja.po にリネームして上 Poedit 等で編集 → 保存し、生成された ja.mo ファイルと共に /tarski/languages ディレクトリにぶっ込めば完了。

・Title and header always link to the home page.

これ今までコアファイルいじって実現してました。
面倒が減ります。有り難うございます。

・Deprecated tarski_doctitle in favour of a filter on wp_title.

どう訳せば良いんだろうか。ニュアンスは判るけど。
ともあれまあ tarski_doctitle は廃止ぽい。ので header.php 内の該当部分も書き換わっているため、例えば Google Analytics のコードを子テーマの header.php に直書きしたりしてる場合、そちらも書き換える必要が出てきます。

<title><?php echo tarski_doctitle(); ?></title>
 ↓
<title><?php echo wp_title('&middot;'); ?></title>

あとデフォルトの状態だと、例えばわしん家であれば『Mickeymouth! » ゲーム・映画・TV・サッカー・各種ガジェット・その他なんでもかんでも書くブログ。現在 FFXIV が主。』みたいに『タイトル · 概要』と出力されます。『·』部分は指定可能。
……個人的に <title> が長くなるのはイヤだなあ、と。だってブックマークしたとき短く編集する手間が発生するじゃない (´・ω・`)
これは tarski/library/helpers/template_helper.php

if (is_404()) {
    $doctitle = sprintf(__('Error %s', 'tarski'), '404');
} elseif ((get_option('show_on_front') == 'posts') && is_home()) {
    $doctitle = get_bloginfo('description', 'display');
} elseif (is_search()) {
    $doctitle = sprintf(__('Search results for %s', 'tarski'), esc_html(get_search_query()));
} elseif (is_month()) {
    $doctitle = single_month_title(' ', false);
} elseif (is_tag()) {
    $doctitle = multiple_tag_titles();
}

で生成されるので、get_bloginfo('description', 'display');部分を書き換えれば短く出来ます。

    $doctitle = sprintf(__('Timeline [%s]', 'tarski'), get_query_var('paged') ? get_query_var('paged') : 1);

こんな感じにしました。
トップページ表示中はセパレーター(»)含めて何も表示しない、にしたいのだけどセパレーターを消すのが面倒くさいので妥協。

Tarski には代替スタイル機能が入っており、子テーマ使用時でも親テーマ、すなわち Tarski のスタイルシートが読み込まれます。

このシナリオでは親テーマのスタイルをほんの少しだけ変更したいのであって、すべてを放棄するわけではありません。子テーマは親テーマの style.css をオーバーライドするので親テーマのスタイルシートに子テーマのスタイルシートを追加するため、@import ルールを明示します。このルールがないと子テーマは指定したサイトタイトルの色以外のスタイルがまったく適用されません。 親テーマのスタイルを継承せず、子テーマ独自のスタイルを使用する場合は、@import ルールを書く必要はありません。

普通は @import しないと読み込まれません。
何とかしたい場合は、tarski/library/helpers/template_helper.php

function tarski_stylesheets() {
$style_array = array(
    'main' => array(
        'url' => tarski_asset_path('style.css')),
    'print' => array(
        'url' => tarski_asset_path('library/css/print.css'),
        'media' => 'print'));

部分を見つけて

function tarski_stylesheets() {
/* $style_array = array(
    'main' => array(
        'url' => tarski_asset_path('style.css')),
    'print' => array(
        'url' => tarski_asset_path('library/css/print.css'),
        'media' => 'print')); */

コメントアウトしちゃうと良いよ。
Tarski のデフォルト css を必要事項だけ残してカラにしちゃうのも手っ取り早いけど。