2

OK/CancelXPCOM のダイアログ ウィンドウのボタンのラベルを変更/翻訳するにはどうすればよいですか? そのようなボタンのリストをここで見ることができます。

なるほど、Zotero Firefoxアドオンをローカライズしたい。このようなダイアログを表示するコードの一部は次のとおりです。

var regenerate = promptService.confirmEx(
    window, 
    Zotero.getString('integration.revert.title'),
    Zotero.getString('integration.revert.body'),
    promptService.STD_OK_CANCEL_BUTTONS + promptService.BUTTON_POS_1_DEFAULT,
    null, null, null, null, out
);​
4

3 に答える 3

3

まず、XUL を学びたい場合は、XUL Explorerを入手することを強くお勧めします。これは、スニペットを作成し、設計中のものをプレビューするために使用できるインタラクティブなツールです。

XUL は HTML によく似ていますが、要素とアプローチのラインナップが同じではないため、これまで XUL で作業したことがない場合に便利です。それは、次のようなものを構築するために使用できるデスクトップアプリを構築するために使用されるという点で、HTML が行う場所よりも少し上にあります。

https://developer.mozilla.org/en-US/docs/tag/tools

これらのプログラムの大部分は、ソースをダウンロードして、ドキュメントのリストと同じように調べることができます。また、Firefox Web Developer アドオンなど、いくつかの拡張機能にも気付くでしょう。これがソースで、ここにいくつかの XUL ファイルがあります。これにはたまたまdialogsディレクトリとmessage.xul:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/"?>
<?xml-stylesheet href="chrome://web-developer/content/dialogs/style-sheets/message.css"?>
<!DOCTYPE dialog SYSTEM "chrome://web-developer/locale/dialogs/message.dtd">
<dialog buttons="accept" id="web-developer-message-dialog" onload="WebDeveloper.Message.initialize()" title="&webdeveloper.message.title;" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script src="chrome://web-developer/content/common/common.js"/>
    <script src="chrome://web-developer/content/dialogs/javascript/message.js"/>

    <vbox id="web-developer-message-details">
        <description id="web-developer-message"/>
        <description id="web-developer-more-information" value="&webdeveloper.more.information;" onclick="WebDeveloper.Message.moreInformation()" class="url"/>
    </vbox>
</dialog>​

したがって、Dialogこれに を使用して、さまざまなタイプのプロンプトを作成できます。たとえば、少し前にチュートリアルで次のことを行いました。

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<dialog id="myDialog" title="My Dialog"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        onload="window.sizeToContent();"
        buttons="accept,cancel"
        buttonlabelaccept="Set Favorite"
        buttonaccesskeyaccept="S"
        ondialogaccept="return doSave();"
        buttonlabelcancel="Cancel"
        buttonaccesskeycancel="n"
        ondialogcancel="return doCancel();">
  <script>
  function doSave(){
      //doSomething()
      return true;
  }
  function doCancel(){
      return true;
  }
  </script>
  <dialogheader title="My dialog" description="Example dialog"/>
  <groupbox flex="1">
    <caption label="Select favorite fruit"/>
    <radiogroup>
      <radio id="1" label="Oranges because they are fruity"/>
      <radio id="2" selected="true" label="Strawberries because of color"/>
      <radio id="3" label="Bananna because it pre packaged"/>
    </radiogroup>
  </groupbox>
</dialog>

次のようになります。

ここに画像の説明を入力

したがって、必要に応じて、本当に多くのオプションがありますnsIPromptService...

var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
                        .getService(Components.interfaces.nsIPromptService);

var check = {value: false};                  // default the checkbox to false

var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_SAVE +
            prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_IS_STRING  +
            prompts.BUTTON_POS_2 * prompts.BUTTON_TITLE_CANCEL;
// This value of flags will create 3 buttons. The first will be "Save", the
// second will be the value of aButtonTitle1, and the third will be "Cancel"

var button = prompts.confirmEx(null, "Title of this Dialog", "What do you want to do?",
                               flags, "", "Button 1", "", null, check);

というものもありますPopupNotifications.jsm。たくさんあるので、やりたいことがきっと見つかると思います。Zoteroのソースもあります。

于 2012-09-16T16:27:57.263 に答える
1

カスタム ラベルが必要な場合は、デフォルトのボタンを使用しないでください。

promptService.confirmEx(
    window, 
    Zotero.getString('integration.revert.title'),
    Zotero.getString('integration.revert.body'),
    promptService.BUTTON_POS_0 * BUTTON_POS_0_DEFAULT,
    Zotero.getString('integration.revert.OK'),
    Zotero.getString('integration.revert.cancel'),
    null, null, out
);​

これは、最初のボタンをデフォルトとして宣言しますが、フラグを指定する必要がないことを除けば、2 つのラベルが指定されているため、2 つのボタンが表示されます。

于 2012-09-17T07:17:14.093 に答える
0

すべてのブラウザーをサポートしながらこれを行う唯一の方法は、ダイアログ ライブラリを使用して作成することです。jQueryUIは、トレンディなライブラリとしては少し終わりを迎えていますが、それでも十分な機能を備えています。

于 2012-09-16T12:25:05.583 に答える