以下の問題はプラグインの新バージョンにて解決されています。
WordPress 3.4 からは言語ファイルが分割され、従来の ja.mo に加え、admin-ja.mo やら admin-network-ja.mo やら continents-cities-ja.mo やらが加わっています。
分割することでファイルサイズを抑え、読み込み時のオーバーヘッドを減らす目的でしょうけれど、先日導入した Mo Cache は .mo ファイルを1個に絞ってキャッシュしていたようなので、無理矢理全部のファイルの中身をキャッシュするようにしてみました。
WordPress 3.4 で MO Cache 使うとこんな感じ。 pic.twitter.com/BM8WkDU8
— ゆーいち (@yuuichi) June 14, 2012
無効にするとメニューは日本語化される。なんか本末転倒な状態だ……(;´∀`) pic.twitter.com/22TlvTV0
— ゆーいち (@yuuichi) June 14, 2012
パッチ
怪しい部分は以下の所なので、ちょっといじってみました。
if ( ! preg_match( '/w+(?=.mo$)/', $mofile, $matches ) ) return;$key = "$domain:$matches[0]";
— ゆーいち (@yuuichi) June 14, 2012
.mo にマッチしたファイルのリストを1個ずつ foreach で回してやってるだけですが。
$ diff -cw mo-cache_bak.phps mo-cache.php *** mo-cache_bak.phps 2012-06-14 18:33:04.871131065 +0900 --- mo-cache.php 2012-06-14 18:36:00.921145924 +0900 *************** *** 37,43 **** if ( isset( $this->hit[$domain] ) ) return true; if ( ! preg_match( '/\w+(?=\.mo$)/', $mofile, $matches ) ) return; ! $key = "$domain:$matches[0]"; if ( function_exists( 'wp_cache_add_global_groups' ) ) { wp_cache_add_global_groups( self::GROUP ); --- 37,44 ---- if ( isset( $this->hit[$domain] ) ) return true; if ( ! preg_match( '/\w+(?=\.mo$)/', $mofile, $matches ) ) return; ! foreach( $match as $matches ) { ! $key = "$domain:$match"; if ( function_exists( 'wp_cache_add_global_groups' ) ) { wp_cache_add_global_groups( self::GROUP ); *************** *** 62,67 **** --- 63,69 ---- return false; } } + } /** * Store MO object in cache
効果は?
確かに MO Cache を有効にして言語ファイルが適用されるようになりました。
が、思いつきで改造してみただけなので、有効かどうかはちょっと自信がないです(;´∀`)
コメント