文字数の制御
MTで文字数を制御する方法が、なぜか2つあります。
- MTEntryBodyのみで使える(と思われる)words
- trim_to(どこでも使える?)
となっていますが、挙動が違うんです。wordsの方は、全角対応しています。trim_toは、半角換算になってしまいます。
そうすると、wordsをグローバルで使いたいじゃないですか。それで調べていこうと、grepをかけてから、気づいたんです。「words」っていたるところで使われていて、どうにもこうにも。おそらくは、I18Nあたりが関係しているかと思うんですけれど。
じゃあ、自作?と思ってJcodeをみていたら、「jfold」というメソッドがあるんです。すいません、知りませんでした。結構便利なんですが、やっぱり半角換算になってしまうんです。あとは、ここら辺をMTとともに、調べてみるべきなんでしょうね。
追記
MTEntryBodyのみで使える(と思われる)wordsは、Jcodeを使用するときには、MT::I18N::ja::first_n_jcodeですね。文字自体の制御をしているのは、substr_text_jcodeになるようです。
文字列を一度、EUCにして、文字一つづつ(というのは正しくないと思うけれど)に分解し、1バイト文字、2バイト文字を判断して、文字数をカウントしているのかな?と思います。
[\xA1-\xFE][\xA1-\xFE]
[\x8F][\xA1-\xFE][\xA1-\xFE]
追記2
で、「」というページにあるプラグインで、I18Nが色々な場所で使えるようになりますよ、と。
「」みたら、2004年8月16日らしいです。作られたの...。