2010-09-21 34 views
10

Tôi hiện đang nghiên cứu các phương pháp tốt nhất để tích hợp i18n vào các dự án. Có một số phương pháp tôi đã nghĩ đến việc này, đầu tiên là một lược đồ cơ sở dữ liệu để lưu trữ các chuỗi và ngôn ngữ có liên quan, nhưng vấn đề với điều này là nó sẽ không dễ dàng để chọn các chuỗi, bởi vì tôi sẽ không thích để thực hiện quesries như vậy:Quốc tế hóa trong PHP

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

Hoặc

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

phương pháp tiếp theo sẽ là lưu trữ chúng trong các file như locales/en_gb/login/strings.php và sau đó cố gắng và truy cập chúng qua một lớp học phát triển đặc biệt như vậy:

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

Vấn đề với điều này là tôi sẽ phải xây dựng một hệ thống cập nhật các tệp này qua phù thủy quản trị rất tốn thời gian, không chỉ xây dựng hệ thống quản lý chuỗi mà thực sự quản lý chuỗi trang web phát triển

  • gì các phương pháp khác đang có mà sẽ có lợi cho một hệ thống lớn
  • có cách nào tự động để làm 'dịch' như vậy
  • tôi có nên gắn bó với một phương pháp cơ sở dữ liệu và xây dựng một hệ thống để người dùng dịch ngs với đánh giá/đề nghị phiên bản tốt hơn?
  • Bạn đã thử những hệ thống nào trong quá khứ và tôi có nên xem chúng hoặc tránh chúng hoàn toàn không.
+0

Bạn đã thử gettext() chưa? – fabrik

+0

Bạn đã làm gì? Tôi đang gặp vấn đề tương tự. – Sunny

Trả lời

8

Ngoài gettext đã đề cập, PHP 5.3 has native Internationalization support

Nếu đó không phải là một lựa chọn, xem xét sử dụng Zend_Translate, Zend_Locale và liên quan các thành phần của Zend Framework cho điều đó. Zend_Translate hỗ trợ một số bộ điều hợp, bao gồm nhưng không giới hạn đối với các mảng đơn giản, gettext, XmlTm và các bộ điều hợp khác.

+0

+1 Dành cho Zend_Translate. – wimvds

2

Hãy xem thư viện Gettext (http://php.net/manual/en/book.gettext.php).

Không đặt văn bản của bạn vào cơ sở dữ liệu. Điều đó sẽ làm cho cuộc sống khó khăn hơn trong nhóm dịch thuật.

5

Tôi đã triển khai tiện ích dịch thuật XML như một phần của dự án lớn hơn. Bạn có thể tìm thấy nó here và một tệp bản dịch mẫu là here (en_US).

+0

nó có UnitTests không? – Gordon

+1

Chúng chưa được đính kèm. Dự án này tương đối mới, vì vậy tôi đang trong quá trình xây dựng khung. UnitTests sẽ đến trong vài ngày tới. – halfdan

+0

Tuyệt vời, tôi thích hình thành XML hơn là sau đó sử dụng những thứ như Mảng/đối tượng, làm cho chiều sâu đơn giản hơn :) +1 – RobertPitt

4

Phương pháp ấn tượng nhất để nghiên cứu là triển khai của Drupal. Thứ hai tốt nhất, sẽ là Wordpress. Cả hai đều sử dụng gettext và .pot/.po/.mo để bản địa hóa. Và, điều tốt là có một trình soạn thảo .po nguồn mở tuyệt đẹp được gọi là Poedit. Nó có sẵn cho người dùng Windows System, mang đến sự hấp dẫn rộng hơn. Nó cũng có sẵn cho Mac và Linux. Hãy khám phá tại đây: http://www.poedit.net/

Các vấn đề liên quan