3

ember-skeletonを使用し始めたEmberアプリケーションをビルドしています(つまり、ビルドツールチェーンとしてRake Pipelineを使用しています)。私はember-i18nを使用していますが、CLDR.pluralForm関数がないことについて常に警告が表示されます。

ember-i18nが使用するCLDRの複数形app/vendor/をディレクトリに追加し、そのファイルをに追加しましたAssetfileapp.jsコードがember-i18nコードの前に含まれていることを確認しました。requiremain.jsにも適切な行を追加しました。

require('plurals');
require('ember-i18n');

それでも、ember-i18nは警告を発しています。これはそれが起こっているコードです:

if (typeof CLDR !== "undefined" && CLDR !== null) {
  pluralForm = CLDR.pluralForm;
}

if (pluralForm == null) {
  Ember.Logger.warn("CLDR.pluralForm not found. Em.I18n will not support count-based inflection.");
}

アプリでCLDRが定義されていることを確認するにはどうすればよいですか?

4

1 に答える 1

3

他の誰も持っていないので、自分で問題をデバッグしている場合に確認する可能性のあるいくつかのことを提案します。

サイトに表示されるメッセージがフィドラーと同じ場合は、ファイルが順不同でロードされていることが原因です。「i18n」プラグインの前に、かなりの「複数」をロードする必要があります。リンクされたファイルの順序を反転すると機能します (エラーの例をフォークしました)。

debugger;各ファイルにいくつかのステートメントをスローして、実際にブラウザーに最初に読み込まれるステートメントを確認することで、自分が間違っていることを検証しようとします。

あなたのために、require('plurals')requirejsを使用していると仮定します(githubはメンテナンスのためにダウンしているため、現時点ではember-skeletonを実際に調べることはできません...したがって、これは将来編集される可能性があります)。この主張が正しい場合、'plurals' が 'i18n' の依存関係であることを宣言する必要があります。

「依存関係を表現しないと、RequireJS がスクリプトを非同期にロードし、速度を落とすため、ロード エラーが発生する可能性があります。」-RequireJS API

これは、おそらく 2 つの呼び出しを 1 つにラップしdefineて、「シム」を追加または作成することになることを意味します。これら (およびその他の) の例は、RequireJSサイトにあります。

これが役に立たない場合は申し訳ありませんが、実際に壊れていることはありません。問題をデバッグするのは難しいです。

編集: ember-skeleton を見ると、requireJS が表示されません。私は rake を使用したことがない (最終的に nodeJS でパイプラインを作成することになった) ので、実際require "blaw"に rake でファイルを連結しようとしていたのか、それとも実際に両方を使用しようとしていたのかよくわかりません....だから今、私はこれを仮定します答えはあまり役に立たないかもしれません。

于 2012-08-16T06:13:50.063 に答える