4

これが私が構築しようとしているものです: RESTfulJSONのみの API でデータを提供するサービスがあります。サーバーのセットアップはPython+Flaskです。通常の Web アプリ、モバイル対応クライアント、Facebook アプリなど、この API を利用するクライアントがいくつかあります。

さて、私の仮定/決定:

  • 私はサーバーが を介してデータのみを提供することに決めJSON、プレゼンテーションを完全にクライアント側に引き渡しました。
  • Web アプリをモバイル対応にしたいので、別のモバイル クライアントは必要ありません。
  • また、Facebook アプリについては、通常の Web アプリの一部をレンダリングする Facebook Canvas を使用することに決め、コードを再利用しました。上記の仮定に何か問題がある場合は、遠慮なく修正してください。上記は理論的には可能ですが、実際の実装が可能かどうかを知りたいです。

ここで、Web アプリは、サーバーからベース ページ/テンプレートをフェッチした後、JSONAPI を介してデータをフェッチした後、レンダリングを動的に処理する必要があります。データは非常に単純です。複数の選択肢からなる質問で、どのユーザーが別の質問を受け取ったかを答えます。最後に、ユーザーは結果を共有したり、他のユーザーを招待したりできます。

このセットアップでは、次のようなフレームワークが必要ですangularjsか、それでjQuery十分ですか?

ここでの私の主な関心事は、国際化をどのように処理するかということです。私は当初、ユーザーFlask-Babelが HTML テンプレートを国際化することを意図していました。しかし、JSON のみの API に焦点を合わせたので、現在それをどのように/どこで処理するかについての手がかりがありません: クライアント側またはサーバー側? そのために使用するツールは何ですか?

私が考えることができた 1 つのアプローチは、サーバー自体にさまざまな言語のデータを保持し、クライアントが要求で送信する属性に応じて、適切な言語のデータを含む JSON 応答を送信することでした。

もう 1 つの方法は、サーバーが送信する共通データセットのすべての変換をクライアントに任せることです。ただし、このアプローチについてはわかりません。

4

7 に答える 7

1

このプラグインは本当に役に立ちます。

使用法に関しては、APIを利用する単一ページ アプリケーション用に設定するのは非常に簡単です。JSON

サンプルの使用法を見ると、次のようになります。

HTML:

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" src="[PATH]/jquery.js" /> // optional
    <script type="text/javascript" src="[PATH]/i18next.js" />
  </head>
  <body>
    <ul class="nav">
      <li><a href="#" data-i18n="nav.home"></a></li>
      <li><a href="#" data-i18n="nav.page1"></a></li>
      <li><a href="#" data-i18n="nav.page2"></a></li>
    </ul>
  </body>

Json (読み込まれたリソース):

{
  "app": {
    "name": "i18next"
  },
  "nav": {
    "home": "Home",
    "page1": "Page One",
    "page2": "Page Two"
  }
}

JS:

i18n.init(function(t) {
  // translate nav
  $(".nav").i18n();

  // programatical access
  var appName = t("app.name");
});
于 2014-04-12T10:00:48.960 に答える
0

https://github.com/wikimedia/jquery.i18nがほぼ一致する可能性があります。多くの言語を処理でき、メッセージは json ファイルにあり、完全なクライアント側ライブラリです。

于 2014-04-03T11:07:02.470 に答える
0

技術的な制約の詳細はわかりませんが、すべてデータの量に依存すると思います。

  • おそらく時間の経過とともにあまり進化しない「質問/回答」がほとんどない場合は、 I18N を定数として扱うことができます。すべてをクライアント側に置くことは理にかなっています。

  • おそらく進化するであろう大量の「質問/回答」がある場合は、I18N をデータとして扱う必要があると思います。

JSON API を作成したので、Q/A はあなたのデータであり、既にサーバー側に属している可能性があります。

問題は、質問を追加または修正するたびに、クライアント アプリの新しいバージョンを配信したいですか?

それが私がこれをする理由です:

私が考えることができた 1 つのアプローチは、サーバー自体にさまざまな言語のデータを保持し、クライアントが要求で送信する属性に応じて、適切な言語のデータを含む JSON 応答を送信することでした。

編集(精度):質問と回答について話しています。アプリケーション メッセージ (メニュー、テキスト、ヘルプ メッセージなど) については、クライアント フレームワークの i18n コンポーネントを使用する必要があります。他の回答は、多くの優れたツールを提供します。

于 2014-04-15T12:18:30.443 に答える
0

すべてのインターフェイス コードがクライアント側に存在する場合は、i18n. 使用している JavaScript フレームワークで動作する i18n ライブラリを使用します。角度の場合、それはangular-gettextかもしれません。

複数のクライアントを開発している場合、異なるクライアント アプリケーションで異なる i18n ライブラリを使用することがあります。すべてがgettext .po ファイルをコンパイルすることを確認してください。これにより、翻訳者にとってより簡単になります。

于 2014-04-12T13:52:43.973 に答える
0

js と json を介して i18n を実装する手順:

  • i18n タグの CSS クラスを定義します。<span class="i18n" id="i18n_username"></span>
  • 異なる .properties ファイルで異なる言語の i18n 値を定義します。たとえば、userhome_en_US.properties にキー値があります。username = Username
  • lang=en_US, page=userhome言語ごとに .properties ファイルをロードするバックエンド API を記述し、json のキーと値の形式でI18nAction -> loadI18n()返します{"username":"Username"}
  • lang & page パラメータによって i18n キー値をロードする js 関数を記述します。
  • cssクラスを介してタグを取得し、コンテンツを置き換えることにより、Webページのi18nテキストを更新しclass="i18n"ますi18n_. 、次にスパンの内容を置き換え、

私はこのような util プログラムを書きました。非常に柔軟で使いやすいです。基本的な概念は、struts2 フレームワークの i18n 機能から来ています。

于 2014-04-16T09:52:12.560 に答える