v2.5.2
Giriş yap

Php çoklu dil ile ilgili beyin fırtınası

fire
563 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Selam arkadaşlar bir CRM yazıyorum ve bu sisteme çoklu dil eklemek istiyorum
Anca CRMde fazlasıyla statik yazı olduğu için diziler ile çoklu dil bir yere kadar gidiyor.
Json ile yapsam eklenen her özellik yeni statik yazı anlamına geliyor belli bir süre sonra dosya boyutu büyüdükçe büyür
MYSQL ile düşündüm ancak her sayfada sorgu göndermek performansı etkiler.
CRM yazılımını anlık 100 kişi kullanıyor.

Sizce en mantıklı yol hangisidir. Gettext diye düşündüm ondada dosya mevzusu var. Wordpressi inceledim hep po dosyaları var hem json dosyaları (büyük ihtimal cache dosyaları)

tayfunerbilen
971 gün önce

lang/tr.php lang/en.php olarak tutup geriye array dönersin.

// lang/en.php

return [
    'Merhaba Dünya' => 'Hello World',
    'Toplam %s İçerik Bulundu' => '%s Content Found'
];

Kullanırkende aslında bir fonksiyondan geçireceksin. Öncelikle mevcut dilin dosyasını yükletmen lazım.

// config.php gibi bir dosyan olduğunu varsayalım

$langKy = $_SESSION['lang'] ?? 'en'; // sessionda dil tanımsız ise varsayılan 'en' olarak ayarladım ben
$lang = file_get_contents(__DIR__ . '/lang/' . $langKey . '.php');

şimdi bir fonksiyon yazalım örneğin adı __() olabilir. Ve global olarak içine $lang değerini alıp gelen text varsa translate halini yoksa textin kendisini döndürelim.

function __($key) {
    global $lang;
    return $lang[$key] ?? $key;
}

artık kullanırkende şöyle kullanacağız.

// view örneği

<p>
    <?=__('Merhaba Dünya')?>
</p>
<p>
    <?=sprintf(__('Toplam %s İçerik Bulundu'), 3)?>
</p>

artık dilin ingilizce ise bu arkadaşları ingilizce görmen gerek. Dosyanın boyutu gözünü korkutmasın yormaz seni o kadar.