在我的 angular 控制器中使用 `i18next.t`?

using `i18next.t` from inside my angular controller?

我正在使用来自 https://github.com/mikefrey/i18ng

的库 i18ng

虽然我需要从控制器中访问翻译功能,但我似乎无法弄清楚这是如何公开的。

我看到图书馆保存了来自 window.i18n 的引用,但它似乎对我来说 return 没有任何意义。

我已经在我的控制器中试过了:

    var t = window.i18n.t;
    $rootScope.pageTitle = t('test'); //should produce "this is a test"

但我得到的只是一个空字符串。

因为它是一个过滤器,你应该可以使用

$rootScope.pageTitle = $filter('t')('test');

其中 t 是 i18ng 库提供的过滤器名称,$filter 是注入到您的 factory/service.

中的 angular 过滤器服务

确实感觉有点hacky,可惜作者没有提供服务。考虑到最近看到的 activity 很少,我会回避使用它并使用 angular-translate 之类的东西来代替

更新: 哦,作者确实提供了可注射服务,就在他的 README.md:

angular.module('myModule')
.controller('myCtrlr', function($scope, i18ng) {
  $scope.translatedText = i18ng.t('somekey')
}])