2016-10-15 13 views
3

jquery/globalizeのウェブアプリケーションでは、CLDR 29のデータをJSON formatに問題なく使用しています。ちょうど最近、UnicodeはCLDR 30をリリースしました(そして少し後に、バージョン30.0.1といくつかの修正が加えられました)。バグ狩り:CLDR 30 JSONデータにcurrencySpacingの情報がありません

CLDR 30(.0.1)データにアップグレードすると、多くの文化でnumbers.jsonの「currencySpacing」情報がなくなるため、クライアント側の通貨フォーマットテストに失敗しています。例えば、培養AR-AEと仮定して、グローバル化ライブラリは...パスにCLDRデータをロードしようとし/ currencySpacing/beforeCurrency

/メイン/ AR-AE /数字/ currencyFormats-numberSystemアラブ

...この(および他の多くの)文化の最新のCLDR 30 numbers.jsonデータには存在しません。

この問題の原因を調べるためにスタックをトラバースしようとしました。私たちはDTDを使い始めました。 DTD for CLDR 30(CLDR 29のそれと一緒に)線を含む...

<!ELEMENT currencyFormats (alias | (default*, currencySpacing*, currencyFormatLength*, unitPattern*, special*)) > 

... currencySpacingは任意の要素であることを意味します。つまり、CLDR 30 release notesまたはDeltaには、この情報が多数の文化のために変更されたことが示唆されるものは見つかりませんでした。

currencySpacing要素は、CLDR 29とCLDR 30の両方のmain/root.xmlでのみ使用されていることがわかります。つまり、この点でXMLでは明らかに大きな変更はありません。

これは、XMLデータからJSONデータを生成するために使用されるtoolの問題であるかどうか疑問に思っています。このツールはldml2jsonと呼ばれ、cldr-jsonプロジェクトでも使用されています。 cldr-jsonプロジェクトのバグを排除するために、私たちは自分自身でツールを構築し、自分自身でJSONデータを生成しました。この生成されたデータは、numbers.jsonファイルの "currencySpacing"情報も欠落していました。だから、cldr-jsonプロジェクトの問題ではないようです。

我々は正しく理解していれば、これは問題がいずれかであることを意味します

  • ldml2jsonツールは/グローバル化バグ
  • jqueryのは、この情報は常に

が存在すると仮定することは間違っていました後者が真であれば、これはjquery/globalizeバグとして提起されるべきだと思います。前者を調べると、恐らくソースからデバッグする必要があります。いずれかの時間に投資する前に、私たちは質問したかった:誰かがこの問題を見ているのですか?私たちの希望は、CLDR + JSON + Globalizeスタックでもう少し経験豊富な人がいるということです。これは、この変更によって引き起こされた

答えて

1

:この変更前http://unicode.org/cldr/trac/changeset/12636/trunk/common/main/root.xml

、アラブ数システムのルートロケールのcurrencySpacing情報は、他のすべてのロケールに継承されました。今はもうそこにはない。

currencySpacingがどのように処理されるべきか分かりませんが、javaCの両方のドキュメントには、データがnullである可能性があることが記載されています。 この場合、どちらもハードコードされたデフォルトを使用しています。http://bugs.icu-project.org/trac/browser/icu4j/trunk/main/classes/core/src/com/ibm/icu/impl/CurrencyData.java#L86

これは多分グローバル化のバグです。

更新:Bug reportおよびpull request

+0

はそれがより多くのコンテキストのためのGitHubの問題で、このSO質問を参照する価値があるかもしれません。すごい仕事! – sammy34

+1

私はそれを行いました。また、http://unicode.org/cldr/trac/ticket/9040#comment:37 – user1431317

1

最近のCLDR 30.0.2パッチでこのバグが修正されたため、Globalizeに必要な更新はありません。ところで

、より深い調査のためUTS#35仕様に従ってください:) http://www.unicode.org/reports/tr35/tr35-numbers.html#Currencies

+1

についても尋ねました.30.0.2のパッチがこのバグを修正したことを確認してください。以前失敗したテストはもう一度やり直しています。 – sammy34

関連する問題