2010/04/08

Locale(Tracker編)の巻

Deskbarに続き、Tracker(というか、libtracker.so)をいじり中。
ローカライズされたlibtracker.soでは、他のアプリからBFilePanelを呼び出すと落ちる問題が発生していましたが、とりあえず以下のコードで解決?
TFilePanel::TFilePanel(file_panel_mode mode, BMessenger *target,
const BEntry *startDir, uint32 nodeFlavors, bool multipleSelection,
BMessage *message, BRefFilter *filter, uint32 containerWindowFlags,
window_look look, window_feel feel, bool hideWhenDone)
: BContainerWindow(0, containerWindowFlags, look, feel, 0, B_CURRENT_WORKSPACE),
fDirMenu(NULL),
fDirMenuField(NULL),
fTextControl(NULL),
fClientObject(NULL),
fSelectionIterator(0),
fMessage(NULL),
fHideWhenDone(hideWhenDone),
fIsTrackingMenu(false)
{
if (!be_catalog){
fCatalog = new BCatalog("application/x-vnd.Be-TRAK");
be_locale->GetAppCatalog(fCatalog);
}else{
fCatalog = NULL;
}
ただしこれだと、
  • ローカライズされてないアプリから呼ばれた場合、BFilePanelは英語のまま。
  • ローカライズされたアプリから呼ばれた場合、BFilePanelはアプリのカタログにある部分だけローカライズされる
となり、libtracker.so自身のカタログがBFilePanelに使われない問題が出てきます。
まぁ、コードはちょっと思いつかないので、ここはこのまま出すこととしましょう…

あとはひたすらTRマクロ付け&BLayout化作業ですね…
ちなみに、現在catkey190行以上あります:-)

0 件のコメント:

コメントを投稿