テキスト文字列のローカライズ
作成対象:
- 開発者
- ユーザー
テキスト文字列のローカリゼーションを使用すると、画像カタログに、同じ文字列値に対してロケール固有の複数の表現を含めることができます。
サーバーは、locale=
で指定されたロケールに一致する表現をクライアントに返します。これにより、クライアント側でのローカリゼーションが回避され、IS テキスト要求で適切な locale=
値を送信するだけでロケールを切り替えることができます。
範囲
テキスト文字列のローカリゼーションは、次のカタログフィールドにローカリゼーショントークン ^loc= *
locId*^
を含むすべての文字列要素に適用されます。
カタログフィールド | フィールドの文字列要素 |
---|---|
catalog::ImageSet |
翻訳可能な文字列を含むすべてのサブ要素(区切り文字「,」「;」「:」やフィールドの開始/終了の任意の組み合わせで区切られる)。 ローカライズ可能なフィールドの先頭にある 0xrggbb color 値は、ローカライズから除外され、変更なしで渡されます。 |
catalog::Map | coords= および shape= 属性の値を除く、一重引用符または二重引用符で囲まれた属性値。 |
catalog::Targets | 任意の ターゲットの値。*.label と target。*.userdata プロパティ。 |
catalog::UserData | プロパティの値。 |
文字列構文
画像カタログ内のローカライゼーションが有効な string
要素は、1 つ以上のローカライズされた文字列で構成され、各文字列の前にはローカライゼーショントークンが付きます。
stringElement | [ defaultString ]*{ localizationToken localizedString } |
localizationToken | ^loc= locStr ^ |
locId | この localizationToken に続く localizedString の内部ロケール ID す。 |
localizedString | ローカライズされた文字列。 |
defaultString | 不明なロケールに使用する文字列。 |
locId
は ASCII である必要があり、「^」を含めることはできません。
「^」は、HTTP エンコーディングの有無に関わらず、部分文字列のどこにでも存在する可能性があります。 サーバーは、localizationToken
^loc=locId^
パターン全体を照合して、サブ文字列を区切ります。
stringElements
には 1 つ以上の localizationToken
が含まれていないので、ローカライズの対象にはなりません。
翻訳マップ
attribute::LocaleStrMap
は、クライアントに返す localizedStrings
を決定するためにサーバーが使用するルールを定義します。 これは入力 locales
のリスト(locale=
で指定された値に一致)で構成され、それぞれに内部ロケール ID (locId
)が 0 個以上あります。 以下に例を挙げます。
attribute::LocaleStrMap= en,E|nl,N|de,D|,
空の locId
値は、defaultString
が返される必要があることを示します(使用可能な場合)。
詳しくは、attribute::LocaleStrMap
の説明を参照してください。
翻訳プロセス
上記の翻訳マップの例とリクエスト /is/image/myCat/myItem?req=&locale=nl
を指定すると、サーバーはまず、ロケールマップで「nl
」を探します。 一致するエントリ nl,N
は、stringElement
ごとに、^loc=N^
でマークされた localizedString
を返す必要があることを示しています。 この localizationToken
が stringElement
に存在しない場合は、空の値が返されます。
例えば、myCat/myItem
の catalog::UserData
に次の改行が含まれているとします(わかりやすくするために挿入されます)。
val1=111?? str1=Default1^loc=N^Dutch1^loc=D^German1?? val2=value2?? str2=^loc=E^English2^loc=N^Dutch2^loc=D^German2?? str3=Default3^loc=N^Dutch3^loc=D^German3
サーバーは、サンプルのリクエストに応答して次を返します。
val1=111 str1=Dutch1 val2=value2 str2=Dutch2 str3=Dutch3
不明なロケール
上記の例では、attribute::LocaleStrMap
には、空の locale
値を持つエントリがあります。 サーバーはこのエントリを使用して、翻訳マップで明示的に指定されていないすべての locale=
値を処理します。
翻訳マップの例では、このような場合に defaultString
が返されるように指定しています(使用可能な場合)。 したがって、この翻訳マップがリクエスト /is/image/myCat/myItem?req=&locale=ja
ージに適用される場合は、次のように返されます。
val1=111 str1=Default1 val2=value2 str2= str3=Default3
例
言語ファミリ
複数の locId
値を翻訳マップの各 locale
に関連付けることができます。 その理由は、選択した stringElements
ーザーに対して国固有または地域固有のバリエーション(例:米国英語と英国英語)をサポートし、共通の基本ロケール(例:国際英語)を使用してほとんどのコンテンツを処理できるためです。
例えば、米国固有の英語(*
locId* EUS
)と英国固有の英語(*
locId* EUK
)のサポートが追加され、時折の代替スペルがサポートされます。 EUK または EUS が存在しない場合は、E にフォールバックします。同様に、オーストリア固有のドイツ語版(DAT
)を必要に応じて使用できるようにし、その際に一般的なドイツ語 localizedStrings
(D
でマーク)を常に返すことができます。
attribute::LocaleStrMap
は次のようになります。
en,E|en_us,EUS,E|en_uk,EUK,E|de,D|de_at,DAT,D|de_de,D
次の表に、代表的な stringElement
と locale
の組み合わせの出力を示します。
stringElement | locale | 出力文字列 |
---|---|---|
^loc=E^English^loc=D^German |
en, en_us, en_uk de, de_at, de_de その他すべて |
英語 ドイツ語 - |
^loc=E^English^loc=UKE^UK-English^loc=D^German^loc=DAT^オーストリア |
en, en_us en_uk de, de_de de_at その他すべて |
英語 英国 – 英語 ドイツ語 オーストリア - |
^ loc=en^English^loc=USE^US-English^loc=D^German^loc=DDE^Deutsch この例では、 locIdDDE は attribute::LocaleStrMap に存在 ないので、この locId に関連付けられた部分文字列は返されません。 |
en, en_uk en_us de, de_at, de_de その他すべて |
英語 米国 – 英語 ドイツ語 - |