如何定位数字?

时间:2010-05-20 05:23:49

标签: php javascript localization numbers

好的,我正在使用数学方程来输出数字,但是,我需要这个兼容所有语言。目前,所有语言字符串都在名为$txt的php数组中,并且为该语言调用数组的每个键。我输出的内容如下:Column 1Column 2Column 3等,以及Row 1Row 2Row 3,等等。计算是通过php和javascript完成的,所以我想知道如何仅为数字支持所有语言的最佳方法。

我不做翻译,其他人做,但我需要能够指向它,或者定义语言的php变量$ txt,或者,因为计算也是通过javascript完成的,我需要以某种方式将它存储在那里。我正在考虑存储这样的东西:

// This part goes in the php language file.
$txt['0'] = '0';
$txt['1'] = '1';
$txt['2'] = '2';
$txt['2'] = '3';
$txt['4'] = '4';
$txt['5'] = '5';
$txt['6'] = '6';
$txt['7'] = '7';
$txt['8'] = '8';
$txt['9'] = '9';

// This part goes in the php file that needs to call the numbers.
echo '<script>
    var numtxts = new Array();
    numtxts[0] = \'', $txt['0'], '\';
    numtxts[1] = \'', $txt['1'], '\';
    numtxts[2] = \'', $txt['2'], '\';
    numtxts[3] = \'', $txt['3'], '\';
    numtxts[4] = \'', $txt['4'], '\';
    numtxts[5] = \'', $txt['5'], '\';
    numtxts[6] = \'', $txt['6'], '\';
    numtxts[7] = \'', $txt['7'], '\';
    numtxts[8] = \'', $txt['8'], '\';
    numtxts[9] = \'', $txt['9'], '\';
</script>';

而且在javascript函数中,它可以为每个数字获取正确的字符串,如下所示:

// Example Number String below.
var numString = "10";
var transNum = "";

for(x=0;x<numString.length;x++)
{
    var numChar = numString.charAt(x);
    transNum += numtxts[parseInt(numChar)];
}

return transNum;

这段代码的问题在于它对数字进行分组,不确定是否所有语言都这样做,就像英语一样......?

也许有更好的方法呢?有人可以帮忙吗?

谢谢:)

3 个答案:

答案 0 :(得分:4)

要正确本地化数字,您需要更复杂的逻辑。大致说明您需要做的一个简单示例:

function localizeNumber($num, $lang) {
    switch ($lang) {

        case 'eng':
        case ...
            return number_format($num, 0);

        case 'deu':
        case ...
            return number_format($num, 0, ',', '.');

        case 'jpn':
            // TODO: learn about Kanji numerals and implement custom logic
            // Example: 3000 -> 三千, 30000 -> 三万, 321 -> 三百二十一

        ...

    }
}

对于大多数西方文化来说,没什么可做的,只有一些有千位分隔符和小数点反转。如果要将数字转换为非阿拉伯数字,请了解目标数字系统的工作原理,然后实现自己的逻辑(或环顾现有的库)。

另请注意,虽然日语例如有“他们自己的数字”(借用中文),但现在他们通常更喜欢阿拉伯数字。这取决于背景和你想传达的图像,有时中国数字是更好的选择。这就是说,你需要先了解一大堆文化。

答案 1 :(得分:1)

对于Php / Js通信,只需使用json:

echo "var jsArray = " + json_encode($phpArray);

答案 2 :(得分:1)

相关问题