home
« 前 目次

1.実体参照に変更

アドオンを他の言語でも使えるようにすることをローカライズ(地域化)と言います。まず、翻訳したいXULファイル中のテキストを実体参照("&テキスト名;"の形)に置き換えるとともに、ローカライズの宣言を行います。

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<!DOCTYPE window SYSTEM "chrome://helloworld/locale/helloworld.dtd">

<overlay id="helloworld" 
	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

	<!-- ステータスバーに追加 -->
	<statusbar id="status-bar">
		<statusbarpanel id="my-panel" label="&helloworld;"/>
	</statusbar>

	<!-- ツールメニューの追加 -->
	<menupopup id="menu_ToolsPopup">
		<menuitem insertafter="devToolsSeparator" label="&set;"
			accesskey="S" oncommand="set();" />
	</menupopup>

	<!-- 右クリックメニューの追加 -->
	<popup id="contentAreaContextMenu">
		<menuitem id="hw_contextMenu" label="&get;" 
			oncommand="get();"/>
	</popup>

	<!-- javascriptファイルのインポート -->
	<script type="application/x-javascript" src="helloworld.js" />	
</overlay>

2.実体宣言

次に実体宣言をDTDファイル(上のコードの太字部分で宣言されているファイル)に書きます。localeフォルダ(翻訳情報を記述するフォルダ)にen-US(アメリカ英語)フォルダとja(日本語)フォルダを追加し、「helloworld.dtd」ファイルを作って、以下の宣言を行います。

locale/en-US/helloworld.dtd
<!ENTITY helloworld "Hello, World!">
<!ENTITY set "Set">
<!ENTITY get "Get">
locale/ja/helloworld.dtd
<!ENTITY helloworld "Hellor, World!">
<!ENTITY set "設定">
<!ENTITY get "取得">
(<!ENTITY 実体名 テキスト>の形で書く)

3.chrome.manifest宣言

chrome.manifestファイルにlocaleフォルダの場所を教えます。

locale	helloworld	en-US	locale/en-US/
locale	helloworld	ja	locale/ja/

これにより、「chrome://helloworld/locale/helloworld.dtd」は日本語環境では「locale/ja/helloworld.dtd」を、英語環境では「locale/en-US/helloworld.dtd」を表します。

詳細な説明:
XUL Tutorial:Localization

4.発展

JavaScriptファイル内のメッセージをローカライズする場合など、さらに複雑な例についてはFirefox 3ではじめる拡張機能開発:第5回 localeパッケージによるローカライズを見てください。

« 前 目次
inserted by FC2 system