前の関連記事:LibreOffice5(28)MRI - UNO Object Inspection Tool:その4
拡張機能のダイアログの多言語化の方法についてはExtensions/Localization - ...?にいくつか紹介されています。まずは一見一番簡単そうにみえるダイアログエディタの言語ツールバーを利用する方法です。
ダイアログエディタの言語ツールバーを有効にする方法
この方法が一番簡単そうですが、保存したソースファイルのマルチバイト文字がエディタでは簡単に読解できませんので手直しするときはダイアログエディタを使う必要があります。
さらにlinuxBean14.04とLibreOffice 5.0.2.2の組み合わせでは言語ツールバーを有効にするには一工夫必要でした。
ツール→マクロ→ダイアログの管理。
「編集」ボタンをクリック。
これでダイアログエディタが起動します。
表示→ツールバー→言語。
「言語の管理」ボタンをクリック。
「追加」ボタンをクリック。
ここで言語を選択すれば追加されるはずですが、バグなのかlinuxBean14.04とLibreOffice 5.0.2.2の組み合わせでは何も起こりません。
(2016.3.9追記。以前からあるバグのようです。Bug 93592 – Cant' add localized strings to Basic dialog.)
どうしたものかとあれこれいじくっているうちに言語の管理を有効にする方法がわかりました。
「インポートダイアログ」ボタンをクリック。
/opt/libreoffice5.0/share/extensions/dict-en/dialogにあるen.xdlをインポートします。
これはデフォルトでインストールされている拡張機能の「英語スペル辞書、ハイフネーション規則、類義語辞典と文法チェッカー」のダイアログです。
「追加」ボタンをクリック。
これでダイアログエディタで言語が選択できるようになりました。
肝心のen.xdlはインポートされず、言語設定のファイルだけがインポートされます。
そもそもそれをしたかったのですが、すでに存在するIDのダイアログはインポートされないようなのですが、IDを変更しても1回はインポートされたのですがその後再現できませんでした。
en.xdlの言語設定は111個もある上に略号での表記しかない言語もあるのでこれらを修正します。
「言語の管理」ボタンをクリック。
「英語(米国)[既定の言語]」の下をクリックして一番下の言語をシフトキーを押しながら選択して、先頭の「英語(米国)[既定の言語]」以外を選択状態にして「削除」ボタンをクリック。
削除できたら今度は「追加」ボタンをクリック。
「KeyID」と「日本語」にチェックをつけて「OK」。
「標準-日本語」というものもありますがこれにチェックをつけるとLibreOfficeがフリーズしてタスクマネージャから強制終了せざるを得なくなるのでチェックをつけてはいけません。
英語(米国)、KeyID、日本語の3つの言語が表示されているので「日本語」を選択して「既定」ボタンをクリックします。
これで言語ツールバーから言語が選択できるようになりました。
ここでファイル→保存、します。
保存せずにLibreOfficeを終了するとここまでの設定が消えてしまいます。
保存するとダイアログエディタの「マイマクロ&ダイアログ」フォルダである~/.config/libreoffice/4/user/basic/StandardにDialogStringsから始まる4つのファイルができます。
defaultファイルは既定の言語を示すためだけにあるようでファイルの中身は空っぽです。
propertiesファイルには「マイマクロ&ダイアログ」フォルダにあるすべてのダイアログについての言語設定が各言語ごとに設定されています。
xdlファイルに書かれていた言語部分がpropertiesファイルの項目名に置換されていました。
日本語は\uで始まるコードで表記されているのでこの.propertiesファイルを直接編集するのは簡単ではありません。
(2018.3.23追記。\uで始まるこのコードはUnicodeのコードポイントをUnicodeリテラルで書いたものでPythonで簡単に日本語に戻せることがわかりました。Python: Unicodeのコードポイントと文字列の変換)
日本語表記のダイアログを英語表記に変更する
LibreOffice5(21)ダイアログエディタでGUIを作成しPythonで利用する:その1で作成したDialog2を英語表記にしてみます。
ダイアログエディタのオブジェクトカタログでDialog2をダブルクリックしてダイアログエディタで開きます。
言語ツールバーで「英語(米国)」を選択します。
これで選択した言語にしたい部分をその言語に書き換えてダイアログを保存すればよいわけです。
問題はウィンドウタイトル名です。
これはダイアログエディタのプロパティにないので、LibreOffice5(21)ダイアログエディタでGUIを作成しPythonで利用する:その1ではxdlファイルでプロパティを直接書き込みました。
ところがダイアログエディタで多言語化するとxdlファイルの言語部分はpropertiesファイルの項目名に置換されて、言語自体はpropertiesファイルに書かないといけません。
propertiesファイルではマルチバイト文字はそのままでは読めないのですが、今回は日本語を英語に書きかえるのでpropertiesファイルを直接書き換えます。
~/.config/libreoffice/4/user/basic/StandardのDialogStrings_en_US.propertiesファイルをGeanyで開きます。
6.Dialog2.Title=HelloWorld\u30a6\u30a3\u30f3\u30c9\u30a6先頭の番号はDialog1の項目数に依存するので不定ですが、Dialog2.Titleというこの項目がDialog2のウィンドウタイトル名になります。
6.Dialog2.Title=HelloWorldWindowHelloWorldWindowと書き換えてDialogStrings_en_US.propertiesファイルを保存後LibreOfficeを再起動するとウィンドウタイトル名を書き換えれました。
ダイアログの書き出しと読み込み
~/.config/libreoffice/4/user/basic/Standardフォルダにある多言語化したxdlファイルの言語部分はxdlファイルごとにわかれていないのでそのままでは拡張機能にもっていけません。
LibreOfficeから一つのダイアログだけ書き出します。
Dialog2ダイアログをダイアログエディタで開いた状態で「エクスポート」ダイアログボタンをクリックします。
保存先を指定するとDialog2.xdlとそれに使わている言語ファイルが必要な部分だけ抽出されて同じ保存先に出力されます。
propertiesファイルの項目名の先頭の番号もそのまま抽出されています。
エクスポートしたxdlファイルをインポートするときはエクスポートボタンの左横にあるインポートダイアログボタンをクリックして取り込めます。
参考にしたサイト
Extensions/Localization - ...?
拡張機能を多言語化する方法について解説されています。
0 件のコメント:
コメントを投稿