2010-04-30 33 views
12

Tôi hiện đang làm việc với một ứng dụng dựa trên mã lệnh PHP và đã đến thời điểm sắp sửa sử dụng nhiều ngôn ngữ.Cách hiệu quả nhất khi làm việc với nhiều ngôn ngữ tự nhiên

Người viết mã có sở hữu lớp ngôn ngữ hiệu quả nhất để xử lý ngôn ngữ không? Có bất kỳ công cụ/thư viện ngôn ngữ cụ thể nào thường được sử dụng trong các ứng dụng PHP không?

Cảm ơn!

Trả lời

12

Tôi chưa từng sử dụng CI_Language nhưng có vẻ như sử dụng mảng ngôn ngữ để thực hiện bản dịch.

dụ Quá đơn giản của phương pháp loại này:

$trans = array(
    'MAIN_TITLE' => 'Title Here' 
); 

echo $trans['MAIN_TITLE']; 

Cá nhân tôi thấy điều này thực sự gây phiền nhiễu bởi vì bạn đang chỉnh sửa sau đó xem có lộn xộn với những cái tên quan trọng mảng thay vì văn bản hữu ích. Mà có thể khá khó chịu ở lần. Chưa kể bạn phải nhớ những khóa nào tương quan với chuỗi nào nếu bạn đang sử dụng chúng ở nhiều nơi.

Tôi sử dụng Gettext mà tôi thấy dễ dàng hơn nhiều. Bạn chỉ cần quấn dây của mình bằng phương thức dịch: _(). Sau đó, khi bạn đã hoàn tất với ứng dụng của mình, bạn mở PoEdit và tạo tệp ngôn ngữ mới. PoEdit sẽ phân tích tất cả các tệp nguồn của tôi tìm kiếm các chuỗi được bọc như thế này <?php echo _('Title here') ?> và chèn chúng vào tệp ngôn ngữ .po. Sau đó bạn có thể đi chuỗi theo chuỗi và dịch văn bản dễ dàng trong PoEdit. Lợi ích của việc này là bạn có bản dịch nguồn ngay trong PoEdit, thay vì tên khóa mảng vô nghĩa trong một số bao gồm tệp

Điều này làm cho cuộc sống của tôi dễ dàng hơn nhiều để cập nhật tệp ngôn ngữ của tôi vào thứ Sáu hàng tuần . Mọi bản dịch mới hoặc sửa đổi sẽ tự động được thêm vào tệp ngôn ngữ của tôi và mọi bản dịch chưa sử dụng sẽ tự động bị xóa. Tôi gửi các tệp đến 3 chi nhánh quốc tế của tôi để dịch và các thay đổi của tôi cũng như các tệp ngôn ngữ được cập nhật sẵn sàng được triển khai vào sáng thứ Hai

+0

Cảm ơn câu trả lời của bạn, Mark. Rất được đánh giá cao. Cách tiếp cận của bạn bằng cách sử dụng gettext là thú vị! Tôi đang suy nghĩ về làm khá nhiều như nhau, nhưng một phiên bản cơ sở dữ liệu mà sẽ được lưu trữ rất nhiều và thay vào đó được cập nhật theo yêu cầu. – Industrial

+0

Thật sự rất hay khi xem các ví dụ khác về các cách tiếp cận khác nhau cho vấn đề này, không nói rằng giải pháp của bạn là xấu! – Industrial

+1

Bạn có thể tải xuống ZF và kiểm tra các bộ điều hợp khác nhau cho Zend_Translate: http://framework.zend.com/manual/en/zend.translate.adapter.html để biết thêm một số ý tưởng. Họ khá nhiều bao gồm tất cả các phương pháp phổ biến nội địa hóa – Mark

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