如何在基于angularjs的项目中动态更改uploadcare小部件的区域设置

How to dynamically change locale in uploadcare widget in angularjs based project

本文关键字:uploadcare 小部 设置 区域 动态 项目 angularjs      更新时间:2023-09-26

我在基于angularjs的应用程序中使用uploadcare小部件。我把这个小部件集成为angular指令。

文档说,我应该设置全局变量来改变区域设置:

<script>
    UPLOADCARE_LOCALE = 'ru';
</script>

但是我对angular不是很熟悉。所以,我不知道如何动态地做到这一点。

我很乐意得到任何帮助。


我试图添加$rootScope到我的uploadcare指令并设置UPLOADCARE_LOCALE变量:

angular.module("project").directive 'projectUploadcare', ($uploadcare, $rootScope) ->
   restrict: 'E'
   replace: true
   template: '''
                <span>
                   <span class="uploadcare-preview"></span>
                   <input type="hidden">
                </span>
             '''
   link: (scope, element, attrs) ->
      $rootScope.UPLOADCARE_LOCALE = 'ru'
      ... other code ...

所有全局设置在页面加载时一次读取。区域设置是全局设置,不能为特定的小部件覆盖。但是根据源代码,有一个hack允许在运行时重建翻译。

首先,您需要获取内部Uploadcare API。

var internalUploadcare;
uploadcare.plugin(function(internal) {
  internalUploadcare = internal;
});

则可以使用内部internalUploadcare.locale.rebuild方法重新构建区域设置。第三步是重新初始化页面上现有的小部件。例如:

$('#uploader').html(
  $('#uploader input:eq(0)')
);
uploadcare.initialize($('#uploader'));

加起来:http://jsbin.com/comone/1/watch

手动使用

UPLOADCARE_LOCALE_TRANSLATIONS = {
  errors: {
    'portrait': 'Landscape images only'  // message for widget
  },
  dialog: {tabs: {preview: {error: {
    'portrait': {  // messages for dialog's error page
      title: 'No portrait images are allowed.',
      text: 'We are sorry but image should be landscape.',
      back: 'Back'
    }
  } } } }
};

是的:

UPLOADCARE_LOCALE = 'en';

只是要确保在之前设置这个变量

但是和AngularJS没有关系