我找不到如何翻译函数内部对象的示例,仅用于翻译html内容的示例。 功能内部是需要翻译的系统按钮标签。我提供了实际的en.json和th.json文件来显示需要翻译的内容。我找不到像这个函数那样翻译非html对象的angular-translate的例子。我设法让翻译工作在我的应用程序的所有其他方面,但不是这个功能。文档http://angular-translate.github.io/docs/#/guide/03_using-translate-service没有提供适合我的代码的好例子。我见过其他人问这个类型的问题,只是指向文档(即https://github.com/angular-translate/angular-translate/issues/1466)。
en.json
{
"CHOOSE_IMAGE": "Choose image source",
"CAMERA": "Camera",
"LIBRARY": "Library",
"CANCEL": "Cancel"
}
th.json
{
"CHOOSE_IMAGE": "เลือกที่มาของภาพ",
"CAMERA": "กล้อง",
"LIBRARY": "คลังรูปภาพี่ี",
"CANCEL": "ยกเลิก"
}
feedback.controller.js
...
function getImageSource() {
var deferred = $q.defer();
$ionicActionSheet.show({
buttons: [
{ text: 'CAMERA' },
{ text: 'LIBRARY' }
],
titleText: 'CHOOSE_IMAGE',
cancelText: 'CANCEL',
cancel: function () {
deferred.reject();
},
buttonClicked: function (index) {
if (index === 0) {
deferred.resolve(Camera.PictureSourceType.CAMERA);
} else {
deferred.resolve(Camera.PictureSourceType.PHOTOLIBRARY);
}
return true;
}
});
return deferred.promise;
}
...
答案 0 :(得分:0)
嗯,显然所有必要的信息都在文档中。但是,让我做你的工作..
您必须在控制器中注入$translate
服务。假设您已经加载了翻译,最方便的翻译标签的方法是使用$translate.instant()
方法。它做了什么?
根据文档http://angular-translate.github.io/docs/#/api/pascalprecht.translate。$翻译它:
立即从加载的翻译的内部状态返回翻译。除了任何承诺处理之外,所有关于当前语言的规则,甚至是后备语言的首选语言都将被使用。如果找不到语言,将在后台调用异步加载。
所以你的代码应该是这样的:
<强> feedback.controller.js 强>
...
function getImageSource() {
var deferred = $q.defer();
$ionicActionSheet.show({
buttons: [
{ text: $translate.instant('CAMERA') },
{ text: $translate.instant('LIBRARY') }
],
titleText: $translate.instant('CHOOSE_IMAGE'),
cancelText: $translate.instant('CANCEL'),
cancel: function () {
deferred.reject();
},
buttonClicked: function (index) {
if (index === 0) {
deferred.resolve(Camera.PictureSourceType.CAMERA);
} else {
deferred.resolve(Camera.PictureSourceType.PHOTOLIBRARY);
}
return true;
}
});
return deferred.promise;
}
...
或者您可以使用异步加载:
<强> feedback.controller.js 强>
....
$translate(['CAMERA',
'LIBRARY',
'CHOOSE_IMAGE',
'CANCEL']).then(function (translations) {
$ionicActionSheet.show({
buttons: [
{ text: $translate.instant('CAMERA') },
{ text: $translate.instant('LIBRARY') }
],
....
希望它有所帮助。
答案 1 :(得分:0)
使用过滤功能
.controller(["$filter",....],function($filter,....){
var translateFilter=$filter("translate");
...
buttons: [
{ text: translateFilter('CAMERA') },
{ text: translateFilter('LIBRARY') }
]
...
})
或翻译尚未加载
.controller(["$q","$translate",....],function($q,$translate,....){
var translateFilter=$filter("translate");
$q.all({
CAMERA:$translate('CAMERA'),
LIBRARY:$translate('CAMERA')
}).then(function(translations){
...
buttons: [
{ text: translations.CAMERA },
{ text: translations.LIBRARY }
]
...
})
})