Dinamik bir site bölgeselleştirmelerini işlemek nasıl?

5 Cevap php

Ben tüm İngilizce şu anda bir web sitesi var. Bu bir online oyundur, bu nedenle bir veritabanında statik metin ile farklı sayfaları bir grup, hem de içerik bir yeri vardır.

Ben daha çok küresel genişletmek için çalışıyorum ve sitenin bazı bölgeselleştirmelerini serbest kadar dişli duyuyorum. Ancak, kullanıcılar aynı zamanda kullanmak için beni yönetmek için kolay olması ve kolay olacak ki bu kurma hakkında gitmek için en iyi yolu hakkında emin değilim.

Ben bir veritabanında çevrilmiş metinleri depolamak olmalı, yoksa bu tamamen farklı bir şekilde yapılmalıdır? O tüm konularda, site PHP ile yazılmış ve MySQL kullanır.

5 Cevap

Benim durumumda elle tüm çeviriler yaparak gerçek bir kabus olabilir! -%)

i navigasyon menüsü ve diğer tüm kullanıcı profil ayarları, ve site ve bunun gibi şeyler etrafında düğmeler gibi Pano komut sitesine çeviri odaklanmak gerektiğini düşünüyorum!

sayfalarınıza içine dahil ederek bunu böyle dosyası:

  include "./includes/languages/english.php";

ex adlı bir dosyada:. english.php Bu eski sevgili gibi koydu

define('LAN_USER_LOGIN' , 'User Logged In');
define('LAN_USER_LOGOUT' , 'User Logged Out');
.....

and so on italian.php, spanish.php, french.php ect... and in each of this files have the same defined variables but translated!

o zaman kullanıcı Ülkeler listesinden seçti sağlayabilirsiniz! btw Bunu yapmanın birçok yolu!

tek yönlü oturumu kullanarak olabilir

// if the user haven't selected a language before!!
if (empty($_SESSION['language'])) {
 $_SESSION['language'] = "EN";
} else {
$_SESSION['language'] = YOUR_LANG ;
}

Diğer tüm içerik için i araçları gibi kullanmanızı öneririz

http://code.google.com/intl/it-IT/apis/ajaxlanguage/


NOTE: i expecially çok rahatsız edici bir deneyim neden olabilir çünkü başka bir ülkeden siteyi izliyor eğer, otomatik tanıma sistemi kullanmak yok size tavsiye! ya da sadece seçti istediğiniz, kısaca kullanıcı son seçim edelim! ;-)

autocompletation kayıt amaçlı otomatik tanıma kullanın! ;-)

bu yardım umut!

Ben (bu çeviri ne dildir mağazalar sütun "dil" ile, bir MySQL veritabanı tablo olabilir) bir merkezi depolama kullanmak öneririm. Bu da XML dosyaları, dil başına bir dosya olabilir.

Hatta daha olası dosya biçimleri için arıyorsanız, bu dokümantasyon sayfasına bakabilirsiniz Zend Framework adlı: http://framework.zend.com/manual/en/zend.translate.adapter.html

Zaten çeviri içeren bir çerçeve kullanarak değilse çeviri için ben, özel bir işlev veya özel bir sınıf yaratacak ya.

Başka bir seçenek, standart PHP fonksiyonları kullanmaktır. Sadece "_ ()" fonksiyonu için bak. Ama bu işlevleri ile çalıştı değil ve sadece ne kadar iyi çalıştıklarını emin, değil onları bulduk.

Ben (örneğin Zend) entegre bir çerçeve ile gettext kullanarak. Po dosya biçiminde saklanması tavsiye ederim. . Po biçimi oldukça çeviri işi yapmak editörleri vardır. Bu da oldukça taşınabilir bulunuyor (dolayısıyla adı) ve diğer oyunlar üzerine sizinle hareket olabilir.

Biz Zend framework ile karma bir yaklaşım kullanın. Sayfa içeriği (WYSIWYG sayfa) (tek bir kayıt dil başına, lokalize olmayan veri lokalize veri ayrılır ve bağlantılı farklı tablolarda depolanır) DB depolanır, ancak alan etiketleri ve standart hata / geribildirim mesajları XML veya depolandığı dosyaları (dil başına bir dosya) gettext.

Biz karışık bir yaklaşım kullanın:

  • CMS sayfaları çeviriler için Veritabanı
  • Kelime / cümle çeviri (statik metinler, etiket, hata mesajları, vb) için XML

Ana içeriğe, diğer form çeviriler için 1, bu yüzden çeviri mevcut değilse ne seçebilirsiniz: veritabanı için biz generaly 2 tabloları kullanmak orijinal dilinde ekran içerik veya gizlemek.

XML için, biz kolayca birçok çerçeveler ve yazılımlar tarafından desteklenen olabilir XLIFF formatını kullanın