2017-07-26 6 views
1

i18nラベルの問題に直面しています。特定の辞書のi18nラベル全体を取得できますか

私のアプリケーションは、Granite.I18n.get( '')関数を使用してjsフロントエンドで少数のi18nラベルを読み取ります。辞書全体は、 '/etc/clientlibs/foundation/shared/source/init.js'に記載されているように、 '/libs/cq/i18n/dict.{+locale}.json'としてダウンロードされます。

これで、en辞書はカスタムラベルのみを返し、小さなサイズになりました。 しかしfrのような他の言語では、辞書ファイルはすべての/ libs辞書の集合体であり、非常に巨大です。私は他のいくつかのサイトでもこれに気づいた。 1.1キロバイト

fr dictionary - -

tennantco.com

en dictionary〜118キロバイト

fr dictionary

- 1.4メガバイト

Timewarnercable.com

en dictionary 1.2メガバイト

サーモ

en dictionary〜3キロバイト

fr dictionary〜695キロバイト

これで私たちの痛みのポイントは、CDNの増加で、この重いファイルをキャッシュし、への道を見つけようとするコストでありますCDNコストを削減する。

私はエンラベルが鍵そのものであると理解しています。しかし、ExportServletは、レンダリングカスタム辞書をenに対してのみフィルタリングできます。私たちの辞書は/ libsのotb辞書に似ています。それではExportServletがen exportのotbラベルをどう扱うのでしょうか?

このバグは、すべてのCMS製品に共通していますか、またはAdobe固有のものですか?また、他の言語のカスタム辞書のみを取得するには、解決策または回避策が必要です。

答えて

1

私はこのアドバイスでもAdobeのチケットから多くの助けを得ることができなかったので、私はカスタム実装を書いてしまった。

  • OTB辞書JSONは私が
  • 修正/etc/clientlibs/granite/utils/source/I18n.jsをResourceBundleExportServletするために同様のJSONを準備して返すでしょカスタムスリングサーブレットを作成しResourceBundleExportServlet
  • によってレンダリングされますotbサーブレットではなくカスタムサーブレットを呼び出します。
  • カスタムサーブレットは、すべての辞書ではなく、特定のデータ辞書のみを返すようにコーディングされています。

これが私の問題を解決しました。適切な解決策としては納得できませんが。これをきれいにする方法が必要です。

+0

私はパスが '/ libs/cq/i18n'だと思います – Akash

1

英語のエントリはキーであり、翻訳ではないため、英語の辞書は小さいです。フランス語(および他の言語)は、キーが英語でさらに翻訳されているため、大きくなっています。また、多くのキーは、キーがデフォルトの翻訳として使用されるため、翻訳された言語でのみ使用できます。

フランス語の場合、Granite.I18n.get('Hello world!')を使用すると、フランス語の翻訳が返されます。見つからない場合は、単純に 'Hello World'が返されます。言語コンテキストが英語の場合は翻訳が必要ありません。

クライアント側で評価されているJSの性質上、i18n実装はコンテキストを意識していないため、望ましくない翻訳を除外できないため、製品自体のOOTB変換を含む完全な辞書をダウンロードするように設計されています。

便利ですが、これは残念ながらGranite.I18n.get('')を使用することの制限と副作用です。

可能な回避策

  • Granite.I18n。*サーバ側の国際化LIBSを使用して、サーバー上でのみ必要な翻訳をレンダリングし、部分的にHTMLとしてすることで回避できます。このは動作しない可能性があります。 SPA。
  • Angular(x)のようなSPAフレームワークを使用している場合は、i18nの工場初期化をサポートし、フィルタリングされたi18nをダウンロードするカスタムサーブレットレスポンスにフックすることができます。これは潜在的に多くの作業であり、大きすぎる用語が翻訳され、辞書が大きくなると、サイズは依然として問題になります。
  • 辞書を圧縮し、最小化し、キャッシュします。 Apacheモジュールまたは出力フィルタを使用して実行できます。これは、トラフィックのサイズと負荷を軽減しますが、翻訳が増えるにつれて辞書全体のサイズが小さくなることは保証されません。

一般に、ページは必要なものだけをレンダリングする必要があります。 JSを使用して翻訳を遅らせると辞書をダウンロードし、Granite.i18nは最適なダウンロード体験を提供しません。

+0

ありがとうございます。私はその質問を編集した。これを解決するには解決策または回避策が必要です。私はこれが製品バグだと理解していますが、これを解決する方法はありますか? –

関連する問題