在Polymer应用程序中动态更改本地化

时间:2017-03-05 10:34:47

标签: polymer polymer-1.0

我有一个包含许多模板的Polymer应用程序,我希望在其中管理本地化。我使用app-localize-behavior。我找到了a nice way of managing localization from a single file。在那里提出的解决方案使用行为,并且在每个模板中需要很少的添加,并且具有唯一的json数据文件。

我的问题是我希望能够动态更改语言,并且可能将其存储在app-localstorage-document元素中,我从另一个文件管理。如何从此文件外部设置此语言属性?

<link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../bower_components/app-localize-behavior/app-localize-behavior.html">

<script>
  MyLocalizeImpl = {
    properties: {
      language: {
        value: 'fr'
      }
    },

    attached: function() {
      this.loadResources(this.resolveUrl('../locales.json'));
    },
  };

  MyLocalize = [MyLocalizeImpl, Polymer.AppLocalizeBehavior]; 
</script>

1 个答案:

答案 0 :(得分:1)

好的我改编了app-localize-behavior demo code。更改语言的模板必须覆盖语言属性,包括“notify:true”:

  properties: {
    language: {
      value: 'en',
      type: String,
      notify: true
    },
  },

然后我将所有其他元素的语言属性与此绑定:

<element language="{{language}}"></element>

使用localize的模板当然必须链接本地化脚本:

<link rel="import" href="localize.html">

...并在脚本部分中添加行为:

Polymer({
  is: "my-page",

  behaviors: [
    MyLocalize
  ]

奖励:如何为每种语言使用不同的json文件:https://abendigo.github.io/2016/08/03/lazyloading_localization.html