Nasıl rakamları lokalize?

2 Cevap php

Tamam, ben çıkış numaraları matematiksel denklemler kullanıyorum, ama, ben bu tüm diller için uyumlu olması gerekir. Şu anda, tüm dil dizeleri $txt adında bir php dizi içinde olan ve dizinin her anahtar o dil için çağrılır. Aşağıdaki çıkış ediyorum: Column 1, Column 2, Column 3, ve böylece, hem de Row 1, {[(5 )]}, Row 3, ve böyle devam eder. Hesaplamalar php ve javascript ile yapılır, bu yüzden sadece sayılar için tüm dilleri desteklemek için nasıl en iyi yaklaşım merak ediyorum.

Ben çeviri yapmıyorum, başkası yok, ama hesaplamalar javascript ile yapılır beri php değişken $ dil tanımlanır nerede txt veya, ya, işaret etmek gerekiyor da, ben gerek Bir şekilde orada bu saklayın. Ben böyle bir şey saklamak düşünüyorum:

// 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>';

Ve javascript fonksiyonu daha çok gibi, her sayı için doğru dize kapmak olabilir:

// 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;

Bu kod ile biraz sorun bu grupların numaraları değil, emin tüm diller yaparsak ... ingilizce yaptığı gibi, değil mi?

Belki de bunun için daha iyi bir yaklaşım var? Kimse lütfen yardımcı olabilir misiniz?

Teşekkürler :)

2 Cevap

Numaraları düzgün yerini belirlemek için, çok daha karmaşık mantığı gerekir. Yapmanız gereken kabaca ne hızlı bir örnek:

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 -> 三百二十一

        ...

    }
}

En batı kültürleri için yapılacak pek bir şey yok, sadece bazı bin ayırıcı ve tersine ondalık nokta var. Eğer Arapça olmayan rakamları içine numaraları çevirmek istiyorsanız, o zaman kendi mantığını uygulamak (veya mevcut kütüphaneler için etrafına bakmak), hedef sayısal sistemin nasıl çalıştığını öğrenmek.

Ayrıca Japon (örneğin Çin ödünç) "kendi rakamları" olmasına rağmen, bu gün genellikle Arapça numaraları tercih unutmayın. Bu bağlamda bağlıdır ve size rağmen iletmek istiyorum ne görüntü, bazen Çin rakamları daha iyi bir seçimdir. Bu ilk anlamanız gereken katılan kültürünün bir sürü var olduğunu söylemek için gider.

Php / Js iletişim için, sadece json kullanın:

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