2012-01-30 46 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

相關問題