More Related Content Similar to WordBench Osaka 春の大翻訳祭り Similar to WordBench Osaka 春の大翻訳祭り(20) More from Takayuki Miyauchi More from Takayuki Miyauchi(20) WordBench Osaka 春の大翻訳祭り1. 春の大翻訳祭
WordBench Osaka
2013/04/13
Takayuki Miyauchi
13年4月15日月曜日
4. 以上!
(宣伝は自粛します。)
13年4月15日月曜日
8. poedit
http://sourceforge.jp/projects/sfnet_poedit/
13年4月15日月曜日
10. Gettext
黒い画面の人はこれ
$ msgfmt -o wp-total-hacks-ja.mo
wp-total-hacks-ja.po
.poを編集後、上記コマンドを実行
13年4月15日月曜日
11. WordPress i18n Tools
プラグイン&テーマ開発者向け
http://svn.automattic.com/wordpress-i18n/tools/trunk/
$ php makepot.php wp-plugin /path/to/plugin
翻訳メッセージの抽出が超簡単!
13年4月15日月曜日
12. ポイント!
✓ 開発者じゃない人は poedit または Google
✓ 複数の人で共有しながら翻訳するならGoogle
13年4月15日月曜日
14. 1. テーマやプラグインの中に専用のディレクトリ
があります。
(デフォルトでは languages)
2. その中で .po ファイルを作成&翻訳
3. .po をコンパイルして、.moを作成
4. 作者さんに、.po と .mo を送る!
13年4月15日月曜日
15. ポイント!
✓ language/ 以下にある .po と .mo が言語フ
ァイルです!
✓ .po は人が編集するためのファイル
✓ .mo はWordPressが実際に読むファイル
13年4月15日月曜日
17. ‣ テーマは、常に ja.po (ja.mo)
‣ プラグインは、example-ja.po (example-ja.mo)
example の部分はテキストドメインというやつ
13年4月15日月曜日
18. ✓ textdomainわかんねー!
‣ languages/ 以下にある .pot のファイル名の部分が
テキストドメイン
‣ .pot がない場合はつくる必要があります。
(ちょっとむずかしい。。。)
13年4月15日月曜日
20. ✓ まれに pot のファイル名が間違ってる場合も
ある...orz
(英語圏の人が開発したものは多言語化のテス
トをしてないことが多い)
13年4月15日月曜日
21. これは超簡単に電子書籍が作れると評判の
bookpressクライアントプラグインのソース
超簡単に電子書籍を作りたい方は
http://ja.bookpress.me/
13年4月15日月曜日
22. ✓ 他にも load_textdomain() という関数を探し
て、その第一引数を見るという手も。
これは誰でも超簡単にAWS上でWordPressが使えると評判の、
Amimotoでも使用されてるプラグインのソース
http://ja.megumi-cloud.com/
13年4月15日月曜日
23. ポイント!
✓ テキストドメイン間違えると翻訳結果が適用
されないから要注意ね!
13年4月15日月曜日
25. ✓ ちなみに今回は .pot があるのを前提にしま
す。
✓ .pot がない場合は、黒い画面(ターミナル)の
出番になります。。。
13年4月15日月曜日
31. ✓ 保存すれば .mo も同時に生成されます。
✓ まめに保存しながら確認しましょうね。^^
13年4月15日月曜日
43. ✓ %s とか %d は、プレースホルダーと呼ばれる
もので、動的に値が変わります。
printf(__('We deleted %d spam messages.'), $count);
%d の部分に $count の値が入る。
「%d件のスパムを削除しました。」
13年4月15日月曜日
44. ✓ %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日月曜日
45. ✓ %s とか %1$s と、%d とか %1$d は、文字
列か数字の違いです。
13年4月15日月曜日
46. ✓ 一部の翻訳のみ適用されない!?
‣ .po に fuzzy って行があると思います。
‣ これは他にも同じようなのがあるけど、オッケー?み
たいな意味です。
‣ fuzzy って書いてある行を1行まるごと削除し
て、.moをつくれば翻訳が適用されます。
13年4月15日月曜日
48. ✓ 作者さんとのコンタクト方法
‣ メール、ブログへのコメント、twitter、フォーラムな
ど。
‣ リアクションがなければ、コンタクト方法を変えて数
日様子を見る感じ。
13年4月15日月曜日
49. ✓ 英語のやり取り怖い!
‣ 僕のとこにくる翻訳のメールは、ほとんどが1行。
‣ Hi, I have translated your ○○ plugin to
Japanese. Your plugin is awesome great !
Thanks !
‣ ぼくが送る時も、だいたいこんな感じです。
13年4月15日月曜日
64. まず環境を構築
1. Xcodeをインストール
2. gettextライブラリを homebrew 等でインス
トール
3. i18n Tools をインストール
13年4月15日月曜日
66. gettextライブラリをインストール
$ ruby -e "$(curl -fsSL https://
raw.github.com/mxcl/homebrew/go)"
$ brew install gettext
13年4月15日月曜日
67. WordPress i18n Toolsを
インストール
$ cd
$ mkdir wordpress-i18n-tools
$ cd wordpress-i18n-tools
$ svn co http://i18n.svn.wordpress.org/tools/trunk/ .
13年4月15日月曜日
68. 抽出方法
$ cd wp-content/plugins/example-plugin
$ cd lnaguages
$ ~/wordpress-i18n-tools/makepot.php wp-plugin .
以上で .pot が生成される(はず)。
13年4月15日月曜日
71. 自作プラグイン等で、.mo のパスを書き換えること
で、暫定的に日本語を適用できます。
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;
}
この方法ならプラグインがアップデー
トされてもオッケー!
13年4月15日月曜日
72. ✓ テーマの翻訳を手っ取り早くするなら、
twentytwelveなどのデフォルトテーマの
ja.mo を、そのまま適用しちゃおう。笑
// 子テーマの functions.php に以下のようなソースを。
load_theme_textdomain(
'ここにテーマのテキストドメイン',
dirname(__FILE__).'/languages'
);
13年4月15日月曜日
74. <?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日月曜日
75. おわり
あざました!
13年4月15日月曜日