2012-05-30 53 views
0

我試圖用簡單的Javascript(而不是JQuery)使用多語言文本計算器,因爲這是爲了幫助修改過去的單頁文件。我有一個很好的去做,並創建了一個基於兩種語言 - 英語和法語工作的版本,但不是沒有缺陷。使用Javascript的多語言文本計算器

我該如何去爲每種語言創建一個二維數組?因此,舉例來說,如果我想要做的:

myEnglishArray = ["one", 1]; 

myEnglishArray = ["one", "1"]; 

我甚至不知道如果多數民衆贊成正確與否,但我基本上需要1到到10英語和同用法語將每個數字從文本意義上(即「一」)映射到整數意義上的數字。我當然可以使用parseInt()在一個字符串中轉換一個數字(即「1」);

任何幫助都會很棒!

回答

0
var dictionary = 
    [["one", "uno"], 
    ["two", "dos"], 
    ["three", "tres"]]; 

dictionary[0][0]; //"one" 
dictionary[0][1]; //"uno" 

在這裏你只需要創建1個變量包含3個信息在一個時間(數字,英語,西班牙語)。而且,您還可以在西班牙語後輕鬆添加更多語言!

DEMO:http://jsfiddle.net/DerekL/5fhTw/

+0

這就是所有偉大的信息,歡呼傢伙!我仍然有一個輕微的問題,在輸入字段中匹配什麼與數組中的值有關,計算器需要將輸入字段1和輸入字段2相加,並將它們相加在一起以在輸入字段3中創建結果。 我的例子會匹配輸入字段1,它可能是「1」與數組中的值,然後將其轉換爲也是數組一部分的整數值。如果我沒有太大的意義,那麼去 [「one」,「un」,「uno」,1] 等等的原始答案。 – GeordieDave1980

+0

我還應該指出,計算器將知道它是基於哪一種語言從單選按鈕組中選擇的。 – GeordieDave1980

0

我會寫這樣的:

var myArray = { 
    "english": { "one": 1, "two": 2, "three": 3, "four": 4, ... }, 
    "spanish": { "uno": 1, "dos": 2, "tres": 3, "quattro": 4, ... }, 
    ... 
}; 

這樣,你可以通過名稱來訪問每個陣列:

console.log(myArray.english["one"]); // 1 
console.log(myArray.spanish["uno"]); // 1 

和循環使用,通過該號碼

for (var num in myArray.spanish) { 
    console.log(num + " = " + myArray.spanish[num]); // "uno" = 1, etc 
} 
+1

我會做這種方式,但我會切換鍵和值。使關鍵數字,和值本地化的字符串。我就是這麼做的。這樣你可以說myArray.english [1]獲得「一個」。 – frosty

+0

好的答案,除了我同意@aaronfrost鍵和值應該顛倒。然而,值得注意的是,你最終的循環遍歷數字不能保證任何特定的順序,因爲[這個MDN頁面](https://developer.mozilla.org/en/JavaScript/Reference/Statements/for .. .in)描述。例如,很可能在「uno = 1」之前記錄「dos = 2」。 –

+0

@aaronfrost這實際上是我最初寫的,但是在重新閱讀Op的問題後改變了它。似乎需要根據本地化的字符串查找數字。 – McGarnagle