create a new page, using Extensions/Localization as a template.
Front page
Search
掲示板
Reload
Help
Browse Log
掲示板の使い方
OOo 掲示板3
OOo 掲示板2
OOo 掲示板
掲示板
雑談掲示板
New
List of pages
Recent changes
Backup
簡単ヘルプ
整形ルール
Start:
*ローカライズ [#lfc18ab9]
拡張機能のローカライズ関連について取り上げます。テンプレ...
ここでは主に Basic などのコードやダイアログなどを利用した...
#contents
**Addons.xcu [#xcf39ff0]
得にメニューやツールバーへの統合目的の Addons.xcu の設定...
多言語にする必要があるのはメニューやツールバーボタンの Ti...
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en-US">~English</value>
<value xml:lang="ja">~日本語</value>
</prop>
***ツールバー名 [#p75bf574]
Addons.xcu ファイルで追加したツールバー名のローカライズは...
**文字列 [#f17a7483]
文字列はコード中に埋め込まれるとローカライズできなくなっ...
コンフィグレーションは /share/registry 以下で見られる xml...
多くの場合簡単な文字列 (メニューや警告文など) なので既存...
利用するのは OOo のメニューなどの文字列を保存してある /or...
スキーマファイル xcs はこんな感じにします。oor:package="m...
#code(xcu){{
<?xml version="1.0"?>
<oor:component-schema xmlns:oor="http://openoffice.org/20...
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
oor:name="IACommands"
oor:package="mytools.basicide"
xml:lang="en-US">
<import oor:component="org.openoffice.Office.UI.Commands"/>
<uses oor:component="org.openoffice.Office.UI.Commands"/>
<templates/>
<component>
<group oor:name="UserInterface">
<set oor:name="Commands"
oor:node-type="LabelType"
oor:component="org.openoffice.Office.UI.Commands">
</set>
</group>
</component>
</oor:component-schema>
}}
これに対応した実際のデータ xcu ファイルは次のようになりま...
#code(xcu){{
<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data xmlns:oor="http://openoffice.org/2001...
xmlns:xs="http://www.w3.org/2001/XMLSchema"
oor:name="IACommands"
oor:package="mytools.basicide">
<node oor:name="UserInterface">
<node oor:name="Commands">
<node oor:name="mytools.basicide:Insert.Date" oor:op=...
<prop oor:name="Label">
<value xml:lang="en">~Date</value>
<value xml:lang="ja">日付(~D)</value>
</prop>
</node>
<node oor:name="mytools.basicide:Insert.Time" oor:op=...
<prop oor:name="Label">
<value xml:lang="en">~Time</value>
<value xml:lang="ja">時間(~T)</value>
</prop>
</node>
</node>
</node>
</oor:component-data>
}}
Commands ノード内に name 属性を個別に指定した子ノードを作...
これらの値をコード内で利用するために取得するのは com.sun....
**ダイアログ [#z4ada51e]
ダイアログのローカライズは OOo 2.2 から利用できるようにな...
ダイアログエディタで表示メニューから言語ツールバーを表示...
あとは言語を切り替えて各言語に対応したラベルなどを入力し...
ダイアログは OOo のロケールに対応した言語で表示されます。...
ダイアログに言語を追加した後で注意が必要です。
空のテキストボックスを配置してあるダイアログでは、表示時...
**ヘルプ [#m71ef34c]
言語ごとのファイルを言語名のディレクトリに入れておきます...
ヘルプは言語のものが見つからない時には en が利用されるこ...
**リソース [#m3ea85f0]
OpenOffice.org の UI で利用されている文字列は多くの場合 /...
(com.sun.star.resource.VclStringResourceLoader は利用せず...
とはいえ、リソース文字列を取得する際のリソース ID がバー...
***リソース ID の調べ方 [#qec3a09c]
バイナリエディタで調べる以外の方法が思いついたら書きます。
**メニューコマンド [#g27f92bd]
メニューの項目はメニューのコマンド URL に対して各言語の文...
/org.openoffice.Office.UI.XXXCommands 以下にあります。
OOo のインストールディレクトリの shared/registry/res/LANG...
**その他 [#v1103b75]
その他、ライセンス表示、拡張機能マネージャでの表示名、更...
**現在の言語を調べる [#vd1eea56]
コンフィグレーション中に現在の言語を保持している項目があ...
/org.openoffice.Setup/L10N の ooLocale プロパティを参照し...
**ツールチップと拡張ヘルプ [#i47ba946]
ヒントや詳細ヒント。
ダイアログのヒントはヘルプテキストに入力したものが言語に...
一方、Shift + F1 キーを押したときの詳細ヒントは拡張機能ヘ...
**StringResourceWithLocation (文字列2)[#x59832a2]
StringResourceWithLocation サービスを利用する。これは、他...
この方法では拡張機能 ID が必要です。
[[BookmarksMenu>OOobbs2/83]] 拡張機能で試してみます。この...
そして、パッケージ内の mytools_BookmarksMenu ディレクトリ...
-DialogStrings_en_US.default
-DialogStrings_en_US.properties
-DialogStrings_fr.properties
-DialogStrings_ja_JP.properties
まず、[[PackageInformationProvider>OOoBasic/Generic/Exten...
StringResourceWithLocation サービスをインスタンス化して利...
initialize に与える配列の引数はそれぞれ次のものです。
-リソースファイルのあるディレクトリ URL
-読み込み専用で開くかどうか
-ロケール
-リソースファイル名。言語、国名を省いた部分で指定。
-ハンドラ。不要なので Null
文字列の ID を調べてきて、resolveString メソッドで ID を...
#code(ob){{
sub StrResourceLocation_1
oContext = GetDefaultContext()
sPkgId = "mytools.BookmarksMenu"
sPIPName = "/singletons/com.sun.star.deployment.Packag...
If oContext.hasByName( sPIPName ) Then ' 2.3
oPkgIP = oContext.getByName( sPIPName )
' パッケージのディレクトリ名を取得
sPkgLocation = oPkgIP.getPackageLocation( sPkgId )
' DialogStrings ファイルのあるディレクトリ名
sDlgLocation = sPkgLocation & "/mytools_BookmarksMen...
' サービスをインスタンス化して初期化します
oStrRes = CreateUnoService( _
"com.sun.star.resource.StringResourceWithLocation")
oStrRes.initialize( Array( _
sDlgLocation, True, _
CreateLocale("ja","JP"), "DialogStrings", "", Nu...
msgbox oStrRes.resolveString( "1.Dialog1.Title" )
'mri oStrRes
End If
end sub
Function CreateLocale( sLang As String, sCountry As Str...
aLocLocale = CreateUnoStruct("com.sun.star.lang.Locale")
aLocLocale.Language = sLang
aLocLocale.Country = sCountry
CreateLocale = aLocLocale
End Function
}}
リソースファイル内では文字列は次のような形式で保存されて...
ID=MOJIRETSU
また、リソースファイル内ではマルチバイト文字は \uXXXX の...
Py-UNO から StringResourceWithLocation サービスを利用する...
initialize するときに最後の引数に None を与えると失敗する...
#code(python){{
from com.sun.star.task import XInteractionHandler
class dummy_handler(unohelper.Base,XInteractionHandler):
""" dummy XInteractionHanlder interface for
the StringResouceWithLocation """
def __init__(self):
pass
def handle(self,request):
pass
# ...
# ...
str_res = ctx.ServiceManager.createInstanceWithContext(
"com.sun.star.resource.StringResourceWithLocation", ctx )
str_res.initialize(
(resource_url,True,locale,"ClipboardManager","",dummy_h...
}}
**文字列3 [#tf1972d3]
ダイアログのリソースファイルを利用すると不要なものも混じ...
というわけでマクロを書いてみました。表計算ドキュメント上...
-A1: コメント
-A2: リソースファイル名の接頭語
-A3: デフォルトロケール
-列A: リソース ID
-行4: ロケール文字列
-列B 以降: 言語に対応したリソース文字列
ドキュメント中の Standard - Module1 - Main を実行するとド...
また、言語と ID の増減は自動で検出します (セルカーソルの ...
既存のダイアログなどのリソースファイルを読み込めるように...
+A2: 接頭名、A3: デフォルトロケールを入力
+Module2 の ImportMain を実行
するとシートに ID とロケールごとの文字列を読み込みます。
コメントは読み込み不可 (書き込みのみ) なので読み込まれま...
行の移動などがやりにくかったので、A2: 接頭名、A3: デフォ...
&ref(StrResource_03.ods);
ダイアログエディタに慣れていない人でも翻訳操作が比較的容...
End:
*ローカライズ [#lfc18ab9]
拡張機能のローカライズ関連について取り上げます。テンプレ...
ここでは主に Basic などのコードやダイアログなどを利用した...
#contents
**Addons.xcu [#xcf39ff0]
得にメニューやツールバーへの統合目的の Addons.xcu の設定...
多言語にする必要があるのはメニューやツールバーボタンの Ti...
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en-US">~English</value>
<value xml:lang="ja">~日本語</value>
</prop>
***ツールバー名 [#p75bf574]
Addons.xcu ファイルで追加したツールバー名のローカライズは...
**文字列 [#f17a7483]
文字列はコード中に埋め込まれるとローカライズできなくなっ...
コンフィグレーションは /share/registry 以下で見られる xml...
多くの場合簡単な文字列 (メニューや警告文など) なので既存...
利用するのは OOo のメニューなどの文字列を保存してある /or...
スキーマファイル xcs はこんな感じにします。oor:package="m...
#code(xcu){{
<?xml version="1.0"?>
<oor:component-schema xmlns:oor="http://openoffice.org/20...
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
oor:name="IACommands"
oor:package="mytools.basicide"
xml:lang="en-US">
<import oor:component="org.openoffice.Office.UI.Commands"/>
<uses oor:component="org.openoffice.Office.UI.Commands"/>
<templates/>
<component>
<group oor:name="UserInterface">
<set oor:name="Commands"
oor:node-type="LabelType"
oor:component="org.openoffice.Office.UI.Commands">
</set>
</group>
</component>
</oor:component-schema>
}}
これに対応した実際のデータ xcu ファイルは次のようになりま...
#code(xcu){{
<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data xmlns:oor="http://openoffice.org/2001...
xmlns:xs="http://www.w3.org/2001/XMLSchema"
oor:name="IACommands"
oor:package="mytools.basicide">
<node oor:name="UserInterface">
<node oor:name="Commands">
<node oor:name="mytools.basicide:Insert.Date" oor:op=...
<prop oor:name="Label">
<value xml:lang="en">~Date</value>
<value xml:lang="ja">日付(~D)</value>
</prop>
</node>
<node oor:name="mytools.basicide:Insert.Time" oor:op=...
<prop oor:name="Label">
<value xml:lang="en">~Time</value>
<value xml:lang="ja">時間(~T)</value>
</prop>
</node>
</node>
</node>
</oor:component-data>
}}
Commands ノード内に name 属性を個別に指定した子ノードを作...
これらの値をコード内で利用するために取得するのは com.sun....
**ダイアログ [#z4ada51e]
ダイアログのローカライズは OOo 2.2 から利用できるようにな...
ダイアログエディタで表示メニューから言語ツールバーを表示...
あとは言語を切り替えて各言語に対応したラベルなどを入力し...
ダイアログは OOo のロケールに対応した言語で表示されます。...
ダイアログに言語を追加した後で注意が必要です。
空のテキストボックスを配置してあるダイアログでは、表示時...
**ヘルプ [#m71ef34c]
言語ごとのファイルを言語名のディレクトリに入れておきます...
ヘルプは言語のものが見つからない時には en が利用されるこ...
**リソース [#m3ea85f0]
OpenOffice.org の UI で利用されている文字列は多くの場合 /...
(com.sun.star.resource.VclStringResourceLoader は利用せず...
とはいえ、リソース文字列を取得する際のリソース ID がバー...
***リソース ID の調べ方 [#qec3a09c]
バイナリエディタで調べる以外の方法が思いついたら書きます。
**メニューコマンド [#g27f92bd]
メニューの項目はメニューのコマンド URL に対して各言語の文...
/org.openoffice.Office.UI.XXXCommands 以下にあります。
OOo のインストールディレクトリの shared/registry/res/LANG...
**その他 [#v1103b75]
その他、ライセンス表示、拡張機能マネージャでの表示名、更...
**現在の言語を調べる [#vd1eea56]
コンフィグレーション中に現在の言語を保持している項目があ...
/org.openoffice.Setup/L10N の ooLocale プロパティを参照し...
**ツールチップと拡張ヘルプ [#i47ba946]
ヒントや詳細ヒント。
ダイアログのヒントはヘルプテキストに入力したものが言語に...
一方、Shift + F1 キーを押したときの詳細ヒントは拡張機能ヘ...
**StringResourceWithLocation (文字列2)[#x59832a2]
StringResourceWithLocation サービスを利用する。これは、他...
この方法では拡張機能 ID が必要です。
[[BookmarksMenu>OOobbs2/83]] 拡張機能で試してみます。この...
そして、パッケージ内の mytools_BookmarksMenu ディレクトリ...
-DialogStrings_en_US.default
-DialogStrings_en_US.properties
-DialogStrings_fr.properties
-DialogStrings_ja_JP.properties
まず、[[PackageInformationProvider>OOoBasic/Generic/Exten...
StringResourceWithLocation サービスをインスタンス化して利...
initialize に与える配列の引数はそれぞれ次のものです。
-リソースファイルのあるディレクトリ URL
-読み込み専用で開くかどうか
-ロケール
-リソースファイル名。言語、国名を省いた部分で指定。
-ハンドラ。不要なので Null
文字列の ID を調べてきて、resolveString メソッドで ID を...
#code(ob){{
sub StrResourceLocation_1
oContext = GetDefaultContext()
sPkgId = "mytools.BookmarksMenu"
sPIPName = "/singletons/com.sun.star.deployment.Packag...
If oContext.hasByName( sPIPName ) Then ' 2.3
oPkgIP = oContext.getByName( sPIPName )
' パッケージのディレクトリ名を取得
sPkgLocation = oPkgIP.getPackageLocation( sPkgId )
' DialogStrings ファイルのあるディレクトリ名
sDlgLocation = sPkgLocation & "/mytools_BookmarksMen...
' サービスをインスタンス化して初期化します
oStrRes = CreateUnoService( _
"com.sun.star.resource.StringResourceWithLocation")
oStrRes.initialize( Array( _
sDlgLocation, True, _
CreateLocale("ja","JP"), "DialogStrings", "", Nu...
msgbox oStrRes.resolveString( "1.Dialog1.Title" )
'mri oStrRes
End If
end sub
Function CreateLocale( sLang As String, sCountry As Str...
aLocLocale = CreateUnoStruct("com.sun.star.lang.Locale")
aLocLocale.Language = sLang
aLocLocale.Country = sCountry
CreateLocale = aLocLocale
End Function
}}
リソースファイル内では文字列は次のような形式で保存されて...
ID=MOJIRETSU
また、リソースファイル内ではマルチバイト文字は \uXXXX の...
Py-UNO から StringResourceWithLocation サービスを利用する...
initialize するときに最後の引数に None を与えると失敗する...
#code(python){{
from com.sun.star.task import XInteractionHandler
class dummy_handler(unohelper.Base,XInteractionHandler):
""" dummy XInteractionHanlder interface for
the StringResouceWithLocation """
def __init__(self):
pass
def handle(self,request):
pass
# ...
# ...
str_res = ctx.ServiceManager.createInstanceWithContext(
"com.sun.star.resource.StringResourceWithLocation", ctx )
str_res.initialize(
(resource_url,True,locale,"ClipboardManager","",dummy_h...
}}
**文字列3 [#tf1972d3]
ダイアログのリソースファイルを利用すると不要なものも混じ...
というわけでマクロを書いてみました。表計算ドキュメント上...
-A1: コメント
-A2: リソースファイル名の接頭語
-A3: デフォルトロケール
-列A: リソース ID
-行4: ロケール文字列
-列B 以降: 言語に対応したリソース文字列
ドキュメント中の Standard - Module1 - Main を実行するとド...
また、言語と ID の増減は自動で検出します (セルカーソルの ...
既存のダイアログなどのリソースファイルを読み込めるように...
+A2: 接頭名、A3: デフォルトロケールを入力
+Module2 の ImportMain を実行
するとシートに ID とロケールごとの文字列を読み込みます。
コメントは読み込み不可 (書き込みのみ) なので読み込まれま...
行の移動などがやりにくかったので、A2: 接頭名、A3: デフォ...
&ref(StrResource_03.ods);
ダイアログエディタに慣れていない人でも翻訳操作が比較的容...
Page: