ASP.NETで画像をローカライズする
-
11-07-2019 - |
質問
数年前、グラフィックデザイナーがウェブサイトを刷新しました。彼の結果は素晴らしく見えましたが、残念ながら彼はWebブラウザによってサポートされていない新しいフォントを導入しました。
最初は" What!?!" ...のようでした。コンテンツのほとんどが動的で、すべての画像を事前に作成する本当の方法がなかったからです。複数の言語の問題もありました(スペイン語が地平線上にあることがわかっていたため)。
とにかく、GDI +を介して画像を自動生成し、必要に応じてプログラムでキャッシュするためのクラスを作成することにしました。これで最初の問題のほとんどが解決しました。ただし、負荷が劇的に増加したため、UIサーバーのドレインが発生しました。
次は質問です...動的なGDI +画像のほとんどを標準のWebブラウザフォントに置き換えたいと思っています。レンダリングされたGDI +画像の一部を保持してresxファイルに入れることを考えていますが、asp:Labelsを使用してそれらのほとんどをTahomaまたはArialフォントに置き換える予定です。
より適切なローカライズされた画像ソリューションであることがわかりましたか?
- resxへの画像の埋め込み
- 画像URLをresxに追加するだけ
- その他の解決策
主な関心事は、UIサーバーでの処理を制限することです。その場合、resxに画像のURLを追加することは、resxに画像を実際に埋め込むよりも良い解決策でしょうか?
解決
各画像を1回だけ生成し、それをハードディスクに保存する必要があります。サイトの負荷によって、必要な処理量が増加することはありません。そうは言っても、あなたがすべきでないことに画像を使用しているように思えます。生成するのに対応できないほど多くの異なる画像がある場合は、画像であってはならないもののために派手な画像を放棄し、ストレートテキストに戻りましょう。ユーザーが指定されたフォントをインストールしていない場合は、同様のフォントにフォールバックするだけです。 CSSはこれをうまくサポートしています。
他のヒント
私の回答を見るこちら
これは手動で、または何らかの自動(CMS)システムを使用して実行できます。
基本的な方法は、言語固有のディレクトリ構造で画像をキャッシュし、追加のディレクトリレイヤーを効果的に削除するHTTPハンドラーを記述することです。例:
/images/
/en/
header1.gif
/es/
header1.gif
マークアップまたはCSSでは、/ images / header1.gifを参照するだけです。 HTTPハンドラーは、セッション(言語がユーザー固有の場合)またはconfig(サイト固有の場合)を使用して、イメージを提供するディレクトリを選択します。
これにより、コードとコンテンツの間にきれいな行が提供され、クライアント側のキャッシュが可能になります。 Resxは小さな文字列には最適ですが、画像やより大きなコンテンツにはこのようなシステムが非常に好きです。特に、通常は画像を簡単に切り替えることができるウェブ上で。
私は数年前に同じ問題を抱えていましたが、私たちのインターフェイスチームはSIFrを指摘しました。 http://wiki.novemberborn.net/sifr/
フォントをFlashムービーに埋め込み、SIFr JavaScriptを使用してテキストをフォントに動的に変換します。クライアント側であるため、サーバー側への影響はありません。
ユーザーにFlashまたはJavaScriptがインストールされていない場合、ユーザーはWebに最も近いフォントを取得します。
追加のボーナスとして:コンテンツはまだテキストであるため、Googleはコンテンツを検索してインデックスを作成できるため、SEOが大幅に最適化されます。
キャッシュのため、resxには画像のURLのみを追加したいです。キャッシュは、生成されたコンテンツよりも静的コンテンツ(i-eプレーンファイル)の方がはるかに優れています。
画像にテキストを入れることには非常に慎重になりますが、適切なフォントファミリフォールバックを備えたCSSは、おそらくアクセシビリティと適切なMVC根拠に対する正しい応答です。
実際に生成が必要な場合、 Kiblee と JayArr が優れたソリューションの概要を説明していると思います