2011-01-06 5 views
1

を翻訳しない:Qooxdoo - コマンドのショートカットは、私が遊び場で次のコードを実行した場合

var button1 = new qx.ui.form.Button("First Button", "icon/22/apps/internet-web-browser.png"); 
var doc = this.getRoot(); 
doc.add(button1, { left : 100, top : 50 }); 
button1.addListener("execute", function(e) { alert("Hello World!"); }); 
button1.setToolTipText(new qx.ui.core.Command("Control+D").toString()); 
qx.locale.Manager.getInstance().setLocale("en"); 

をボタン、ツールチップにCtrl + Dを示しています。

ロケールを「de」に変更すると、ツールチップにCtrl + Dが表示されます。 2回目の実行では、正しい文字列であるStrg + Dが表示されます。

最初の実行時に正しい文字列を表示するにはどうすればよいですか?私の問題を示して

アンさらに良い例がこれです:

var doc = this.getRoot(); 
var button1 = new qx.ui.form.Button("Deutsch", "icon/22/apps/internet-web-browser.png"); 
doc.add(button1, { left : 100, top : 50 }); 
button1.addListener("execute", function(e) { qx.locale.Manager.getInstance().setLocale("de"); }); 
button1.setToolTipText(new qx.ui.core.Command("Control+D").toString()); 

var button2 = new qx.ui.form.Button("English", "icon/22/apps/internet-web-browser.png"); 
doc.add(button2, { left : 200, top : 50 }); 
button2.addListener("execute", function(e) { qx.locale.Manager.getInstance().setLocale("en"); }); 
button2.setToolTipText(new qx.ui.core.Command("Control+E").toString()); 

がツールヒントを見てください。

これはバグですか?またはロケールを正しい方法で設定していませんか?

/種類が

についてクリスチャン

答えて

1

スニペットの両方の問題はevalutationと秩序のことです。一つのこととして、qx.ui.core.Command("Control+D").toString()は、現在のロケールが与えられていれば、単純な文字列を返します。その後、値は「固定」され、自動的には変更されません。あなたの最初のスニペットでは、の最初のはツールチップを設定し、のロケールを変更します。つまり、 "en"に切り替える前に有効なロケールに応じてツールチップが設定されます。スニペットを再実行すると(私はあなたがプレイグラウンドを使用していると推測します)、新しいロケールの下でツールチップの設定が実行され、ツールチップに英語のバージョンが表示されます。

「実行」リスナーのロケールを変更しても、コードが評価された時点で有効だったロケールを使用してその値が既にハードワイヤードになっているため、ツールチップには何の効果もありません。 ではなく、ボタンを押すと!)。もちろん、ボタンの1つを押してからPlaygroundでコードを再実行すると、新しいロケールがピックアップされてツールチップに表示されます。

これを回避する1つの方法は、ツールヒントを「実行」リスナーに設定することです。 See this Playground example. (これはあまり賢明ではありませんが、今後これから作業することができます)

+0

aaahhh .. thxはもちろん、文字列は固定されており、毎回再評価されません。時には簡単な解決策です – Christian

関連する問題