在我的 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')
}])
我正在使用来自 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.
确实感觉有点hacky,可惜作者没有提供服务。考虑到最近看到的 activity 很少,我会回避使用它并使用 angular-translate 之类的东西来代替
更新: 哦,作者确实提供了可注射服务,就在他的 README.md:
中angular.module('myModule')
.controller('myCtrlr', function($scope, i18ng) {
$scope.translatedText = i18ng.t('somekey')
}])