4

Angular JS に基づいて Phonegap アプリを開発しています。Angular JS で I18N の 2 つのオプションを見つけました。

1) https://github.com/gertn/ng-i18n

2) http://angularjs.de/artikel/angularjs-i18n-ng-translate

どちらも非常に「似ている」: 翻訳されるプレースホルダー (式) があります。

だから私の質問は、たとえば、角度のあるサービス内にある(式/プレースホルダーではない)通知アラートで純粋なテキストを翻訳する方法は?

4

6 に答える 6

12

angular-translateを使用すると、 $translate サービスを直接使用できます。以下は、ドキュメントのサンプル コードです。

var translations = {
  HEADLINE: 'What an awesome module!',
  PARAGRAPH: 'Srsly!',
  NAMESPACE: {
    PARAGRAPH: 'And it comes with awesome features!'
  }
};

var app = angular.module('myApp', ['pascalprecht.translate']);

app.config(['$translateProvider', function ($translateProvider) {
  // add translation table
  $translateProvider.translations(translations);
}]);

app.controller('Ctrl', ['$scope', '$translate', function ($scope, $translate) {
  // expose translation via `$translate` service
  $scope.headline = $translate('HEADLINE');
  $scope.paragraph = $translate('PARAGRAPH');
  $scope.namespaced_paragraph = $translate('NAMESPACE.PARAGRAPH');
}]);
于 2013-08-03T03:50:27.273 に答える
3

あなたの「純粋な」テキストは常に具体的な翻訳です。したがって、通知に i18n を導入したい場合、通知は翻訳サービスによって翻訳できる翻訳 ID を使用する必要があります (angular-translate例を使用する場合)。

特に、angular-translate を使用する場合、具体的なテキストを翻訳コンポーネント (サービス、フィルター ディレクティブ) に渡すだけで済みます。渡された値 (あなたの場合は具体的なテキスト) のように見える翻訳テーブルに翻訳 ID がない場合、その文字列が返されるため、これも機能します。

<ANY translate="{{notificationFromService}}"></ANY>

angular-translate についてさらに質問がある場合は、お知らせください。

于 2013-08-05T19:37:49.047 に答える
3

jlg-i18n github プロジェクトをご覧ください: https://github.com/jlguenego/jlg-i18n

付加価値は次のとおりです。

1) 他のソリューションのような UPPERCASE_TAG はありません。代わりに、テキストを元の言語で直接入力します。したがって、翻訳が見つからない場合は、元の文字列が出力され、劣化は完全ではありません。i18nフィルターを使用した角度式の例:

{{'How are you doing?' | i18n}}

2) 補間/複数化機能があります。

{{'You have [[nbr]] message(s) and [[err]] error(s)' | i18n:4:0 }}

出力:

You have 4 messages and no error.
于 2015-05-22T14:57:54.917 に答える
1

サービス内で翻訳するには、たとえばサービス内で $http を使用する方法のように、翻訳サービスをサービスに追加するだけです。

私のお気に入りの翻訳/国際化モジュールは angular-translate です。その理由をここで共有しました。

これは、コントローラー内で angular-translate サービスを使用する方法の例です (サービス内で同じ方法を使用します)。

于 2013-08-30T14:52:28.230 に答える
0

ui-i18n https://github.com/angular-ui/ui-utils/pull/173を確認できます。パフォーマンスは angular-translate よりも優れており、シンタックスがシンプルで軽量です。

乾杯、 ティム・スウィート

于 2014-02-04T05:13:59.927 に答える