UTF 字符的角度翻译清理失败

2024-02-06

在 Angular 1.3.x 上,带有最新版本的 Angular-Translate。使用$sanitize直接使用过滤器或服务时似乎存在问题,但使用指令时它可以工作。

建议?

这是一个例子:

var myApp = angular.module('myApp', [ 'pascalprecht.translate', 'ngSanitize' ]);

myApp.config(function($translateProvider) {
    $translateProvider.useSanitizeValueStrategy("sanitize");
    $translateProvider.preferredLanguage('en');
    $translateProvider.translations('en', {
        UTF: 'öéü',
    });
});

myApp.controller("myCtrl", function($scope, $translate) {
    $translate("UTF").then(function(trans) {
        $scope.UTFCTRL = trans;
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular-sanitize.min.js"></script>
<script src="http://rawgit.com/PascalPrecht/bower-angular-translate/master/angular-translate.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">
    <div>
        Wrong: <h1>{{ 'UTF' | translate }}</h1>
    </div>
    
    <div>
        Ok: <h1 translate="UTF"></h1>
    </div>
    
    <div>
        Wrong: <h1>{{ UTFCTRL }}</h1>
    </div>
</div>

在jsfiddle上:http://jsfiddle.net/gnvpo6aa/ http://jsfiddle.net/gnvpo6aa/


目前,您有两种选择:

  1. 使用策略sanitizeParameters这只会清理动态参数,但不会清理实际的翻译(模板)。如果您可以控制翻译(但不能控制动态值),那么这将起作用。
  2. 使用策略escape (or escapeParameters)不使用清理而是转义。

免责声明:我共同维护角度翻译。

编辑(12.01.2016):我创建了该矩阵概述了所有变体 http://plnkr.co/edit/8BHONOjhsxBxxO9oVYOK?p=preview.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UTF 字符的角度翻译清理失败 的相关文章

随机推荐