2

(スケーラブルな) Web アプリケーションの静的テキストの翻訳メカニズム/戦略を設計する必要があります。これは、非同期 jQuery からロードされた動的データを使用して、ASP.NET 環境の HTML、JQuery/JavaScript に基づいています (ただし、サーバー側のコントロールはありません)。 http ハンドラへの呼び出し。

Globalizeを使用して数値、日付などのローカライズに成功しましたが、テキストの翻訳を整理する必要があります。

翻訳されたテキストはデータベースに適切に保存されます (別のアプリケーションのネイティブ パートナーによって維持されます)。したがって、 jQuery Localization / jQuery Localize / jQuery-i18n-propertiesアプローチのようなファイル ベースのResX同等物を使用したくありません。データベースから翻訳を取得するために、ASP.NET コントロール (私は持っていません) をローカライズするリソース プロバイダー モデルを拡張するのと同様のソリューションです。

クライアント側のアプローチ: i18next の動的 (非静的) リソース ルートに出くわしたばかりで、http ハンドラー (およびJStorage / LawnChairでのキャッシュ) からそのようなものを返して、プレースホルダー/タグを埋めることができるかどうかを調べようとしています。 jQuery 関数を使用するか、 Mustacheまたはhogan.jsテンプレートで同様のアプローチを取ります。

サーバー側のアプローチ: HTML を提供する前に変更します。たとえば、この回答では、 HttpResponse.Filterを使用して応答サーバー側を変更することを提案しています (この記事を参照)。バッファがチャンク化されているため、ここで提案されているようにストリーム全体をキャプチャする必要があります。これはパフォーマンスの低下につながりますが、ページの各 (言語) バージョンをキャッシュすることでこれを軽減できることを願っています。

または、このインスタンスで複数のバージョンのページをキャッシュする方法がよくわかりませんが、このようにHTTP ハンドラーを使用すると、より単純なアプローチのように見えます。

他の誰かがこれらのアプローチの経験を持っているか、特にパフォーマンス、スケーラビリティ、および保守性の観点から要件を満たす同様のまたは「ベストプラクティス」を知っていますか?

何か不明な点があれば、私に知らせてください。私は Web 開発が初めてです。:)

注: これは、データ キャプチャ用のタブレット/ハンドヘルド デバイスで実行される Web アプリケーション用であり、CMS や静的サイトではありません (以前の化身は、約 5 年間、.Net Compact Framework で実行されていました。ユーザーが Android や iPad などの Windows 以外のデバイスを使用できるようにするための更新)。

4

2 に答える 2

0

これは、データベースでテキストの翻訳を処理する方法です (かなり明白に聞こえるかもしれませんが、少なくともこれは非常にスケーラブルです)。

  1. 列 [id]、[title]、および [description] を持つテーブル tbl_Content が 1 つの言語だけであるとします。

  2. まず、[id]、[languageId]、[title]、[description] の列を持つ tbl_Content_Translation を作成します。

  3. タイトル/説明列にあるものはすべて翻訳テーブルにコピーして、何も失わないようにします

  4. 元のテーブルのタイトルと説明の列を削除します

  5. このテーブルをクエリするすべての SP を変更して、[languageId] パラメータを追加します。

  6. SP を BLL に接続します。

  7. 最後に、Web ページまたは Web メソッドから、BLL を呼び出してデータにアクセスします。

繰り返しますが、これはかなり明白に思えるかもしれませんが、私たち (英語、フランス語、ベトナム語の ajax 呼び出しと通常の Web ページ) で機能しているので、これは役立つと思いました。

于 2012-06-20T01:36:56.337 に答える
0

サーバー側の翻訳はかなり複雑であることが判明しました。

最も簡単な方法は、jQuery ローカリゼーションを使用してデータベースから生成された言語スクリプトを取得することだと思いましたが、これでは何の価値もありませんでした。そのため、ajax リクエストを使用して手動でサーバーからスクリプトを取得するだけです (言語ごとに生成されたスクリプトが異なります)。 )。

サーバーから取得したスクリプトには、翻訳用の変数が含まれています (変数はコントロール ID と同じ名前です)。これをオブジェクトの配列として渡します。たとえば{id:'controlid', val:controlid}、翻訳を適用するメソッドに渡すため、スクリプトが呼び出されると、ページ翻訳されます。

これに対する良いベスト プラクティスがないように思われるのは残念ですが、私が行ったことは複雑ではありませんが、それをすべて行うライブラリまたはプラグインがあればいいと思います。

この答えに似ています

于 2012-06-20T12:22:55.167 に答える