WordPress の勉強会、WordBench 東京の勉強会に行ってきました。例によって個人的メモです。というか、WordPress 2.8 変わりすぎですね。 🙂

WordPress 翻訳システム入門

WordBench Tokyo: tenpura さん: EOS Kiss X3: プログラムAE 1/50sec F5.0 ISO1600 109mm EF-S55-250mm

tenpura さん

Speaker: tenpura さん

WordPress が採用している国際化システム

  • gettext 準拠のライブラリ (パッケージ内)
  • 独自の国際化システム (オンライン)
  • gettext … ソフトウェアの国際化のための開発ライブラリとツール群。
  • プラグインヘッダの Description は po ファイルの翻訳が通らない。
  • poedit … mo はテキスト、po はバイナリ

翻訳データ読み込みの流れ

  • WPLANG を読む (wp-config.php)
  • 対応する mo ファイルを読み込む
  • 翻訳メモリー ($l10n) を生成

国際化システム (オンライン) の仕事

  • 3カ所のソースをマージしてパッケージ生成
  • kubrick の default テーマも国際化されている
  • /*WP_I18N_XXX*/ で挟まれた部分の置換

2.8 で変わった点

  • 今までになく大きく変わった
  • msgctxt サポート … 同じ msgid でもコンテクストごとに訳を変えられるようになった
    [code langauge=”php”]
    msgctxt "adjective"
    msgid "Pending"
    msgstr "レビュー待ち"
    [/code]
  • _x(), _nx() が追加。ほとんどの _c() は _x() に置き換え
    [code language=”php”]
    _c(‘Spam|adjjective’);
    _x(‘Spam’,’adjective);
    [/code]
  • _ngettext() → _n()
  • _ngettexttop

詳しくは 9111, 9112

2.8 以降の翻訳時の注意

  • translators:xxx, msgtxt を見る。Poedit は msgctxt を表示してくれない (?)
  • Poedit のキーワードを更新する。特に _x:2c,1

_x の使い方サンプル

id が同じなのに上書きされない。

[code language=”php”]
__(‘Pizza’, ‘pizza’);
_x(‘Pizza’, ‘adjective’, ‘pizza’);
_x(‘Pizza’, ‘verb’, ‘pizza’);
[/code]

Q&A

Q. WordPress 2.7.x 以前で _x() を使用したプラグインはどうなるのか。
A. 該当する関数がないのでエラーになる。

CMS として使う WordPress の○×

WordBench 東京: 大曲 仁さん: EOS Kiss X3: プログラムAE 1/60sec F5.0 ISO1600 109mm EF-S55-250mm

大曲 仁さん

Speaker: 大曲 仁さん

現在の CMS 動向

  • CMS を今後導入予定、と回答した企業は 13.6%。前年度比で 1.8% up
  • 2009年 マイクロソフト CMS … 11.9%, オープンソース CMS 11.6%
  • インターネット白書より

CMS としてみた WordPress の×

  • ブログとしての限界 … 組織としての承認しながらの利用が困難
  • 不具合が多い
  • 10,000記事くらいでカテゴリ表示が体感できるほど遅くなり始める

どんなサイトに適しているのか

  • 構築費用、承認なし、100ページ以内
  • 中小企業向け CMS として最適

WordPress を使った CMS サイトの構成方法

  • ページ機能をベースとして構成
  • 投稿機能は最新情報、カテゴライズされる情報
  • Classic テーマをベースにカスタマイズ
  • ビジュアルエディタで見えない div タグの使用はレイアウト崩れの原因になる

後編につづく。