2

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

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

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

有没有人不得不处理这个?如果是这样,您的解决方案是什么?

编辑:要清楚,我在这里指的不是“即时”翻译。翻译已经准备好并准备就绪,我只需要以有效的方式将它们提供给客户。

4

5 回答 5

11

从 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");
于 2009-01-02T18:00:23.477 回答
2

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

var messages = {
    "loading": "Chargement"
}

alert(messages.loading);

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

于 2009-01-04T06:49:50.083 回答
1

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

如果您正在寻找现成的东西,请在Google Translation AJAX APIs上一探究竟。

于 2009-01-02T18:02:18.433 回答
0

我从来没有亲自这样做过,但我的第一个猜测是参考第三方库。我相信 Google AJAX API 可能只有执行此操作的工具,并且由于该库是通过 Google 提供的,因此不会从您的站点下载 javascript 文件。

尝试浏览以下网站: http ://code.google.com/apis/ajaxlanguage/documentation/

让我知道这是否对您有帮助。我可能有兴趣为我管理的网站实施类似的东西。

祝你好运,C

于 2009-01-02T18:04:03.170 回答
0

我喜欢 Pim Jager 的回答,我自己也这样做了。如果您不想让 PHP 为您生成 JavaScript(例如,出于性能原因),您可以拥有 JavaScript 库的主副本,当它们发生更改时,运行翻译程序以生成每个库的版本对于每种语言。然后让 PHP 将当前用户的正确版本放入它发送的脚本标记中。

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

我们发现我们还需要一些用于本地化的函数,用于货币金额、日期、时间等。这一切都很好。

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

于 2009-01-03T22:04:13.607 回答