NSPredicateEditorのlocalize

ついにこの時が来ました。(どの時???)

NSPredicateEditorを使おうと決めたのです!!
まずは出したり引っ込めたりNSPredicateを取り出したりと遊びまくりました。
超便利です!!

そして、あの、超絶、面倒くさい、思い出したくない、ローカライズです。
さくっとググって出てきたのは、なんと、「素のままじゃ無理じゃね?」「NSRuleEditorからサブクラス作る方が早くね?」という見たくもない記述でした。

当然、私は見なかった事にしました。

そこに書かれたローカライズ用のフォーマットに何かを感じた私はそれを実行してみました。
するとどうでしょう!
サブクラス化する必要なんか全くありませんでした!!
普通に普通の要領でローカライズすれば良かったのです!

こんな感じ。

"%[All]@ of the following are true" = "%[すべて]@ の条件が一致したら";
"%[Any]@ of the following are true" = "%[いずれか]@ の条件が一致したら";
"%[title]@ %[contains]@ %@" = "%1$[タイトルが]@ %3$@ %2$[を含む]@";
"%[title]@ %[begins with]@ %@" = "%1$[タイトルが]@ %3$@ %2$[で始まる]@ ";
"%[title]@ %[ends with]@ %@" = "%1$[タイトルが]@ %3$@ %2$[で終わる]@ ";
"%[title]@ %[is]@ %@" = "%1$[タイトルが]@ %3$@ %2$[である]@ ";
"%[title]@ %[is not]@ %@" = "%1$[タイトルが]@ %3$@ %2$[でない]@ ";

[]で囲まれているのがpopupメニューの要素。囲まれてない(%@だけ)がテキストフィールドとかNSDatePickerとかです。
3行目以降のローカライズされた文字列に注目。
あの、NSLocalizedStringでおなじみの1$とか2$とかがあります。そう、これで、位置を変更出来ちゃいます!
こいつが入ったファイルの名前を-[NSRuleEditor setFormattingStringsFilename:]に渡してやるか、IBの「Format File」に入れる(.stringsは不要)だけ。
超簡単です!
らくちんです。
ないすです。
泣きそうです!