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

Javascript和翻译

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

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

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

    我希望在客户端有类似的东西。我突然想到,javascript包含只是一组翻译后的常量,但每次页面加载都会下载一个潜在的大文件,其中大部分是不必要的。

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

    编辑 :需要明确的是,我在这里不是指“即时”翻译。翻译已经准备好了,可以开始了,我只需要以有效的方式将它们提供给客户。

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

    从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    17 年前

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

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

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

        3
  •  1
  •   friol    17 年前

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

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

        4
  •  0
  •   regex    17 年前

    我个人从来没有这样做过,但我的第一个猜测是参考第三方图书馆。我相信Google AJAX API可能有这样的工具,而且由于库是通过Google的,javascript文件将不会从您的网站下载。

    试着在以下网站上挖掘一下: http://code.google.com/apis/ajaxlanguage/documentation/

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

    祝你好运, C

        5
  •  0
  •   dj_segfault    17 年前

    我喜欢皮姆·贾格尔的回答,我自己也做过。如果你不想让PHP为你生成JavaScript(比如,出于性能原因),你可以有一个JavaScript库的主副本,当它们发生变化时,运行一个翻译程序为每种语言生成每个库的版本。然后,让PHP在它发送的脚本标记中为当前用户放置正确的版本。

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

    我们发现我们还需要一些本地化功能,如货币金额、日期、时间等。一切都很顺利。

    我们发现我们还需要一件更重要的事情:一个工具来浏览所有的语言文件,并确保它们都有所有必要的代码。节省大量时间。