2008-11-20 12 views
6

Tôi có toàn bộ mô hình MVC được thiết lập và sử dụng chế độ xem HTML làm mẫu. Nhưng tôi có chuỗi tiếng Đức ở đó mà tôi muốn dịch sang các ngôn ngữ khác tại một thời điểm nào đó.Nơi sử dụng công cụ dịch Zend Framework

Cách tốt nhất để làm điều này là gì? Tôi biết tôi phải sử dụng Zend_Translate, nhưng tôi có phải thực hiện một cuộc gọi duy nhất đến một chức năng dịch cho mỗi từ mà tôi có trong các mẫu xem của tôi không?

Trả lời

12

Trước hết, tôi khuyên bạn nên sử dụng cụm từ hoàn chỉnh làm cơ sở cho bản dịch của bạn. Với những từ bạn luôn có vấn đề là ngôn ngữ không nhất quán khi nói đến cấu trúc câu.

Sau đó, bạn phải chọn một trong các bộ điều hợp Zend_Transalate có sẵn: Mảng, Csv, Gettext, Ini, Tbx, Tmx, Qt, Xliff hoặc XmlTm. Hầu hết trong số đó là bộ điều hợp cho các tiêu chuẩn công nghiệp để lưu trữ thông tin dịch thuật, vì vậy nó có thể sẽ đủ nếu bạn chọn Array, Csv hoặc Ini để bắt đầu và để dễ sử dụng. Vui lòng xem 49.2.1. How to decide which translation adapter to use trong hướng dẫn sử dụng khung công tác Zend.

// setup your translation 
$translate = new Zend_Translate('csv', '/my/path/source-de.csv', 'de'); 
$translate->addTranslation('/my/path/source-en.csv', 'en'); 
// add the translation adapter to the registry 
Zend_Registry::set('Zend_Translate', $translate); 

Như có một Zend_View_Helper_Translate rằng truy cập chuẩn Zend_Registry nhập Zend_Translate là nguồn dịch mặc định, bạn có thể sử dụng sau đây trong quan điểm của bạn:

[...] 
<title><?php echo this->translate('Title'); ?></title> 
[...] 
<p>You can also do <?php echo $this->translate('Hello %1$s', $this->userName); ?></p> 
[...] 

Xin lưu ý rằng đây chỉ là một giới thiệu ngắn vào Zend_Translate và không có nghĩa là bản trình bày đầy đủ về chức năng được cung cấp bởi thành phần này. Ví dụ, có rất nhiều điều để nói về việc xác định miền địa phương mà bộ chuyển đổi bản dịch sẽ sử dụng.

tôi muốn đề nghị bạn đọc phần sau đây trong cuốn hướng dẫn Zend Framework, vì nội địa hóa có thể là một vấn đề phức tạp và Zend_Translate không thể được mô tả hoàn toàn bằng ở đây:

+0

Cảm ơn. Vì vậy, tôi luôn phải gọi $ this-> translate(). Cảm ơn bạn! –

1

Không, bạn không phải dịch từng từ. Ý tưởng dịch thuật theo nghĩa này là một ý tưởng dịch thuật thông điệp hơn.

Trong dự án hiện tại của mình, chúng tôi thực hiện hai loại bản dịch. Khi nó chỉ là một văn bản ngắn, chúng ta gõ trực tiếp vào mã nguồn cho mục đích dễ đọc.

I.E.

<?=$this->translate('Add');?> 
<?=$this->translate('Delete');?> 
<?=$this->translate('Are you sure you want to delete %1$s?', $thing);?> 

Nhưng nếu thông điệp là lâu hơn nữa, chúng ta thường làm theo một tiêu chuẩn để đánh dấu nó đối với hệ thống dịch:

<?=$this->translate('controller-action_form-information');?> 

Ý tưởng được rằng sau đó bạn có thể thay thế mà với một văn bản rất dài trong công cụ dịch thuật của bạn và nó giữ cho tập lệnh xem gọn gàng.