我知道以前有人问过这个问题,但似乎没有一个答案适用于我的情况。
我买了这个主题夹角,它使用的是角1.4.2和角平移2.6.0 (甚至更新到最后的2.7.2)
默认情况下,模板上有翻译模块。
这是配置文件
$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
和JSON格式的翻译文件
{
"page": {
"PAGES_WELCOME" : "Welcome to <br> MY APPLICATION, HEY THERE IS A BR TAG BEFORE ME"
},
"login": {
.
.
.
.
},
但是我不能在JSON文件中的文本中添加HTML标记,而不能将
欢迎来到我的应用程序
我得到了
欢迎来到我的应用程序
我怎么才能解决这个问题?
编辑
我不想删除标签,我的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 }}
发布于 2015-08-18 20:27:25
角清除任何html字符串在其插值过程中。为了解决这个问题,您需要在注入之前将$sce标记为安全。然后还使用ngBindHtml输出html。
我以前没有使用过角度转换,但这可能会奏效:
//app is the main module
app.filter("htmlSafe", ['$sce', function($sce) {
return function(htmlCode){
return $sce.trustAsHtml(htmlCode);
};
}]);
//then to output it
<span data-ng-bind-html="'page.PAGES_WELCOME' | translate | htmlSafe"></span>
发布于 2019-09-02 12:39:20
您可以保持JSON
文件的原样,然后只需在HTML
中使用innerHTML
属性将文本呈现如下:
<div [innerHTML]="'page.PAGES_WELCOME' | translate"></div>
发布于 2016-01-28 09:22:01
使用AngularJS 1.4.7进行了测试,我只使用以下内容:
<span data-ng-bind-html="'my.i18n.code.to.translate.html.tags' | translate"></span>
因为我不想注入任何过滤器,但是上面的内容只是针对我自己的可信i18n字符串。当然,公认的答案可能会更安全,但这一项只是马上就开始工作。
https://stackoverflow.com/questions/32080768
复制相似问题