好的,我正在使用数学方程来输出数字,但是,我需要这个兼容所有语言。目前,所有语言字符串都在名为$txt
的php数组中,并且为该语言调用数组的每个键。我输出的内容如下:Column 1
,Column 2
,Column 3
等,以及Row 1
,Row 2
,Row 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;
这段代码的问题在于它对数字进行分组,不确定是否所有语言都这样做,就像英语一样......?
也许有更好的方法呢?有人可以帮忙吗?
谢谢:)
答案 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)
PHP NumberFormatter很好用 http://php.net/manual/en/class.numberformatter.php