sencha touch i18n 基础知识
Sencha touch 中如何处理 i18n? (我说的是字符串的本地化支持,也包括本地化组件)
一个更具体的问题:我有一个包含日期选择器的表单,如何确保在访问时以欧洲格式显示和选择日期使用法国 Android 手机的应用程序?
干杯
How is i18n handled within Sencha touch? (I am talking of localization support for strings, but also of localized components)
A more specific question: I have a form that contains a date picker, how do I make sure that the date will be displayed and picked in european format when I access the application using a french android phone?
Cheers
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
SenchaTouch 中还没有 i18n 的官方 API。尽管在 Ext 4 中,/locale 文件夹中存在所有组件的本地化文件。
有一个旧的 tutorial 指示了一种方法,通过动态设置 src 属性根据区域设置的脚本标记。
使用 window.navigator.language 检查浏览器的语言。
语言环境文件必须在 /ext/locale/ext-lang-fr.js
中设置
您可以在其中覆盖组件属性。
我制作了一个工作原型,您可以在这里查看:
http://lab.herkulano.com/sencha-touch/date-picker- i18n/
There isn't an official API for i18n in SenchaTouch, yet. Although in Ext 4 there are localization files for all components in the /locale folder.
There is an old tutorial that indicates a way, by dynamically in setting the src attribute of a script tag according to the locale.
Use window.navigator.language to check the browser's language.
Locale files must be set in /ext/locale/ext-lang-fr.js
Where you can override the components properties.
I made a working prototype you can check out here:
http://lab.herkulano.com/sencha-touch/date-picker-i18n/
对于您自己的字符串(不谈论本机触摸组件),您可以执行类似的操作。
1) 在 head 部分的 index.html 中,在
在您的 localeManager 中,根据您的浏览器语言加载与您的语言相对应的资源文件 (myStrings-fr.js | myStrings-en.js
)可以执行类似的操作来获取浏览器中的语言:
2) 使用翻译后的字符串创建资源文件
对于英语版本 (myStrings-en.js),它应该
如下所示: 对于法语版本,它应该如下所示 ( myStrings-fr.js) 例如:
3) 在你的 sencha touch 代码中,例如搜索字段占位符值
希望它会有所帮助。
另一个解决方案可能是修改 sencha touch 应用程序的构建过程,并在构建应用程序时创建应用程序的本地化版本。所以每种语言都有一个版本。然后,根据浏览器语言,您将在浏览器中加载应用程序时加载正确版本的应用程序。
For your own strings (not talking about native touch component) you could do something like this.
1) In your index.html in the head section, load a LocaleManager.js file (whatever the name) before the
<script id="microloader" type="text/javascript" src="sdk/microloader/development.js"></script>
In your localeManager, depending on your browser's language load the resource file corresponding to your language (myStrings-fr.js | myStrings-en.js )
You can do something like this to get the language in the browser:
2) Create your resources files with your translated string
It should look like this for the english version (myStrings-en.js) :
It should look like this for the french version (myStrings-fr.js) for example :
3) In your sencha touch code, for example for a searchfield place holder value
Hope it will help.
Another solution could be to modify the build process of your sencha touch app and create localized versions of your app when building it. So there would be one version per language. Then depending on the brower language you would load the right version of your app when loading the app in the browser.
我编写了自己的 i18n 类,如下:
然后您可以这样调用它:
有关更多信息,您可以在这里阅读原始博客文章: http://zippy1978.tumblr.com/post/36131938659/internationalization-i18n-with-sencha-touch
I wrote my own i18n class, here it is:
Then you can call it like this:
For more information, you can read the original blog post here: http://zippy1978.tumblr.com/post/36131938659/internationalization-i18n-with-sencha-touch
这是我的实现:
我希望根据设备的语言将我的应用程序翻译为英语和西班牙语,如果语言不是西班牙语,则采用默认值(英语)。
这是我的课程:
这就是你如何称呼它:
我希望它有帮助。
Here is my implementation:
I want me app to be translated to English and Spanish, based in the device's language, if the language is not Spanish, then it takes the default (English).
Here are my classes:
And here is how you call it:
I hope it helps.
locale 文件夹位于 sencha touch 中的 /src 文件夹下
locale folder is under /src folder in sencha touch