ne "çok dilli" inşa etmek için en iyi yöntem

7 Cevap php

I am building a website and it need to be in 7 languages? I was wondering if there is a good practice can be applied to get multilingual php script?

  • Benim için kolay
  • Çevirmenler için kolay

Ayrıca sen ne düşünüyorsun, ben DB, XML veya PHP dosyasında saklayın gerekir?

7 Cevap

Çevirilerini depolamak için bol seçenek vardır:

  • TMX: çeviriler için nispeten yeni XML formatı. Popülerlik kazanıyor gibi görünüyor.
  • Gettext çeviriler için başka bir açık biçimidir. Uzun süre de-facto standart olmuştur.
  • ini dosyaları - düzenlemek çok kolay, çok basit biçimi
  • PHP dosyaları (diziler) - PHP programcıları için düzenlemek kolay, iyi bir performans
  • CSV formatında - kullanımı oldukça basit.

Ben birden adaptörleri destekler ve uygulama çeviriler gömme için temel bir yaklaşım sağlar Zend_Translate gibi bir şey kullanmak öneririm.

PHP gettext kullanarak karşı tavsiye ederim daddz aksine:

  • Yerel ayarı işlem başına olduğunu. Bu, bir iş parçacığı setlocale çağıran, bir çok iş parçacıklı apache veya işlem başka okuyuculu webserver çalışan PHP ile çalışırken, diğer konuları etkileyeceği anlamına gelir.

    Eğer iplik / işlem hangi isteğini ele hangi bilemeyiz, kullanıcıların zaman zaman yanlış yerel alma ile korkunç sorunlar koşacağız.

  • PHP ayarlanan yerel printf ya da strtotime gibi fonksiyonları üzerine etkisi vardır. Eğer gettext / setlocale ile çalışıyorsanız kesinlikle arka uç kod gelen "garip" bir numara formatları biraz alacak

Eran tarafından kaplı diğer çözümlerden birini ya da hızlı bir şekilde kendinizi (PHP diziler çok güzel iş) bir şey kullanın. Ayrıca numarası ve tarih biçimlendirme ve harmanlama için çekirdek PHP 5.3 olacak intl-uzantısını kullanabilirsiniz.

Ve üzerinde web tabanlı bir çözüm üzerinde gettext kullanarak oldukça solucanlar meşhur kutu açma gibi olduğunu kanıtladı.

Ben önermek Gettext. Istiyorum

Bu çapraz-platform, açık kaynak, yaygın olarak kullanılan ve php için mevcut bulunuyor: PHP Gettext

Ben çok dilli CMS inşa etmişlerdir. Tüm içerik ortak (değil dil belirli değerler) ve dil özel içerik için ayrı ayrı tablolar için ana tablo ile, bir veritabanında saklanır oldu.

Örneğin, bize ürünlerin depolanması düşünelim - Biz bir 'ürün' tablo (yarattı unique_id, tarih, resim adresler vs vs içeren) ve 'product_local' tablosu (herhangi bir dil özel alanları içeren) var.

Bu yöntemi kullanarak bu içeriği korumak için çok kolaydır.

I gettext hiçbir deneyimi böylece konu hakkında hiçbir yorum var, ama ben aşağıdaki yöntemleri kullanarak birkaç çok-dilli siteler inşa etmişlerdir:

METHOD 1

Ben etkili sadece, benim biçimi iyi olduğunu söyleyemem. Ben de diziyi kullandım. Içeriğinin depolandığı yere bağlı.

Örneğin, hangi metni tanımlayan endeksleri ile metin ilişkilendirilebilir bir dizi olacak:

$text['english']['welcome'] = "Welcome to my site. blah blah blah";
$text['english']['login'] = "Please enter your username and password to login";

Ve belki bir sabit veya değişken yapılandırma ile dili ayarlayın.

METHOD 2

Ben aynı yapılar ve arka uçları ile iki siteleri inşa ettik ama her biri farklı bir veritabanı kullanılır ve ayrı ayrı muhafaza edildi: data_french, data_english.

Sen konuya ilginç bir okuma bu yazıyı bulabilirsiniz:

http://cubicspot.blogspot.com/2011/12/cross-platform-multilingual-support-in.html

Eğer çok dilli şeyler sadece ihtiyacınız varsa bunu - - Yazar, "tembel programcı" stratejisini savunuyor ve IANA dil kodları ile PHP dizi yaklaşımı öneriyoruz görünüyor. Makale olsa tür muğlak.

Bu forumu kontrol edin. Sana birisi çeviri size yardımcı varsa, muhtemelen farklı bir yaklaşım gerekir diye düşünüyorum.

Most efficient approach for multilingual PHP website