javascript - UTF 字符导致 Angular 翻译清理失败

标签 javascript angularjs sanitization angular-translate

在 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/

最佳答案

目前,您有两个选择:

  • 使用策略sanitizeParameters这只会清理动态参数,而不是实际的翻译(模板)。如果您控制了翻译(但不是动态值),这将起作用。
  • 使用策略escape (或 escapeParameters )不使用 sanitizer 但转义。

  • 免责声明:我共同维护 Angular 翻译。

    编辑(12.01.2016):我创建了 this matrix overview of all variants .

    关于javascript - UTF 字符导致 Angular 翻译清理失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31002499/

    相关文章:

    javascript - 如何将标签放入输入中并使其始终可见

    javascript - 使用 jQuery 使绝对 div 与另一个 div 的顶部位置相同

    javascript - 适用于移动应用程序的 Node.js Web 服务

    javascript - 在 Controller 中使用 Angular 处理浏览器后退按钮

    css - 如何使用angularjs在引导选项卡中设置路由

    html - 编码 HTML 的正则表达式

    javascript - 单元测试依赖于其他 getter 的 Vuex getter

    node.js - 模块未在 karma 中定义

    python - 最佳实践 : handle functions with lots of parameters and reserved names

    php - 在保存到数据库之前清理 $_SERVER ['HTTP_USER_AGENT' ] & $_SERVER ['HTTP_REFERER' ]?