代码之家  ›  专栏  ›  技术社区  ›  Karim

JavaScript和翻译

  •  2
  • Karim  · 技术社区  · 16 年前

    我有一个PHP应用程序,它在客户端广泛使用了javascript。我在PHP方面有一个简单的系统,可以为翻译人员提供一种提供新语言的简单方法。但有些情况下,javascript需要向用户显示语言元素(可能是“确定”或“取消”按钮或“加载”等)。

    使用PHP,我只需要在服务器端缓存一个文本文件,其中一方包含短语代码,另一方包含它们的翻译。一个翻译只需要用他们自己的语言替换英语,并将我集成到应用程序中的翻译版本发送给我。

    我想在客户方得到类似的东西。我突然想到有一个javascript include,它只是一组翻译后的常量,但是每个页面加载都在下载一个可能很大的文件,其中大部分是不必要的。

    有人必须处理这件事吗?如果是,你的解决方案是什么?

    编辑 :很明显,我不是指“即时”翻译。翻译已经准备好了,准备好了,我只需要把它们以一种有效的方式提供给客户。

    5 回复  |  直到 16 年前
        1
  •  11
  •   Pim Jager    16 年前

    从PHP输入javascript怎么样?因此,不是起伏:

      <script type='text/javascript' src='jsscript.js'></script>
    

     <script type='text/javascript' src='jsscript.php'></script>
    

    然后在php文件中,用相关的常量替换所有输出的文本。

    确保从PHP代码中输出正确的缓存头。

    编辑

    以下是我使用的标题:

    header('Content-type: text/javascript');
    header('Cache-Control: public');
    header('expires: '. date("r", time() + ( 7 * 24 * 60 * 60 ) ) ); // 1 week
    header("Pragma: public");
    
        2
  •  2
  •   scronide    16 年前

    我通常将适当的语言值作为一个javascript对象加载到一个单独的文件中,其余代码可以引用该文件:

    var messages = {
        "loading": "Chargement"
    }
    
    alert(messages.loading);
    

    语言库将在第一次加载后缓存在客户端,您可以通过将值拆分为基于上下文加载的单独文件来提高加载效率:例如用于公共操作的小型库、登录后的附加库等。

        3
  •  1
  •   friol    16 年前

    你要找的似乎是 AJAX (客户端和服务器使用JavaScript交换异步请求)。

    如果你在寻找现成的东西,在 Google Translation AJAX APIs .

        4
  •  0
  •   regex    16 年前

    我从来没有亲自这样做过,但我的第一个猜测是参考第三方图书馆。我相信google-ajax-api可能只是一个工具,因为库是通过google的,所以javascript文件不会从你的站点下载。

    尝试在以下网站中挖掘一点: http://code.google.com/apis/ajaxlanguage/documentation/

    如果这对你有帮助,请告诉我。我可能对为我管理的网站实现类似的功能感兴趣。

    祝你好运, C

        5
  •  0
  •   dj_segfault    16 年前

    我喜欢皮姆·贾格尔的回答,我自己也这么做了。如果您不想让PHP为您生成javascript(例如,出于性能原因),您可以拥有javascript libs的主副本,当它们发生变化时,运行翻译程序为每种语言生成每个lib的版本。然后让PHP将当前用户的正确版本放入它发送的脚本标记中。

    我在一个系统上工作,这个系统需要为不同的客户进行大量的本地化和品牌推广。我们所做的是任何发送到屏幕的东西都有一个独特的宏,比如 [ 三千零二十七 ] (或者类似的东西)。然后我们有了一组区域设置和品牌文件,其中包含每个宏代码的条目,以及用于替换每个宏的文本。程序将遍历所有源文件和所有语言,并进行替换。

    我们发现我们还需要一些本地化功能,比如货币数量、日期、时间等,所有这些功能都工作得很好。

    我们发现我们需要一个更重要的东西:一个工具来检查所有的语言文件,确保它们都有所有必要的代码。节省时间。