我有一个PHP应用程序,它在客户端广泛使用Javascript。我在PHP方面有一个简单的系统,为翻译人员提供了一种提供新语言的简便方法。但是有些情况下javascript需要向用户显示语言元素(可能是OK或取消按钮或“加载”等)。
使用PHP,我只有一个缓存在服务器端的文本文件,其中一面包含短语代码,另一面包含翻译。翻译人员只需要用他们自己的语言替换英语,并将我翻译的翻译版本发送给应用程序。
我想在客户端做类似的事情。我想到有一个javascript包含只是一组已翻译的常量但随后每个页面加载都会下载一个可能很大的文件,其中大部分都是不必要的。
有没有人不得不处理这件事?如果是这样,你的解决方案是什么?
编辑:要明确,我不是指这里的“即时”翻译。翻译已经准备好并准备好了,我只需要它们以有效的方式提供给客户。
答案 0 :(得分:11)
如何从php提供javascript?所以不要起伏:
<script type='text/javascript' src='jsscript.js'></script>
DO
<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");
答案 1 :(得分:2)
我通常将相应的语言值作为JavaScript对象加载到我的其余代码可以引用的单独文件中:
var messages = {
"loading": "Chargement"
}
alert(messages.loading);
首次加载后,语言库将在客户端缓存,您可以通过将值拆分为基于上下文加载的单独文件来提高加载效率:一个用于公共运营的小型图书馆,一个登录后的额外图书馆等。
答案 2 :(得分:1)
您正在寻找的似乎是AJAX(客户端和服务器使用Javascript交换异步请求)。
如果您正在寻找现成的产品,请在Google Translation AJAX APIs处找到一个高峰。
答案 3 :(得分:0)
我从未亲自做过这件事,但我的第一个猜测是引用第三方库。我相信Google AJAX API可能只有这样做的工具,而且由于该库是通过Google进行的,因此不会从您的网站下载javascript文件。
尝试挖掘以下网站:http://code.google.com/apis/ajaxlanguage/documentation/
如果有帮助,请告诉我。我可能有兴趣为我管理的网站实施类似的东西。
祝你好运, ç答案 4 :(得分:0)
我喜欢Pim Jager的回答,并且自己做了。如果您不希望PHP为您生成JavaScript(例如,出于性能原因),您可以拥有JavaScript库的主副本,当它们发生更改时,运行转换程序以生成每个lib的版本对于每种语言。然后让PHP将当前用户的正确版本放在它发送的脚本标记中。
我致力于为不同客户提供重型本地化和重型品牌的系统。我们所做的是发送到屏幕的任何内容都有一个独特的宏,比如 [ 3027 ] (或类似的东西)。然后我们有一堆语言环境和品牌文件,每个宏代码都有条目,还有用来替换每个宏的文本。程序将循环遍历所有源文件和所有语言并进行替换。
我们发现我们还需要一些本地化功能,包括货币金额,日期,时间等。这一切都运作良好。
我们发现我们需要一个更重要的事情:一个工具来浏览所有语言文件并确保它们都具有所有必需的代码。节省大量时间。