我在我的应用程序中使用angular-translate.如果determinePreferredLanguage()返回我的代码不知道的语言密钥,如何注册后备语言?
如果瑞典的某个人访问我的网站(语言密钥:sv),我想回到英语.但由于我没有在我的函数中列出svregisterAvailableLanguageKeys,它失败了,语言键显示给用户而不是翻译.
$translateProvider
.registerAvailableLanguageKeys(['da-dk','en-us'], {
'en_US': 'en-us',
'en_UK': 'en-us',
'da': 'da-dk',
})
.determinePreferredLanguage();
Run Code Online (Sandbox Code Playgroud) 我将我的angularjs应用程序从1.2.0迁移到1.3.0-rc2,我想将我的代码从bindonce更改为新的一次性绑定.我还使用了角度转换.我写下面的代码:
<span data-ng-bind="::'COMMENT'|translate" />
<span>{{::'COMMENT'|translate}}</span>
<img src="shareBlack.png" alt="{{::'SHARE'|translate}}" data-ng-attr-title="::'SHARE'|translate" data-ng-click="startShare()" />
Run Code Online (Sandbox Code Playgroud)
但在巴塔朗,我可以看到以下手表表达式:
{{::'SHARE'|translate}} | 3.59% | 17.00ms
::'COMMENT'|translate | 2.95% | 14.00ms
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
使用bindonce在以前版本1.2.0中编辑我有以下代码:
<div class="box-container" bindonce>
...
<span data-bo-text="'FEED_ALLOWED_COMMENTS'|translate"/>
...
</div>
Run Code Online (Sandbox Code Playgroud) 我有一个AngularJS应用程序.对于文本翻译我使用angular-translate.它工作得很好,但是当我请求第一页时,在加载翻译之前有几秒钟,页面会显示标签.
我已经阅读了一些关于它的帖子http://angular-translate.github.io/docs/#/guide/12_asynchronous-loading#asynchronous-loading_fouc---flash-of-untranslated-content但仍然无效.
这是我的翻译模块:
i18n.js:
'use strict';
/* i18n module */
angular.module('myApp.i18n', ['pascalprecht.translate'])
.config(['$translateProvider', function ($translateProvider) {
$translateProvider.preferredLanguage('en');
//$translateProvider.addInterpolation('$translateMessageFormatInterpolation');
$translateProvider.useStaticFilesLoader({
prefix: 'languages/locale-',
suffix: '.json'
});
}]);
Run Code Online (Sandbox Code Playgroud)
包含在我的app.js主文件中:
'use strict';
// Declare app level module which depends on filters, and services
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers', 'myApp.i18n', 'myApp.properties', 'angularSpinner', 'ngCookies', 'ngSanitize', 'angularCharts', 'ngProgress', 'angularMoment', 'tmh.dynamicLocale'])
.config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider, $routeParams) {
Run Code Online (Sandbox Code Playgroud) 我的团队目前正在开发一个Web项目,前端使用后端提供的json api.我们使用的技术是Spring Boot和AngularJS.api具有标准错误格式,如下所示:
{
"errorCode": "1111",
"message": "Error occurred: some error message",
"developerMessage": "message for developer"
}
Run Code Online (Sandbox Code Playgroud)
错误响应还可以包含可选的字段验证错误列表.问题是我们应该在哪里翻译用户错误消息?后端是否应该根据请求的语言环境返回已经翻译的消息,或者前端是否应该使用errorCode和它的i18n机制.我们在后端(Spring i18n支持)和前端(angular-translate)都有i18n机制.
什么是最佳做法?每种方法的优缺点是什么?任何建议表示赞赏.
java spring internationalization angularjs angular-translate
我知道之前已经问过这个问题但是没有一个答案似乎适用于我的情况
我买了这个主题Angle,它正在使用Angular 1.4.2和Angular翻译2.6.0(甚至更新到2.7.2)
默认情况下,模板上有Translate模块
这是配置文件
$translateProvider.useStaticFilesLoader({
prefix : 'app/i18n/',
suffix : '.json'
});
$translateProvider.preferredLanguage('es');
$translateProvider.useLocalStorage();
$translateProvider.usePostCompiling(true);
// Enable escaping of HTML
$translateProvider.useSanitizeValueStrategy('sanitize'); // I added this line based on Docs wasn't before
Run Code Online (Sandbox Code Playgroud)
并以JSON格式翻译文件
{
"page": {
"PAGES_WELCOME" : "Welcome to <br> MY APPLICATION, HEY THERE IS A BR TAG BEFORE ME"
},
"login": {
.
.
.
.
},
Run Code Online (Sandbox Code Playgroud)
但我无法在文本内部,JSON文件中添加HTML标记,而不是获取
欢迎来到我的APP
我越来越
欢迎来到我的APP
我怎样才能解决这个问题?
编辑
我不想删除标签,我的JSON文件被后端修改,它可以并且将包含HTML标签,我希望这些标签能够在输出上工作.
JADE示例内容具有约束力
div(class="col-lg-4 col-md-4 col-sm-4 col-xs-12 footer-left")
p(class="text-center")
{{ 'page.PAGES_WELCOME' | translate }}
Run Code Online (Sandbox Code Playgroud) 我正在为我的Angular应用程序调查不同的翻译工具.到目前为止,angular-translate似乎是一个很好的解决方案.它使用的结构类似于"lang/NAMESPACE/LANG.json"的每种语言JSON文件(例如"lang/user/de.json"),如下所示:
{
"key1": "Value1",
"key2": "Value2",
"key3": "Value3",
}
Run Code Online (Sandbox Code Playgroud)
可选地,JSON也可以嵌套.
这似乎很容易使用.但是,在实际添加新的或更改现有翻译时稍微不方便.您必须来回更改不同的语言文件,找到某个键的翻译很麻烦.比较不同的翻译也是不方便的.
是否有任何工具可以读取本地翻译文件,并且能够为每个键并排显示不同的翻译?应用程序(Mac OS支持是必须的)或基于浏览器的.
json translation localization internationalization angular-translate
我对使用angular-translate很感兴趣.
由于最初在启动时发生了很多设置调用,我无法在配置期间提供语言json.也不可能使用异步加载器.我需要能够在以后指定控制器或服务中的语言.
$translateProvider.translations(.., ...)是使用呼叫,但$translateProvider在控制器或服务中不可用,但似乎只在配置.
$translate 似乎没有能力加载语言JSON.
有没有解决方法?
我正在尝试翻译选择下拉列表,我不喜欢我这样做的方式,因为它很麻烦,它绕过了整个角度转换框架.
区域设置数据看起来像{"lang":{"label":"text","select":{"k1":"var1","k2":"var2"}}}如果我选择"选择"在控制器范围内的成员,我可以在select的ng-options中写一些类似"k as for(k,v)in scopedvar"的内容.
基本上我喜欢翻译来做语言解决,然后开始退出并返回我的选项的本地化地图.如果它有意义,例如:"k为v(for,k,v)in'select'| translate",但当然不会.
有没有人面临(并解决)此问题?
TIA,Edoardo
我正在尝试使用角度转换来显示类似的内容 - 发布者John Doe于2016年1月1日 - 其中John Doe和2016年1月1日是动态范围变量.
所以,我有类似的东西
<p translate="TRANSLATION-STRING" translate-values='{ name: myname, date:mydate }'></p>
Run Code Online (Sandbox Code Playgroud)
和翻译字符串定义为TRANSLATION-STRING:"在{{date}}上{{name}}上发布"
到目前为止它很好,但我所拥有的是一个非常长的日期,所以我想将一个日期过滤器应用于translate-value,类似于
<p translate="TRANSLATION-STRING" translate-values='{ name: myname, date:mydate|date:'MMM dd , yyyy' }'></p>
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.如何在视图中应用滤镜并将其传递到角度平移值?
我必须使用多个translatePartialLoader和不同的urlTemnplate.我正在使用angular-translate-loader-pluggable.似乎子模块urltemplate会覆盖父模块urltemplate
父模块配置
$translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: __env.hostUrl + '/*****/****/localization/resource_bundle?bundle_name={part}&locale={lang}'
});
$translateProvider.useLoader('translatePluggableLoader');
Run Code Online (Sandbox Code Playgroud)
子模块配置
translatePluggableLoaderProvider.useLoader('$translatePartialLoader', {
urlTemplate: navigationConfig.rsiDomain + navigationConfig.rsiBaseUrl + navigationConfig.localizationUrl + '?bundle_name={part}&locale={lang}'
});
Run Code Online (Sandbox Code Playgroud) angularjs ×8
javascript ×2
json ×2
bindonce ×1
html ×1
java ×1
localization ×1
ng-options ×1
spring ×1
translation ×1