2010-09-21 13 views
10

Obecnie poszukuję najlepszych metod integracji i18n w ramach projektów.Internacjonalizacja w PHP

Istnieje kilka metod, które myślałem o zrobieniu tego, po pierwsze jest to schemat bazy danych do przechowywania ciągów i odpowiednich ustawień narodowych, ale problem polega na tym, że nie byłoby łatwo wybrać struny, ponieważ nie chciałbym wykonać quesries tak:

SELECT text FROM locales WHERE locale = 'en_GB' AND text_id = 245543 

Or

SELECT text FROM locales WHERE locale = 'en_GB' AND text_primary = 'hello' 

Kolejnym sposobem byłoby przechowywać je w plikach, takich jak locales/en_gb/login/strings.php a następnie spróbuj i dostęp do nich za pośrednictwem klasy opracowanego specjalnie tak:

$Language = Registry::Construct('Language',array('en_GB')); 
echo $Language->login->strings->hello; 

Problem polega na tym, że będę musiał zbudować system, który będzie aktualizować te pliki poprzez czarownicę Panel administracyjny jest bardzo czasochłonne, a nie tylko budowanie systemu zarządzania sznurki ale faktycznie zarządzający struny jako strona rośnie

  • Jakie inne metody są tam, że będzie korzystne dla dużego systemu
  • Czy istnieje zautomatyzowany sposób to zrobić „Translation” jako taki
  • powinienem trzymać się metodą bazy danych i zbudować system dla użytkowników do tłumaczenia stri ngs z oceną/sugeruje lepszą wersję?
  • Jakie systemy próbowaliście w przeszłości? Powinienem je przejrzeć lub całkowicie ich unikać.
+0

Czy próbowałeś gettext()? – fabrik

+0

Co robiłeś w końcu? Mam podobny problem. – Sunny

Odpowiedz

5

Wdrożyłem narzędzie do tłumaczenia plików XML w ramach większego projektu. Możesz go znaleźć here, a przykładowy plik tłumaczenia to here (en_US).

+0

czy ma jednostki testowe? – Gordon

+1

Jeszcze się nie dogadują. Ten projekt jest stosunkowo nowy, więc jestem w trakcie budowania ram. Testy UnitTests nadchodzą w ciągu najbliższych kilku dni. – halfdan

+0

Wspaniale, uwielbiam formację XML, a nie używanie takich rzeczy jak tablice/obiekty, sprawia, że ​​głębia jest jeszcze prostsza :) +1 – RobertPitt

4

Najbardziej imponującą metodą badania jest wdrożenie Drupala. Drugi najlepszy, to Wordpress. Oba używają gettext i .pot/.po/.mo do lokalizacji. I dobrą rzeczą jest to, że istnieje piękny edytor Open Source .poed o nazwie Poedit. Jest dostępny dla użytkowników systemu Windows, co daje szersze odwołanie. Jest również dostępny dla systemów Mac i Linux. Sprawdź to tutaj: http://www.poedit.net/