在 angularjs 控制器中本地化字符串属性
Localize string properties inside angularjs controller
在我的
angularjs控制器中,我正在注入翻译服务
(function () {
"use strict";
app.controller('homeController', ['$scope', translationService) {
//Run translation if selected language changes
$scope.translate = function () {
translationService.getTranslation($scope, $scope.selectedLanguage);
};
$scope.translate();
}
和内部视图我正在翻译这样的文本
{{ translation.HelloWorld }}
其中 HelloWorld 是语言 json 文件中的字符串。
由于我能够使用 $scope.selectedLanguage
检测当前选定的语言,这将返回所选语言eng
、rus
的字符串,fra
如何翻译注入在控制器内对象属性中的文本,例如
var myObj = { Id: 1, Name: "Default", Description: "Default" };
如何本地化"名称和说明"属性?
更新:
app.service('translationService', function ($resource) {
this.getTranslation = function ($scope, language) {
var languageFilePath = '../app/locStrings/translation_' + language + '.json';
$resource(languageFilePath).get(function (data) {
$scope.translation = data;
});
};
});
其中每个文件都有前缀translation_
类似
translation_eng.json
或translation_fra.json
有内容
{
"HELLO_WORLD": "Hello world en",
}
如何在 Angular 中使用本地化?
您可以通过简单地使用 rootScope 对象在角度中使用本地化。它的工作原理与.net本地化概念非常相似。
本地化架构。
它与.net本地化非常相似,在.net中,您可以放置一个本地化文件,其中所有语言翻译都以表格格式存储。在这里,您可以根据自己的方便使用两个文件或一个文件。(我更喜欢每种语言的单独文件(
所有语言都在一个文件中。
{
translationkey1:{
en:'translationValue_english1',
hi:'translationValue_hindi1',
fr:'translationValue_french1',
},
translationkey2:{
en:'translationValue_english2',
hi:'translationValue_hindi2',
fr:'translationValue_french2',
},
translationkey3:{
en:'translationValue_english2',
hi:'translationValue_hindi2',
fr:'translationValue_french2',
}
}
每种语言的单独文件。
{
translationkey1:'translationValue1',
translationkey2:'translationValue2',
translationkey3:'translationValue3',
}
视图中的使用情况
在 rootscope 的翻译对象中复制翻译文件对象,以便您可以在任何地方访问它。
所有语言都在一个文件中。
{{translations[myObj.Name][selectedLanguage]}} // It will return English value for specific value from translation object.
每种语言的单独文件。
如果您使用的是单独的文件,则无需存储选定的语言格式,只需根据语言保留翻译对象即可。
{{translations[myObj.Name]}}
这是个好办法。
如果翻译文件太大,则对每种语言使用单独的文件是一种好方法。它增加了服务器点击率,但您可以轻松维护翻译。
使用单个文件存储所有语言会增加内存消耗。但减少了服务器命中率。
这是你的答案。
相关文章:
- 如何替换数据属性中的特定字符串单词
- 未捕获的InvalidValueError:setIcon:不是字符串;并且没有url属性;并且没有路径属性
- 如何在只接受字符串值/文字的HTML属性中调用函数
- 获取一个对象´s属性的名称使用字符串
- 如何从字符串变量访问对象属性
- 作为onclick确认的一部分,Razor中的字符串属性
- 将非字符串属性与下划线匹配.js在哪里
- Javascript将NaN字符串属性转换为可用数字
- node.js根据字符串属性名称设置属性
- 使用JavaScript过滤字符串属性上的JSON
- 如何按字符串属性对对象数组进行排序
- 在数组上设置字符串属性的缺点是什么?
- 字符串属性未反序列化
- 使用/不使用moment.js时删除字符串属性
- 提取对象数组的字符串属性
- 在 angularjs 控制器中本地化字符串属性
- 闭包编译器更新字符串属性名称引用
- 创建一个包含字符串属性的对象 litteral
- 如何通过部分字符串属性过滤ng-repeat中的值
- javascript中的串接字符串属性