WordBench Osaka 春の大翻訳祭り

Preview:

DESCRIPTION

2013/04/13で使う資料を先行公開します。

Citation preview

春の大翻訳祭WordBench Osaka2013/04/13

Takayuki Miyauchi

13年4月15日月曜日

自己紹介

13年4月15日月曜日

@miya0001

13年4月15日月曜日

以上!(宣伝は自粛します。)

13年4月15日月曜日

では、さっそく本題!

13年4月15日月曜日

テーマやプラグインを翻訳しよう!

13年4月15日月曜日

翻訳でよく使用されるツール

13年4月15日月曜日

poedithttp://sourceforge.jp/projects/sfnet_poedit/

13年4月15日月曜日

Google Translator Toolkithttp://translate.google.com/toolkit/

13年4月15日月曜日

Gettext黒い画面の人はこれ

$ msgfmt -o wp-total-hacks-ja.mo \ wp-total-hacks-ja.po

.poを編集後、上記コマンドを実行

13年4月15日月曜日

WordPress i18n Toolsプラグイン&テーマ開発者向け

http://svn.automattic.com/wordpress-i18n/tools/trunk/

$ php makepot.php wp-plugin /path/to/plugin

翻訳メッセージの抽出が超簡単!

13年4月15日月曜日

ポイント!

✓ 開発者じゃない人は poedit または Google

✓ 複数の人で共有しながら翻訳するならGoogle

13年4月15日月曜日

翻訳の流れ

13年4月15日月曜日

1.テーマやプラグインの中に専用のディレクトリがあります。(デフォルトでは languages)

2. その中で .po ファイルを作成&翻訳

3. .po をコンパイルして、.moを作成

4.作者さんに、.po と .mo を送る!

13年4月15日月曜日

✓ language/ 以下にある .po と .mo が言語ファイルです!

✓ .po は人が編集するためのファイル

✓ .mo はWordPressが実際に読むファイル

ポイント!

13年4月15日月曜日

ファイル名の規則

13年4月15日月曜日

‣ テーマは、常に ja.po (ja.mo)

‣ プラグインは、example-ja.po (example-ja.mo)

example の部分はテキストドメインというやつ

13年4月15日月曜日

✓ textdomainわかんねー!‣ languages/ 以下にある .pot のファイル名の部分がテキストドメイン

‣ .pot がない場合はつくる必要があります。(ちょっとむずかしい。。。)

13年4月15日月曜日

これは超簡単にサイトが高速化出来ると評判のWP Boosterの言語ファイル

超簡単にサイトを高速化したい場合はhttp://ja.wpbooster.net/

13年4月15日月曜日

✓ まれに pot のファイル名が間違ってる場合もある...orz(英語圏の人が開発したものは多言語化のテストをしてないことが多い)

13年4月15日月曜日

これは超簡単に電子書籍が作れると評判のbookpressクライアントプラグインのソース

超簡単に電子書籍を作りたい方はhttp://ja.bookpress.me/

13年4月15日月曜日

✓ 他にも load_textdomain() という関数を探して、その第一引数を見るという手も。

これは誰でも超簡単にAWS上でWordPressが使えると評判の、Amimotoでも使用されてるプラグインのソース

http://ja.megumi-cloud.com/

13年4月15日月曜日

✓ テキストドメイン間違えると翻訳結果が適用されないから要注意ね!

ポイント!

13年4月15日月曜日

というわけでさっそく翻訳

13年4月15日月曜日

✓ ちなみに今回は .pot があるのを前提にします。

✓ .pot がない場合は、黒い画面(ターミナル)の出番になります。。。

13年4月15日月曜日

poeditで翻訳作業

13年4月15日月曜日

ファイルの読み込み

13年4月15日月曜日

.pot を選ぶ!間違えないでね!

13年4月15日月曜日

翻訳作業

13年4月15日月曜日

13年4月15日月曜日

✓ 保存すれば .mo も同時に生成されます。

✓ まめに保存しながら確認しましょうね。^^

13年4月15日月曜日

Google Translator Toolkitで翻訳

13年4月15日月曜日

ファイルの読み込み

13年4月15日月曜日

.po ファイルは .potをコピーして、ファイル名の .pot を -ja.po に変更する。

13年4月15日月曜日

13年4月15日月曜日

翻訳が完了したら .poをダウンロード

13年4月15日月曜日

✓ これだけでは、.mo が生成されてないので、poeditで、 .mo を作りましょう。

✓ 漢なら以下のコマンドで。$ msgfmt -o hoge-ja.mo hoge-ja.po

13年4月15日月曜日

翻訳の予備知識

13年4月15日月曜日

翻訳にはガイドラインがあるのでいちおう目を通しましょう。

http://bit.ly/wpjatranslate

13年4月15日月曜日

13年4月15日月曜日

✓ お金をください。=> お金を下さい。

✓ お金を払って下さい。 => お金を払ってください。

わかりますか?この違い。英語力や技術よりも、国語力が重要。

13年4月15日月曜日

✓ Howdy, %s=> こんにちは、 %s さん !

13年4月15日月曜日

✓ %s とか %d は、プレースホルダーと呼ばれるもので、動的に値が変わります。

printf(__('We deleted %d spam messages.'), $count);

%d の部分に $count の値が入る。「%d件のスパムを削除しました。」

13年4月15日月曜日

