サポート » テーマ » テーマを日本語化したい

  • 解決済 jump-up

    (@jump-up)


    現在、「Supernova」(ver.1.4.3)という海外テーマを利用しています。

    管理画面のテーマオプションとテーマの外観を日本語化したいと思い、テーマのlanguagesフォルダを覗くと、default.po/moファイルとtxtファイルがあり、txtファイルには、作者より、ローカライズしたければ直接書き換えたら良いと書いてありました。

    早速、default.po/moファイルをエディターで書き換えpoeditで再度、保存しなおして出来たja.po/moの二つのファイルをアップロードしたのですが、読み込んでくれません。

    phpの知識がほとんどないので、とりあえず、色々なテーマのfunctions.phpを覗いて比較していたのですが、だいたいのテーマは以下のようになっていましたが、

    // Make theme available for translation
    load_theme_textdomain( 'shiword', get_template_directory() . '/languages' );

    supernovaは

    //Loading Language File
    load_theme_textdomain( 'Supernova', SUPERNOVA_ROOT.'/languages/' );

    のようになっています。
    それで、SUPERNOVA_ROOTの部分をget_template_directory() に変更すればうまくいくのでしょうか?

    子テーマでカスタマイズしているので、子テーマのfunctins.phpで試してみたいのですが、
    その場合、どこからどこまでをコピーして書き換えれば良いのかわかりませんでした。
    functions.phpの以下の部分の全部をコピーする必要はないと思うのですが、どこからどこまでコピーして該当部分を書き換えて試してみたらいいのかわかりません。

    (この上の部分は略、ここから一連だと自分勝手に思ってるところからコピーしています。)
    //Default Values for Custom Header
    $header_defaults = array(
    'default-image' => '',
    'random-default' => false,
    'width' => 960,
    'height' => 100,
    'flex-height' => true,
    'flex-width' => true,
    'default-text-color' => '000',
    'header-text' => true,
    'uploads' => true,
    'wp-head-callback' => 'supernova_header_style',
    'admin-head-callback' => 'supernova_admin_header_style',
    'admin-preview-callback' => 'supernova_admin_header_image',
    );

    add_action('after_setup_theme', 'supernova_theme_setup');
    function supernova_theme_setup(){
    global $background_defaults, $header_defaults, $wp_version;

    //Featured image for both page and post
    add_theme_support('post-thumbnails');

    //Adds automatic feed links
    add_theme_support( 'automatic-feed-links' );

    //Adds Custom background
    add_theme_support('custom-background', $background_defaults);

    //Adds Custom Header
    add_theme_support( 'custom-header', $header_defaults );

    //Setting Avatar Size
    wp_list_comments('avatar_size=80');

    // Visual Editor Style
    add_editor_style();

    //Loading Language File
    load_theme_textdomain( 'Supernova', SUPERNOVA_ROOT.'/languages/' );

    //Navigation Registration
    register_nav_menus(
    array(
    'Header_Nav'=>__('Header Navigation', 'Supernova'),
    'Header_Cat'=> __('Header Categories', 'Supernova'),
    'Main_Nav'=> __('Main Navigation', 'Supernova'),
    'Footer_Nav'=> __('Footer Navigation', 'Supernova'),
    )
    );
    }

    if ( ! isset( $content_width ) ) $content_width = 900;

    /*Replaces [...] to read more
    * @param $more
    * returns read more link
    */
    add_filter('excerpt_more', 'supernova_new_excerpt_more');
    function supernova_new_excerpt_more($more) {
    global $post;
    return 'ID) . '">'.__('... Read More', 'Supernova').'';}

    長くなりましたが、そもそも書き換え自体うまくいかないとか、仮に書き換えるならどこからどこまでをコピーしたうえで、書き換えれば良いのかご教授頂けると幸いです。

    以上よろしくお願いします。

15件の返信を表示中 - 1 - 15件目 (全25件中)
  • こんにちは

    翻訳ファイルは、親テーマで作成して、親テーマのlanguagesに置くのが、一番手っ取り早く、親テーマでうまくいったら、作成者に、付属してもらうのがいいです。

    子テーマで、独自の翻訳ファイルを持つには、

    load_theme_textdomainは、子テーマ用の関数があるので、読んでみてください
    http://codex.wordpress.org/Function_Reference/load_child_theme_textdomain

    get_template_directory()は、子テーマだと、get_stylesheet_directory()になると思います
    パスを書き出して、確認してください

    子テーマでは、functions.phpをコピーする必要はありません。

    自動的に読み込まれます( 順番は、子テーマのfunctions.phpが先に読み込まれ、その後ペアレントテーマの、functions.phpが読み込まれます )

    読み込む順番の関係で、子テーマの設定が、親テーマで上書きされるので、

    add_action('after_setup_theme', 'supernova_theme_setup');

    などを子テーマから使う場合は、

    add_action('after_setup_theme', 'supernova_theme_setup',11);

    などとして、読み込み順を変更する必要があるかもしれないです。

    トピック投稿者 jump-up

    (@jump-up)

    nobitaさんありがとうございます。詳しく解説頂き痛み入ります。
    テーマの作者から連絡があり、
    load_theme_textdomain( ‘Supernova’, SUPERNOVA_ROOT.’/languages/’ );
    の「SUPERNOVA_ROOT」を「SUPERNOVA_DIR」に変えたら翻訳ファイルが使えるように定義しなおしたので、変えて試してみてくれとのことでしたので、nobitaさんのおっしゃるとおり親テーマのfunctions.phpに直接書き勝てja.po/moファイルをアップロードしてみたら、うまく使えました。
    作者が親切なので、次回のバージョンアップで変更してくれると思うのですが、いずれにせよja.po/moファイルは子テーマに保存しておきたいので、nobitaさんのご教授を参考に頑張ってみます。
    また、ja.po/moファイルを80%くらい翻訳したものを適用するとレイアウトがおかしくなったりするので、少しづつ完成させていいきたいと思っています。
    いつも回答ありがとうございます。

    トピック投稿者 jump-up

    (@jump-up)

    nobitaさんのご教授により無事いけたかと思いja.poファイルを嬉々として日本語化していたのですが、つまずきました。

    かなり多くの英文を日本文に翻訳しても反映されないという問題です。

    手順としては、
    テーマのlanguagesフォルダに用意されているdefault.po/moファイルのうち、default.poファイルをja.poファイルにリネームして、poeditで翻訳作業をして、保存してできたja.po/moファイルをアップロードして表示を確認するということを繰り返していました。
    ところが、ある部分から翻訳が反映されなくなりました。

    色々検索して、potファイルというカタログファイルがみつかりませんでしたが、実質poファイルだから気にしなくて良いと思っていたのですが、うまくいきません。
    それでCodeStyling Localizationというプラグインを入れて、作成したja_JP.poファイルを
    再度リネームして作ろうとしましたが、同じところがやはり翻訳が反映されません。

    その後、poeditでカタログを更新というのを試してみましたが、翻訳が反映されている部分も含めて思いっきり少なくなってしまいます。

    翻訳関数はちゃんと設定されている部分であるにも関わらず、何故か、反映されません。
    かなり検索して調べたのですがお手上げなので、どなたかご教授頂けると幸いです。

    #, fuzzy
    という行がないですか?
    これは、ほかのメッセージと似てるけど大丈夫?みたいな意味で、この行があるとその直後の翻訳が反映されなくなります。

    解決するには単純に、#, fuzzy という行を消してください。

    これで解決しない場合は、.poの内容をgist等に貼り付けてシェアしていただけるとすぐに原因がわかると思います。
    https://gist.github.com/

    ちなみにテーマを翻訳する時はtwentythirteenとかのja.poをベースにして、そのテーマの.potと合体(マージ)させてから翻訳をすると多くの部分で翻訳の手間が省けるので楽ですよ。^^

    http://alphasis.info/2010/11/using-poedit/

    あっ、そもそもpoが不完全なのかもですね。
    その場合は.potから作り直す必要があります。

    英語圏の人は自分の環境で多言語化についてはよくわかってない人が多いので、テーマを修正したあとで.potや.poを反映してくれてないことはよくあります。

    potの作り方はこのスライドの57ページ目からのような手順で。
    http://www.slideshare.net/miyauchi/wordbench-osaka

    あと、こういう作業は、githubとかgistとか使って共有しながら、twitterとかで誰か手伝ってーってぎゃあぎゃあ騒ぎながらやると楽しいですよ。^^

    トピック投稿者 jump-up

    (@jump-up)

    お世話になります。
    Miyauchiさんご教授ありがとうございます。

    翻訳自体は、一番最初の段階でtwentythirteen等のja.poファイルで参照できるような一般的な語彙の部分は参考にしてこのテーマで9割以上翻訳してしまいました。
    というか、あまり難しいことを考えずに、ja.po/moファイルで翻訳してしまえば日本語化できるんだろうなと思いひたすら翻訳して、それから色々問題が発生しました。

    まず、ja.po/moファイルを読み込まない・・・これはテーマの作者と連絡をとって解決できました。

    そして、現状ですが、
    初期状態から説明すると
    作者がdefault.po/moファイルを用意してくれています。
    これをリネームして翻訳をしてみました。

    9割相当翻訳したja.po/moファイルを適用するとレイアウトや表示が崩れる部分があった。

    もう一度少しづつ翻訳してそのつど更新してはレイアウトを見ながら翻訳数を増やすという作業を繰り返していた。

    すると翻訳が反映されない語彙が現れた。

    そこで、今度はテーマをダウンロードしてpoeditを使って自分でカタログを作成してやってみた。(この部分はMiyauchiさんがスライドで説明されているやり方でやっていると思います。)
    英文ソースの抽出自体は、問題なくできていると思います。
    ※(とはいえ英文ソースで一番抽出したかったコメント周りが自分でカタログを作成したものは出来ていません><)

    といった状況です。
    以下に貼り付けました。
    https://gist.github.com/jump-up/7365612
    よろしくご教授お願いします。

    トピック投稿者 jump-up

    (@jump-up)

    追加です!
    テキストエディターを利用していなかったので、githubに貼り付けるために利用して今、貼り付けた後で「#, fuzzy」っていうのはもしかしてこれで見るのかと思い、貼り付けた後で検索したらありました><。
    もしかしてこれだけで解決なんですかね。大変申し訳ありません。

    ※作者が用意したものはカタログを更新すると語彙がほとんどなくなる。
    ※自分がカタログを作成したものはコメント欄の語彙がソースから抜けている。
    という問題がありますが、とりあえず削除してみます。

    ありがとうございます。

    トピック投稿者 jump-up

    (@jump-up)

    追加です。
    「#, fuzzy」を削除してみましたが、変わりないようです。
    取り急ぎご報告まで

    Poeditの使い方は、詳しくないのですが、Gistにあがっているpoファイルを見て、気になったことを、書いておきます。

    X-Poedit-KeywordsList

    即支障はないかもしれませんが、

    esc_html__()
    esc_html_e()
    esc_attr__()
    esc_attr_e()

    も追加しておいたほうがいいです。

    現在多く使われている__()_e()は、翻訳内にhtmlタグを含める事ができるために、今後は、上記のエスケープ付の翻訳関数が使われるようになっていくだろうと思います。
    テーマの制作者が、この関数を使い始めたときに、翻訳が拾えなくなるので、

    Language: ja_JP

    となっていますが、この設定はどこで行いましたか?

    “X-Poedit-Basepath: ../\n”

    “X-Poedit-SearchPath-0: .\n”

    パスの設定はしてありますか?

    私の場合、我流の使い方なので、いいのかどうかは ちょっとあれなんですが、

    自分で作っているテーマの翻訳ファイルの作成は、常に、ソースから更新を使っています。
    ( パスの設定とかをしていないと、クリックできないかもしれないですが )
    テーマの制作では、コードの修正などを行って、最後に言語ファイルになるわけですが、正直.potを更新のたびに、きっちり最新にしておくのは、かなり厳しいのと、

    使い始めのころに、このあたりの設定がよく飲み込めてなくて、反映しないとか散々あり、ソースから更新すると、何とかうまくいくという事で、このやり方で行っています。

    あてずっぽですが、ソースから更新ができるように設定を見直してみるのも、ありなのかも、、、、

    トピック投稿者 jump-up

    (@jump-up)

    nobitaさん ありがとうございます。

    ひとつめは、作者がテーマのlanguagesフォルダにdefault.po/moファイルを用意してくれていたので、それをダウンロードして、default.poをja.poにリネームして、翻訳変更後、保存して出来たja.po/moファイルを再アップロードして使っているだけで、全く設定とかいじっていません。

    ふたつめのja_JPがついてるpoファイルは、poeditで作成しました。
    テーマをパソコンにダウンロードして、poeditの新規カタログの作成で、パスというかテーマフォルダの場所とpoファイルの保存場所を指定しましたが、いわゆるnobitaさんのおっしゃるパスはよくわかりませんでした。
    poeditでしか使ってなかったので、テキストエディターで開くまで、冒頭の部分がそのようになっているのに気が付きませんでした。

    ということで、パスについては、上は作者のpoファイルを使ったので、特に設定していません。下は、poeditで作成しましたが、そのような設定画面はなく、設定していません。

    poeditのソースから更新というのを使うと
    作者が作成したものは殆ど、英文がなくなってしまいます。
    また、poeditで作成したものは、もともと英文が若干足りないものがあると思っていますが、過不足ない状態です。

    作者が作成したものでソースから更新が過不足なく行えないのが何か原因になっているのでしょうか・・・

    ※ソースとカタログとpoファイルとpotファイル(これは存在してませんが)の用語の使い方が間違っているかもしれませんが・・・

    ja.poを作りなおしておきました。
    これで翻訳すればいけると思います。

    https://gist.github.com/miya0001/7367106

    差分を見ると分かるのですがやはりテキストの抽出がちゃんとできてなかったようですね。

    https://gist.github.com/miya0001/7367106/revisions

    個人的には、poeditよりもWordPressの開発チームが使ってる、WordPress i18n Toolsというのを使うのが、nobitaさんが指摘されてた細かい設定を気にする必要がないので、黒い画面が苦手でなければおすすめです。

    ちなみに supernova/languages/ 以下に ja.mo を設置すれば翻訳は適用されます。
    (そこは確認しました。)

    再度流れをまとめると、

    1. supernova/languages/ に移動
    2. supernova/languages/ 内で ja.po を翻訳
    3. supernova/languages/ 内で ja.po をコンパイルしてja.moを作成

    あとは、作者さんに ja.po 及び ja.mo を送ってあげると、同梱してくれると思います。

    ちなみに、この作者さんの、 default.po っていうのは、 本来 supernova.pot というファイル名であるべきなんですけど、そのへん指摘してあげるといいかもです。

    twentythirteenとかtwentythirteen.potってなってるよって。

    最後に以下は先ほど僕が抽出した.potです。これも送ってあげたほうがいいかもですね。
    https://gist.github.com/miya0001/7367253

    トピック投稿者 jump-up

    (@jump-up)

    Miyauchiさんへありがとうございました。
    早速確認やってみます。

    流れの中でja.poの翻訳はsupernoba/languages内でと書いてありますが、これは、サーバーにアクセスして作業するということなのでしょうか?凄くとんちんかんな質問のような気もしますが、

    Miyauchiさんが作り直したja.poファイルをダウンロードして
    それを自分のパソコン上で翻訳して今使えるpoeditでja.poを保存すると勝手に出来るja.mo
    ファイルとあわせてサーバーにアップロードするという方法で良いのでしょうか?

    languages内でという意味がいまひとつわかりませんでした。
    または、一応、テーマはダウンロードしているので、ダウンロードしたテーマのlanguagesフォルダ内で翻訳作業とmoファイルのコンパイルをしてアップするのが良いと言うことでしょうか?

    細かい部分ですが、moファイルがどのように生成されている全くわからないので、先ほどらいパスうんぬんがあったので、念のため確認させてください。
    なんかよくわかってない質問ですみません。

    トピック投稿者 jump-up

    (@jump-up)

    早速ですが、わかりやすい部分だけ画像をアップロードしてみました。
    下の2枚がpoeditで翻訳完了した部分です。
    http://kingmarilyn.if.land.to/uploader/src/king0122.png
    http://kingmarilyn.if.land.to/uploader/src/king0123.png
    それでそれに対応する部分ですが、
    コメント欄については「Reply」を「返信」と訳しているのですが、反映されていないようです。青枠は反映されている部分です。
    http://kingmarilyn.if.land.to/uploader/src/king0120.png
    http://kingmarilyn.if.land.to/uploader/src/king0121.png
    そして管理画面も同様ですが、左の部分は反映されていますが、右側のナビゲーションとファビコン部分が翻訳しているはずなのに反映されていません。
    http://kingmarilyn.if.land.to/uploader/src/king0119.png

    moファイルの生成がおかしいのか、phpファイルの翻訳関数がおかしいのかってことになるんでしょうか?

    ちなみに翻訳はMiyauchiさんのファイルをダウンロードして、自分のパソコン内にあるSupernovaテーマフォルダ内のlanguagesにコピーして作業してmoファイルを生成して、アップロードしました。

    以上よろしくご教授お願いします。

    トピック投稿者 jump-up

    (@jump-up)

15件の返信を表示中 - 1 - 15件目 (全25件中)
  • トピック「テーマを日本語化したい」には新たに返信することはできません。