php - 如何本地化数字?

标签 php javascript localization numbers

好的,我正在使用数学方程来输出数字,不过,我需要它兼容所有语言。目前,所有语言字符串都在一个名为 $txt 的 php 数组中,并且该数组的每个键都会为该语言调用。我正在输出以下内容:Column 1Column 2Column 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/

相关文章:

iphone - 如何纠正在 en.lproj 文件夹中创建 lproj 文件夹的 Xcode 错误?

php - Html 外文字符编码

php - RGBA格式HEX转RGB格式HEX? PHP

php - 在 PHP 中使用 IMAP 知道电子邮件是否是回复

php - 如何在 WooCommerce 中获取所有订单状态的 slug 和名称?

javascript - 如何在纯javascript中检查鼠标是否进入iframe?

ios - iOS Storyboard是否具有相当于工具 :text in android? 的功能

javascript - PHP 的 `hex2bin` 的 Node.js/JS 实现返回错误结果。如何得到相同的结果?

javascript - 应用阴影的最佳方式是什么?

javascript 中断标签显示语法错误