✓ %1$s とか %1$d は複数のプレースホルダーがある場合に使用します。

printf(__('Your city is %1$s, and your zip code is %2$s.'), $city, $zipcode);

%1$s の部分に $city が、%2$s の部分に $zipcode が入ります。

「あなたの 郵便番号は %2$s 、都市名は %1$s です。」

13年4月15日月曜日

✓ %s とか %1$s と、%d とか %1$d は、文字列か数字の違いです。

13年4月15日月曜日

✓ 一部の翻訳のみ適用されない!?‣ .po に fuzzy って行があると思います。

‣ これは他にも同じようなのがあるけど、オッケー?みたいな意味です。

‣ fuzzy って書いてある行を1行まるごと削除して、.moをつくれば翻訳が適用されます。

13年4月15日月曜日

作者さんに送ろう!

13年4月15日月曜日

✓ 作者さんとのコンタクト方法‣ メール、ブログへのコメント、twitter、フォーラムなど。

‣ リアクションがなければ、コンタクト方法を変えて数日様子を見る感じ。

13年4月15日月曜日

✓ 英語のやり取り怖い!‣ 僕のとこにくる翻訳のメールは、ほとんどが1行。

‣ Hi, I have translated your ○○ plugin to Japanese. Your plugin is awesome great ! Thanks !

‣ ぼくが送る時も、だいたいこんな感じです。

13年4月15日月曜日

なおさんは、こんな感じ

コンタクト方法がわかんない時はフォーラムで投げる!

13年4月15日月曜日

翻訳の心構え(?)

13年4月15日月曜日

✓ メンテを継続できないかも。。。‣ 僕も放置した経験があります。笑

‣ オープンソースなので、あまり目くじらを立てない感じで。^^

13年4月15日月曜日

✓ 作者さん、知らない人だから遠慮しちゃう。。。‣ 仲良くなろうとされても逆に困りますw

‣ そんなこと言ってたらオープンソース成り立たないw

13年4月15日月曜日

✓ 翻訳ファイルはGitHubで公開するのがおすすめ!‣ 続きを誰かがやってくれるかも!

‣ バージョンアップなどの際にpullリクエストがくるかも!

13年4月15日月曜日

matuboさんが公開してた、テーマの翻訳を修正したのが、はじめてGitHubを使ったきっかけ。

13年4月15日月曜日

✓ とにかく気軽な感じで!

13年4月15日月曜日

(上級者・開発者向け).potをつくる!

13年4月15日月曜日

✓ .potをつくるには、phpのソースからメッセージを抽出する必要があります。

13年4月15日月曜日

(まあまあ簡単な方法)poeditを使って抽出する!

13年4月15日月曜日

13年4月15日月曜日

赤いところがミソ!

13年4月15日月曜日

✓ この方法では完全には抽出できないこともあります。

✓ その時は、黒い画面(ターミナル)の登場(詳細はいつか誰かがブログに書くかもw)

13年4月15日月曜日

WordPress i18n Toolsを使った抽出

13年4月15日月曜日

まず環境を構築

1. Xcodeをインストール

2. gettextライブラリを homebrew 等でインストール

3. i18n Tools をインストール

13年4月15日月曜日

Xcodeをインストール

1. App Storeからインストールするだけ!

13年4月15日月曜日

gettextライブラリをインストール

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

$ brew install gettext

13年4月15日月曜日

WordPress i18n Toolsをインストール

$ cd

$ mkdir wordpress-i18n-tools

$ cd wordpress-i18n-tools

$ svn co http://i18n.svn.wordpress.org/tools/trunk/ .

13年4月15日月曜日

抽出方法$ cd wp-content/plugins/example-plugin

$ cd lnaguages

$ ~/wordpress-i18n-tools/makepot.php wp-plugin .

以上で .pot が生成される(はず)。

13年4月15日月曜日

最後に翻訳を使った裏ワザ

13年4月15日月曜日

✓ せっかく翻訳したのに、作者が適用してくれねー!

✓ アップデートしたら翻訳ファイルが消えたじゃねーかっ!

13年4月15日月曜日

add_filter( "load_textdomain_mofile", "my_load_textdomain_mofile", 10, 2); function my_load_textdomain_mofile($mo, $domain){ if ($domain === 'example') { return ‘/path/to/example-ja.mo’; } return $mo;}

自作プラグイン等で、.mo のパスを書き換えることで、暫定的に日本語を適用できます。

この方法ならプラグインがアップデートされてもオッケー!

13年4月15日月曜日

✓ テーマの翻訳を手っ取り早くするなら、twentytwelveなどのデフォルトテーマのja.mo を、そのまま適用しちゃおう。笑

// 子テーマの functions.php に以下のようなソースを。load_theme_textdomain( 'ここにテーマのテキストドメイン', dirname(__FILE__).'/languages');

13年4月15日月曜日

✓ いまいち活用しきれてない投稿フォーマットもこうすれば!?

13年4月15日月曜日

<?php

add_filter('gettext', 'change_post_to_article');add_filter('gettext_with_context', 'change_post_to_article');add_filter('ngettext', 'change_post_to_article');add_filter('ngettext_with_context', 'change_post_to_article');

function change_post_to_article($translated) { $translated = str_ireplace('アサイド', 'プレスリリース', $translated); return $translated;}

13年4月15日月曜日

おわりあざました!

13年4月15日月曜日