Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 哪个javascript框架擅长处理国际化?_Jquery_Backbone.js_Sencha Touch_Knockout.js_Zepto - Fatal编程技术网

Jquery 哪个javascript框架擅长处理国际化?

Jquery 哪个javascript框架擅长处理国际化?,jquery,backbone.js,sencha-touch,knockout.js,zepto,Jquery,Backbone.js,Sencha Touch,Knockout.js,Zepto,假设我正在构建一个相当大的基于浏览器的交互式媒体应用程序,我有以下要求: 仅限Webkit(假设桌面上有chrome) 平板电脑和台式机版本,可能在UI上存在细微差异 完全客户端:没有任何服务器交互 可能的最佳性能 完全国际化 我将构建很多这样的应用程序 长期可维护性不是优先事项(此处无TDD) 从一个项目到另一个项目的重用和利用是一个优先事项 设计师主宰一切——大量时间将花在外观和动画上 非常短的开发时间表 小而出色的团队 我正在寻求以前做过类似事情的人的建议,以避免事先做出一些错误的选择

假设我正在构建一个相当大的基于浏览器的交互式媒体应用程序,我有以下要求:

  • 仅限Webkit(假设桌面上有chrome)
  • 平板电脑和台式机版本,可能在UI上存在细微差异
  • 完全客户端:没有任何服务器交互
  • 可能的最佳性能
  • 完全国际化
  • 我将构建很多这样的应用程序
  • 长期可维护性不是优先事项(此处无TDD)
  • 从一个项目到另一个项目的重用和利用是一个优先事项
  • 设计师主宰一切——大量时间将花在外观和动画上
  • 非常短的开发时间表
  • 小而出色的团队
我正在寻求以前做过类似事情的人的建议,以避免事先做出一些错误的选择

我对JS和CSS3了如指掌,但我足够聪明/经验丰富/年纪大,知道使用别人开发的架构框架而不是我自己开发的架构框架有好处。然而,只有当我正在编写的应用程序符合框架开发人员的目标时,这些好处才会出现

我花了一天的时间试着了解SenchaTouch,并得出结论,它非常适合建造与我正在建造的完全不同的东西。(类似地,SenchaTouch/ExtJS是Swing,我正在寻找Flash。)此外,Sencha似乎很难将Javascript更改为基于类的系统,而不仅仅是接受/接受它是基于原型的系统。这让我很烦

我花了一天的时间学习了所有关于backbone.js的知识,我真的很喜欢它,除了1)我真的不需要任何服务器交互的东西(尽管我可能会用它从资源文件中引导所有UI元素),2)它完全是为了让视图保持最新。但也许这是件好事?我不清楚

我看过knockout.js,虽然它确实很担心视图是否保持最新,但我看过的演示都没有。我的i18n需求很简单:我的应用程序中出现的每个文本字符串都需要来自一个表(并且使用的语言可以随时更改)。当我在knockout.js主页上看到类似的内容时:

选项caption=“选择…”

我担心基于运行时变量设置使字符串动态化会有多容易。也就是说,如果我想写以下内容:

选项caption=l10n(“选择”)

有没有一种合理的无痛方法可以做到这一点,以及在整个UI中自动传播语言变化涉及到什么

有没有强烈建议我考虑另一个框架,这可能更合适


另外,我假设我们将使用jquery/ui或zepto(可能是zepto)来消除动态页面更新和动画中的大量样板文件。关于架构的这一部分有什么有用的想法吗?

我想您会发现有很多Java脚本可以满足您的需求。如果您想快速了解各种框架的感受,我建议您看看,在18个不同的JavaScript框架中实现了相同的应用程序,包括您为这个问题标记的框架。我有,对这个项目来说,GWT是一项我认为值得考虑的技术。它有许多“企业”功能,如内置的i18n,加上使用强类型Java语言,使重用变得更加容易。

我还没有尝试过这些功能,但它们似乎很容易与任何框架一起使用:

javascript的gettext:


灵活的复数形式和性别形式:

只需从服务器端生成所有html,并使用语言标签即可。我使用PHP并使用knockoutjs和sammyjs来实现这一点。html对所有语言都使用标签,我对每种语言都有一个不同的PHP文件,其中包含该语言中的所有标签及其值


此解决方案的“缺点”是,当语言发生变化时,您可能需要重新加载页面(如果您要使用单页应用程序解决方案,这可能只是一个缺点)。

我自己也对此很好奇(这里有一个击倒+i18n搜索),我使用Jed实用程序和Akasha建议的knockoutjs快速地完成了一个肮脏的JSFiddle。我还必须使用一些JQuery

请看这里:

我创建了一个自定义绑定(i18n),它绑定到您当前的语言环境。i18n绑定从元素中获取文本并将其用作键,然后用来自Jed的翻译文本替换它

语言环境本身是作为ko.obervable实现的,因此您可以更改语言环境值并让knockoutjs一次性更新所有翻译标签(您可能必须在init和update之间缓存键,因为它被$(element).html()调用覆盖)

有一个问题仍然存在,当我将Jed包括在JsFiddle中时,所有的样式都消失了。我不知道为什么,也不知道这是Jed+KnockoutJS的实际问题还是只有Jed+JSFIDLE的问题

我以前从未使用过Jed,所以我不知道它是否符合您的目的,但它应该足够简单,可以用另一个i18n框架替换Jed


希望这有帮助

我最近也遇到了同样的问题,因为有很多JS工具可以做到这一点,所以它们中没有一个(据我所知)能够很好地使用KnockoutJS,并且能够在不刷新页面的情况下更改语言

因此,我创建了一个我自己无法处理的lof,名为

它适用于简单文本和变量:

<div data-bind="html: i18n.get('hello')"></div>
<div data-bind="html: i18n.get('hello_name',{'name' : 'John Doe'})"></div>


也许我不清楚。没有“服务器端”。这是一个本地应用程序,恰好在浏览器中运行。您能接受其中一个答案吗?我已经在KnockoutJS+Jed中为您提供了一个i18n的演示。对不起,Magnus,但是这是最重要的