2012-01-30 149 views
-1

我遇到了使用我的语言文件的问题。如何使用JavaScript字符串对象

目前,我有一个语言文件,其中我有一个像

var strings { 
    title: "Title", 
    subtitle: "Subtitle" 
}; 

在我目前的HTML对象,我有一些像

<div id="title">Title</div> 
<div id="subtitle">Subtitle</div> 

现在我想在div里面包括来自JavaScript对象的值,以便我可以使用各种语言文件。相关的语言文件是由php脚本在后端选择的,在这里不是问题。

<div id="title">strings.title</div> 
<div id="subtitle">strings.subtitle</div> 

是否有一个简单的方法来做到这一点?我不想每次都必须使用php来创建必要的js文件,或者使用一个jquery循环来创建每个div值,尽管现在看起来这就是我必须做的。

感谢

+2

我认为你必须提供一个更完整的例子。你如何存储不同的语言信息?你如何将它们与你的HTML结合起来?你怎么知道哪个div必须包含哪个值?它看起来像我想你想要一个具有国际化支持的模板引擎。 – 2012-01-31 00:02:40

+0

@FelixKling谢谢我更新了这个问题。我敢肯定,如果我能尽可能避免使用模板引擎,我不需要模板引擎。 – saccharine 2012-01-31 01:49:09

回答

1

HTML

<div id="title">strings.title</div> 
<div id="subtitle">strings.subtitle</div> 

JS

// this is what you get from the language file 
var LanguageStorage = { 
    strings: { 
    title: "Title", 
    subtitle: "Subtitle" 
    } 
} 


// function for replace language 
function placeLanguageFor(selector) { 
    var thiz = $(selector); 
    var lidArray = thiz.text().split("\."); 
    thiz.text(LanguageStorage[lidArray[0]][lidArray[1]]); 
} 

// show text based on language 
placeLanguageFor("#title"); 
placeLanguageFor("#subtitle"); 

这里是你的代码http://jsfiddle.net/hq86p/

+0

感谢您的帮助。我最终决定,最好的办法是给需要翻译的字符串添加一个标识符,不管是作为一个类还是作为一个单独的属性,然后运行一个类似于你展示给我的脚本。 – saccharine 2012-01-31 03:13:17

1

假设你有这样的:

<script> 
    var myJSVar = 'Hello, World!'; 
</script> 

,你可以直接将它输出:

<script> 
    document.write('<div>' + myJSVar + '</div>'); 
</script> 

你可以将它连接到BOM:

<script> 
    var div = document.createElement('div'); 
    div.innerHTML = myJSVar; 
    document.getElementsByName('body')[0].appendChild(div); 
</script> 

你可以填充th基于一个身份证电子DIV:

<div id="foo"></div> 

<script> 
    document.getElementById('foo').innerHTML = myJSVar; 
</script> 

或任何其他多种选择。这真的取决于你要做什么,虽然现在你很模糊。

+0

我真的不想使用document.write,并且我发布了这个问题,因为我想避免基于id填充div,或者尽可能将其附加到BOM中。我更新了我的问题,以更好地解释我在找什么。我希望某种功能可以让我在div标签内打印一个变量的值。 – saccharine 2012-01-31 01:51:49

+0

'for(var s in strings){var el = document.getElementById(s); if(el)el.innerHTML = strings [s]; ''?然后只要确保每个元素都使用在'strings'对象中找到的属性来标识。 – 2012-01-31 01:54:06

+0

顺便说一句,这里是[示例](http://jsfiddle.net/FHYmL/) – 2012-01-31 01:59:57

相关问题