Internationalization 用于Jquery Mobile的i18n本地化插件?

Internationalization 用于Jquery Mobile的i18n本地化插件?,internationalization,jquery-mobile,Internationalization,Jquery Mobile,是否有针对Jquery Mobile的i18n本地化插件?我搜索了很多时间,但是Jquery的i18n翻译插件在JQM上不能正常工作。例如在a href中..非常感谢 没有人知道?我也遇到了同样的问题,我只需使用Jquery扩展函数就解决了这个问题 假设您按照以下方式定义语言资源: 1) 创建一个默认本地化的资源文件,大概是用英语定义的。我们称之为resources.default.js var MyApp = MyApp || {}; MyApp.resources = { One:

是否有针对Jquery Mobile的i18n本地化插件?我搜索了很多时间,但是Jquery的i18n翻译插件在JQM上不能正常工作。例如在a href中..非常感谢


没有人知道?

我也遇到了同样的问题,我只需使用Jquery扩展函数就解决了这个问题

假设您按照以下方式定义语言资源:

1) 创建一个默认本地化的资源文件,大概是用英语定义的。我们称之为resources.default.js

var MyApp = MyApp || {};

MyApp.resources = {
    One: "One",
    Two: "Two",
    Three:"Three"    
}
2) 在独立文件(比如西班牙语)中定义本地化资源。称之为resources.es.js

var localizedResources = {
    One: "Uno",
    Two: "Dos",
    Three:"Tres"    
}
3) 在您的服务器逻辑上,决定只需要包含英语的默认翻译,或者如果您需要任何其他语言,则执行包含

<script src="resources.es.js"> </script> 

4) 按照步骤3,创建您的网页,并添加脚本以处理资源的包含

<html>
<head>
</head>
<body>

​<h1>Welcome to my App</h1>
<p>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​Welcome to this test app</p>

<button>Click me</button>​



<script src="resources.default.js"> </script> 


// The server decided we needed Spanish translations.
<script src="resources.es.js"> </script> 


<script type="text/javascript">
    //Extend the translations into the resources object.

    $.extend(MyApp.resources, localizedResources);

    $(window).ready(function(){
        $('button').click(function(){
            alert(MyApp.resources.One);    
        });    
    });

</script>  
</body>

​欢迎使用我的应用程序
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​欢迎使用此测试应用程序

点击我​ //服务器决定我们需要西班牙语翻译。 //将翻译扩展到resources对象中。 $.extend(MyApp.resources,localizedResources); $(窗口).ready(函数(){ $(“按钮”)。单击(函数(){ 警报(MyApp.resources.One); }); });
这应该对你有用。 ​ 编辑:
请在此处查看它的实际操作:

我正在为我的项目使用以下脚本。它允许您“在运行时”更改语言,而无需重新加载页面。脚本是“自动运行”,只需将其添加到html页面的末尾。 它可能有一些bug;)

获取本地化字符串的步骤

要初始化,请调用“构造函数”

要使用它来指定一种语言

<script type="text/javascript" src="js/Lang.js?language=ita"></script>

如果您正在编写混合移动应用程序,也可以尝试PhoneGap插件。以下是链接:

我正在尝试,在最新版本之后,它对大多数小部件都可以正常工作(它允许设置文本的目标位置)

然而,我仍然不知道如何翻译动态生成的东西,如表弹出窗口

除此之外,它工作得非常好

以下是如何设置它:

 lang : function (page) {
        var update_language,
          translate = function (page) {
          page.find('.t').i18n();
          },
          set_lang = function (language) {
            var set_icon;
            switch (language) {
              case "de-DE":
                set_icon = "DE";
              break;
              case "fr-FR":
                set_icon = "FR";
              break;
              default:
                set_icon = "EN";
              break;
            }
            $(".setIcon").parent(".ui-btn").find(".ui-icon")
              .removeClass().addClass('ui-icon ui-shadow ui-icon-lang '+set_icon);
          }
        if (fauna.i18set === undefined) {
          i18n.init({
            lng: 'en-EN',
            load: 'current',
            detectLngQS: 'lang',
            fallbackLng: false,
            resGetPath: '../lang/__lng__/__ns__.json',
            ns: 'gen',
              debug: true,
            // , useLocalStorage: true
            // , localStorageExpirationTime: 86400000 // in ms, default 1 week
          }, function () {
            translate(page);
            set_lang(i18n.lng());
          });
          fauna.i18set = true;
        } else {
          update_language = $.mobile.path.parseUrl( window.location.href )
            .hash.replace( /.*lang=/, "" );
          if (update_language !== "") {
            i18n.setLng(update_language, function() {
              translate(page);
              set_lang(i18n.lng());
            });
          } else {
            translate(page);
          }
        }
      }
所以我使用
.t
类来标记要转换的元素(查找类比数据属性快)

我在
pagebeforeshow
上调用上面的代码,它似乎也能很好地处理所有事情


旁注:刚刚注意到,如果禁用pushstate,更新语言将失败。为此需要更好的正则表达式。

您可以尝试使用框架HTMLed.js。 这相当容易。签出框架


这是一个

看起来不错的解决方案,但我无法访问本地化的资源,只能使用默认的翻译(英语)作品。我在documentready中使用了translation开关:$(document.ready)(函数(){$.extend(MyApp.resources,localizedResources);});在所有JS脚本之后在head中定义:resources.default.JS的脚本标记?我可以把它放在头上,还是一定要放在身体上?你可以把它放在文件中允许的任何地方。这只是一个脚本标记,因此它遵循标记的html规则。
Lang.get('unknown_user')
new Lang("ITA", true);
<script type="text/javascript" src="js/Lang.js?language=ita"></script>
 lang : function (page) {
        var update_language,
          translate = function (page) {
          page.find('.t').i18n();
          },
          set_lang = function (language) {
            var set_icon;
            switch (language) {
              case "de-DE":
                set_icon = "DE";
              break;
              case "fr-FR":
                set_icon = "FR";
              break;
              default:
                set_icon = "EN";
              break;
            }
            $(".setIcon").parent(".ui-btn").find(".ui-icon")
              .removeClass().addClass('ui-icon ui-shadow ui-icon-lang '+set_icon);
          }
        if (fauna.i18set === undefined) {
          i18n.init({
            lng: 'en-EN',
            load: 'current',
            detectLngQS: 'lang',
            fallbackLng: false,
            resGetPath: '../lang/__lng__/__ns__.json',
            ns: 'gen',
              debug: true,
            // , useLocalStorage: true
            // , localStorageExpirationTime: 86400000 // in ms, default 1 week
          }, function () {
            translate(page);
            set_lang(i18n.lng());
          });
          fauna.i18set = true;
        } else {
          update_language = $.mobile.path.parseUrl( window.location.href )
            .hash.replace( /.*lang=/, "" );
          if (update_language !== "") {
            i18n.setLng(update_language, function() {
              translate(page);
              set_lang(i18n.lng());
            });
          } else {
            translate(page);
          }
        }
      }