首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在knockout.js中处理本地化?

如何在knockout.js中处理本地化?
EN

Stack Overflow用户
提问于 2012-07-11 23:59:17
回答 3查看 9.9K关注 0票数 14

如何使用knockout.js处理本地化?

knockback.js似乎有一个漂亮的实用程序来处理本地化,我想知道是否有任何第三方库可以与knockout.js一起使用来处理本地化,而不必真正切换到knocback.js来获得这些功能(因为我并不真的需要这个简单的应用程序的主干模型或路由)。像Mapping plugin这样简单易用的东西将是理想的。

谢谢!!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-12 03:55:21

这是一个演示在两种语言之间切换Knockout的simple fiddle。这是非常初级的,但是你的问题缺乏任何细节来给你更复杂的东西。

HTML

代码语言:javascript
复制
<div data-bind="with: selectedLanguage">
    <h1 data-bind="text: header"></h1>
    <h2 data-bind="text: subHeader"></h2>
    <p data-bind="text: body"></p>
</div>
<select data-bind="options: languages, optionsText: 'name', value: selectedLanguage"></select>​

ViewModels

代码语言:javascript
复制
var Language = function(language) {
    this.name = ko.observable(language.name);
    this.header = ko.observable(language.header);
    this.subHeader = ko.observable(language.subHeader);
    this.body = ko.observable(language.body);
};

var ViewModel = function(data) {
    var self = this;
    self.languages = ko.observableArray(
    ko.utils.arrayMap(data, function(i) {
        return new Language(i);
    }));
    self.selectedLanguage = ko.observable();
};
票数 12
EN

Stack Overflow用户

发布于 2013-09-24 18:48:09

我认为没有必要进行映射,也没有必要为每个标签使用可观察性。

代码语言:javascript
复制
var ViewModel = function () {  
    this.l = ko.observable(spanish);
    this.chooseenglish = function () {
        this.l(english);
    };
  this.choosespanish = function () {
        this.l(spanish);
    };
};
var spanish = {
    header: "Bienvenidos",    
    body: "Esta es la demostración de idioma"
};
var english = {
    header: "Welcome",
     body: "This is the language demo"
}
    ko.applyBindings(new ViewModel());

在html代码中,您只需调用observable和标签名称:

代码语言:javascript
复制
<h1 data-bind='text: l().header'></h1> 
<button data-bind='click: chooseenglish'>English</button>
<button data-bind='click:choosespanish'>Spanish</button>
<p data-bind='text: l().body'></p> 

http://jsfiddle.net/runjep/3Lqsx/2094/

票数 6
EN

Stack Overflow用户

发布于 2017-04-14 02:02:23

有一个很棒的i18next-ko项目,它在引擎盖下使用了i18next

定义您的翻译:

代码语言:javascript
复制
var resourceStore = {
    en: {
      translation: {
        'testTranslation': 'Test translation',
        'testTranslation2': 'Test translation __param__'
      }
    },

    de: {
      translation: {
        'testTranslation': 'Test-Übersetzung',
        'testTranslation2': 'Test-Übersetzung __param__'
      }
    }
  }

初始化i18next-ko:

代码语言:javascript
复制
i18nextko.init(resourceStore, 'en', ko);

随意切换语言:

代码语言:javascript
复制
i18nextko.setLanguage('de');

和绑定:

代码语言:javascript
复制
data-bind="i18n: 'testTranslation'"

或者:

代码语言:javascript
复制
data-bind="i18n: { key: 'testTranslation2', options: { param: paramObservable } }"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11436685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档