75
春の大翻訳祭 WordBench Osaka 2013/04/13 Takayuki Miyauchi 13415日月曜日

WordBench Osaka 春の大翻訳祭り

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: WordBench Osaka 春の大翻訳祭り

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

Takayuki Miyauchi

13年4月15日月曜日

Page 2: WordBench Osaka 春の大翻訳祭り

自己紹介

13年4月15日月曜日

Page 3: WordBench Osaka 春の大翻訳祭り

@miya0001

13年4月15日月曜日

Page 4: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 5: WordBench Osaka 春の大翻訳祭り

では、さっそく本題!

13年4月15日月曜日

Page 6: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 7: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 8: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 9: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 10: WordBench Osaka 春の大翻訳祭り

Gettext黒い画面の人はこれ

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

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

13年4月15日月曜日

Page 11: WordBench Osaka 春の大翻訳祭り

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

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

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

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

13年4月15日月曜日

Page 12: WordBench Osaka 春の大翻訳祭り

ポイント!

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

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

13年4月15日月曜日

Page 13: WordBench Osaka 春の大翻訳祭り

翻訳の流れ

13年4月15日月曜日

Page 14: WordBench Osaka 春の大翻訳祭り

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

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

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

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

13年4月15日月曜日

Page 15: WordBench Osaka 春の大翻訳祭り

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

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

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

ポイント!

13年4月15日月曜日

Page 16: WordBench Osaka 春の大翻訳祭り

ファイル名の規則

13年4月15日月曜日

Page 17: WordBench Osaka 春の大翻訳祭り

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

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

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

13年4月15日月曜日

Page 18: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 19: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 20: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 21: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 22: WordBench Osaka 春の大翻訳祭り

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

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

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

13年4月15日月曜日

Page 23: WordBench Osaka 春の大翻訳祭り

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

ポイント!

13年4月15日月曜日

Page 24: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 25: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 26: WordBench Osaka 春の大翻訳祭り

poeditで翻訳作業

13年4月15日月曜日

Page 27: WordBench Osaka 春の大翻訳祭り

ファイルの読み込み

13年4月15日月曜日

Page 28: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 29: WordBench Osaka 春の大翻訳祭り

翻訳作業

13年4月15日月曜日

Page 30: WordBench Osaka 春の大翻訳祭り

13年4月15日月曜日

Page 31: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 32: WordBench Osaka 春の大翻訳祭り

Google Translator Toolkitで翻訳

13年4月15日月曜日

Page 33: WordBench Osaka 春の大翻訳祭り

ファイルの読み込み

13年4月15日月曜日

Page 34: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 35: WordBench Osaka 春の大翻訳祭り

13年4月15日月曜日

Page 36: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 37: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 38: WordBench Osaka 春の大翻訳祭り

翻訳の予備知識

13年4月15日月曜日

Page 39: WordBench Osaka 春の大翻訳祭り

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

http://bit.ly/wpjatranslate

13年4月15日月曜日

Page 40: WordBench Osaka 春の大翻訳祭り

13年4月15日月曜日

Page 41: WordBench Osaka 春の大翻訳祭り

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

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

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

13年4月15日月曜日

Page 42: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 43: WordBench Osaka 春の大翻訳祭り

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

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

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

13年4月15日月曜日

Page 44: WordBench Osaka 春の大翻訳祭り

✓ %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日月曜日

Page 45: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 46: WordBench Osaka 春の大翻訳祭り

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

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

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

13年4月15日月曜日

Page 47: WordBench Osaka 春の大翻訳祭り

作者さんに送ろう!

13年4月15日月曜日

Page 48: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 49: WordBench Osaka 春の大翻訳祭り

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

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

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

13年4月15日月曜日

Page 50: WordBench Osaka 春の大翻訳祭り

なおさんは、こんな感じ

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

13年4月15日月曜日

Page 51: WordBench Osaka 春の大翻訳祭り

翻訳の心構え(?)

13年4月15日月曜日

Page 52: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 53: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 54: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 55: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 56: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 57: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 58: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 59: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 60: WordBench Osaka 春の大翻訳祭り

13年4月15日月曜日

Page 61: WordBench Osaka 春の大翻訳祭り

赤いところがミソ!

13年4月15日月曜日

Page 62: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 63: WordBench Osaka 春の大翻訳祭り

WordPress i18n Toolsを使った抽出

13年4月15日月曜日

Page 64: WordBench Osaka 春の大翻訳祭り

まず環境を構築

1. Xcodeをインストール

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

3. i18n Tools をインストール

13年4月15日月曜日

Page 65: WordBench Osaka 春の大翻訳祭り

Xcodeをインストール

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

13年4月15日月曜日

Page 66: WordBench Osaka 春の大翻訳祭り

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

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

$ brew install gettext

13年4月15日月曜日

Page 67: WordBench Osaka 春の大翻訳祭り

WordPress i18n Toolsをインストール

$ cd

$ mkdir wordpress-i18n-tools

$ cd wordpress-i18n-tools

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

13年4月15日月曜日

Page 68: WordBench Osaka 春の大翻訳祭り

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

$ cd lnaguages

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

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

13年4月15日月曜日

Page 69: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 70: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 71: WordBench Osaka 春の大翻訳祭り

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日月曜日

Page 72: WordBench Osaka 春の大翻訳祭り

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

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

13年4月15日月曜日

Page 73: WordBench Osaka 春の大翻訳祭り

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

13年4月15日月曜日

Page 74: WordBench Osaka 春の大翻訳祭り

<?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日月曜日

Page 75: WordBench Osaka 春の大翻訳祭り

おわりあざました!

13年4月15日月曜日