Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 08:12, 6 June 2008.

Web Runtime Widgetをローカライズする方法

From Forum Nokia Wiki


原文(英語): How to localise a WRT widget

Contents

目的

WRT APIリファレンスには、ローカリゼーションに関する説明があります。本記事は、簡単なアプリケーションをローカライズするコード例を示し、ステップバイステップで進めていきます。APIリファレンス中のコンテンツはここには一切含まれていないので、もしまだ読んでいない場合、以下に進む前に、APIリファレンスの「ローカリゼーション」節を読んでおいてください。

本Widgetは、JavaScriptコードにおけるローカリゼーション文字列を使用する際、若干直接的な手法を使用します(関数コールに代わる変数)。しかし、本質の主な部分は同じです。

ステップ1. ローカライズされていないコード

ここでは、WRT DevKit(ベータ版)における、簡単なHello Worldの例を使用します。

メインHTML

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="HelloWorld.js"></script>
    </head>
        <body onload="init()">
    </body>
</html>

JavaScriptコード

文字列を"Hello World"に結合し表示する関数:

...
function helloButtonClicked(event) {
    var name = nameField.getText();
    if (name.length == "") {
        uiManager.showNotification(3000, "warning", "Please enter your name!");
    } else {
        uiManager.showNotification(3000, "info", "Hello " + name + "!");
    }
}
...

Manifestファイル

info.plistファイルにおけるNameキーは、ローカライズすることができます。しかし、変更は自動的に行われ、info.plistファイル自体の編集は不要です。そこには、デフォルト言語の文字列を記載します。ここでは「英語的な」言い回しを使います。

...
<plist version="1.0">
    <dict>
        <key>DisplayName</key>
        <string>Hello World</string>
        ...


ステップ2. ローカライズ用のリソースフォルダを作成する

Widgetのルートフォルダ直下に、各言語毎のリソースフォルダを作成します。フォルダ名は以下のようになります: <ISO 639-1>.lproj

ISO 639-2のサイトにて、ISO 639-1のコードを確認できます。

ここでは、英語、フィンランド語、デンマーク語でローカライズされたコンテンツを用意します。フィンランド語用にfi.lproj, デンマーク語用にda.lprojの各フォルダを作成する必要があります。ここでは、英語用のフォルダを作成する必要はありません。英語をデフォルト言語として使用するためです。

ローカライズされたファイルは、各フォルダに入れます。これらは全て、Widgetのルートフォルダにあるデフォルトファイルと同じファイル名を使用します。

ステップ3. 言語を意識したコードを作成する

言語を意識するための主要な部分は、フレームワーク上では既に済んでいます。Widgetは言語固有の場所から、特定のファイルを取得する方法を知っています。多少ソースコードの変更が必要になります。

メインHTML

この部分はよくできています。下のHTMLコードは国際化の慣習に従っていて、文字列コンテンツが一切ありません。必要な追加は1点のみです。

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="locStrings.js" /> //<- Added
        <script type="text/javascript" src="HelloWorld.js" />
    </head>
            <body onload="init()">
    </body>
</html>

JavaScript

JavaScriptファイルには、若干修正が必要になります。もちろん、最初から国際化を意識したコード設計をして作っていれば、これは必要ないことです。しかしここでは、最初に何らかの理由でそうしなかったと仮定します。ここで行うことは、全ての表示文字列を変数名で置き換えることです。明確に区別できる名前を使用することは、ローカリゼーションを容易にするので良いことです。ローカライズを別の人が担当する場合は、特にそうです。ここでは、接頭辞としてqtn_を使用しています。文字列を識別する方法として、Symbianのローカリゼーションではお馴染みです。

...
function helloButtonClicked(event) {
    var name = nameField.getText();
    if (name.length == "") {
        uiManager.showNotification(3000, "warning", qtn_note_warning_text);
    } else {
        uiManager.showNotification(3000, "info", 
          qtn_note_hello_first_part + name + qtn_note_hello_last_part);
    }
}
...

ステップ4. ローカライズするテキストファイルを作成する

ソース言語

まず、ソースファイルが必要です。ローカライズするのを容易にします。文字列が使われる場所を説明するため、多少のコメントが必要になることを意味します。このファイルはWidgetのルートフォルダにファイル名locStrings.jsとして保存され、そしてまた、これはローカライズのために送ることができます。

//Default (English) texts. Don't modify this file. 
//When localising, you must put keep the variable definition intact (var qtn_xxx =)
//You must also enclose the localised text in double quotes and close with a semicolon. 
//If the language uses extended characters the localised file must be saved as UTF-8.
...
//Text to be concatenated as first_part + Name + last_part
//If the name is given as "Ruikku" the English example will be rendered as
//"Hello Ruikku!". Please remember to add spaces, if they are needed.
var qtn_note_hello_first_part = "Hello ";
var qtn_note_hello_last_part = "!"
...

ターゲット言語

フィンランド語のローカライズでは、テキストをファイル名fi.lproj/locStrings.jsとして保存します。コメント行は、もはやいらないので削除されます。また、英語と文字列が全く異なることに注意する必要があります。フィンランド語では"Hi <name>, howya?"と表記します。ここに、ローカライズ担当者に幾ばくかの決定をゆだねられます。

//Finnish display texts for the Hello World Widget.
//Localised by Ruikku.
...
var qtn_note_hello_first_part = "Moi ";
var qtn_note_hello_last_part = ", mita kuuluu?"
...

追記

多言語化を考慮する

ローカリゼーションは大変注意の必要な作業で、コーディング設計の時に多言語化を意識していなかった場合、それに後でローカリゼーションを追加するのはほぼ不可能です。設計終了時にローカリゼーションの追加を試みるのではなく、コードを作成する時に常にそれについて考えるようにします。ある段階の各部分において、端末画面に表示するものとその方法が影響を及ぼす場合、それを多言語化する必要があります。近日中に、別途Widgetの多言語化についての記事が出てくるでしょう。

また、生来数ヶ国語に通じている人はあまり多くなく、実生活における現在の機械翻訳サービスは、読みやすい文章を作成してくれません。よって多くの場合、文章のローカライズを行うのは別の人です。すなわち、ソースの文章、文字列の使用意図、文章が表すスペースについての情報など、何らかのコメントをつけて彼らの作業を容易にするのは良い考えです。

Related Discussions
Thread Thread Starter Forum Replies Last Post
WRT with Paypal hp3 WRT Widget Development 3 2008-04-25 15:06
runtime error in s60 sdk, 2nd edition, fp3 cstommijx Mobile Java Tools & SDKs 4 2006-10-27 04:00
problem with N80 abolfoooud Mobile Java General 6 2006-06-16 15:25
DRM - separate delivery, getting 403 Forbidden biskero Digital Rights Management & Content Downloading 6 2006-09-26 12:11
How to Break line at runtime int Text Editor? omerkarim Symbian User Interface 4 2007-11-14 12:19
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX