使用Symfony2在JS文件中进行翻译 [英] Translations in JS files with Symfony2

查看:13
本文介绍了使用Symfony2在JS文件中进行翻译的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我当前正在开发一个应用程序,该应用程序将需要使用我的Java脚本中的翻译。

BazingaJsTranslationBundle包看起来不错,但在我尝试之后,我认为它不符合我的需求。它为我的应用程序的所有包生成所有翻译。加载起来可能会很重。

您知道其他的捆绑包或诀窍吗?

感谢您的帮助。

推荐答案

根据您的具体需求和环境,JSON格式的简单对象就可以成为足够好的词典。例如:

var dict = {
    TextIdWelcome : "Welcome",
    TextIdGoodBy : "Good by"
}

一个用法示例:

var elem = document.getElementById("WelcomeTag");
elem.innerHtml = dict["TextIdWelcome"];

您可以在您的服务器端为在客户端选择的实际语言生成这样的json对象,并可以通过您喜欢的方法(jQuery、XMLHttpRequest等)检索它,然后只需将其赋给这个dict变量。

如果您需要语句中包含依赖于运行时的值,那么一个简单的基本技巧可能会满足您的需要。让我们在翻译的文本中使用一些标记,如%0、%1等。

var dict = {
    TextIdWelcome : "Welcome %0",
    TextIdGoodBy : "Good by %0"
}

function tr(textId, runTimeValue1, runTimeValue2){
    var text = dict[textId];
    if(runTimeValue1 !== undefined)
        text = text.replace("%0", runTimeValue1);
    if(runTimeValue2 !== undefined)
        text = text.replace("%1", runTimeValue2);
    return text;
}

So一个用法示例:

var userName = "Jhon";
var elem = document.getElementById("WelcomeTag");
elem.innerHtml = tr("TextIdWelcome", userName);
请注意,该解决方案缺少几个改进的技巧(转义标记、可变数量的运行时值、高效的替换算法等),但在简单的日常情况下,这已经足够好了。这个技巧也非常简单(因此您可以根据需要轻松地增强它),并且您可以100%地控制它应该如何处理词典。当然,您可以控制何时以及将哪个字典加载到dict变量中。

这篇关于使用Symfony2在JS文件中进行翻译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