好的,我正在使用数学方程来输出数字,不过,我需要它兼容所有语言。目前,所有语言字符串都在一个名为 $txt
的 php 数组中,并且该数组的每个键都会为该语言调用。我正在输出以下内容:Column 1
、Column 2
、Column 3
等等,以及Row 1
、第 2 行
、第 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;
这段代码的问题在于它对数字进行了分组,不确定是否所有语言都这样做,就像英语一样...?
也许对此有更好的方法?有人可以帮忙吗?
谢谢:)
最佳答案
要正确定位数字,您需要更复杂的逻辑。粗略说明您需要做什么的简单示例:
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 -> 三百二十一
...
}
}
对于大多数西方文化来说,没什么可做的,只是有些有千位分隔符和小数点颠倒了。如果您想将数字转换为非阿拉伯数字,请了解目标数字系统的工作原理,然后实现您自己的逻辑(或四处寻找现有库)。
另请注意,虽然日本人有“他们自己的数字”(从中国人那里借来的),但如今他们通常更喜欢阿拉伯数字。这取决于上下文和你想要传达的图像,但有时中文数字是更好的选择。这就是说,您首先需要了解其中涉及的大量文化。
关于php - 如何本地化数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871195/