2012-04-06 27 views
5

Tôi sử dụng <?php echo __("this is my string"); ?> bên trong quan điểm của mình để hiển thị văn bản bằng nhiều ngôn ngữ. Tôi tạo ra một thư mục .po-file cho Đức:CakePHP 2.1 .po tệp/bản dịch không hoạt động

=> app/Locale/ger/LC_MESSAGES/default.po

msgstr "đây là chuỗi của tôi"

msgstr "chết ist meine zeichenkette "

Khi tôi thêm Configure::write('Config.language','ger'); vào AppController.php beforeFilter, vẫn giữ nguyên văn bản" đây là chuỗi của tôi ". Ngay cả khi tôi tạo một .po cho tiếng Anh với một chuỗi khác, văn bản vẫn giữ nguyên.

Tôi có phải thay đổi cài đặt cụ thể để kích hoạt bản dịch không?


Tôi có một theo dõi vấn đề: Tôi thêm Configure::write('Config.language','eng'); để core.php để thiết lập ngôn ngữ mặc định của tôi nhưng bây giờ tôi không thể thay đổi giá trị, thậm chí nếu tôi cố gắng ghi đè lên nó trong AppController.php beforeFilter với:

Configure::write('Config.language', 'deu'); //'de' also doesn't work 
CakeSession::write('Config.language', 'deu'); //'de' also doesn't work 

Nếu tôi thay đổi giá trị trong core.php nó hoạt động hoàn toàn tốt đẹp nhưng một khi đặt trong core.php tôi không thể thay đổi nó.

giải quyết: ah, tôi quên thêm parent::beforeFilter(); vào bên trong hàm beforeFilter của tất cả các bộ điều khiển.


thông tin bổ sung:

  • Nếu bạn muốn xác định một ngôn ngữ mặc định (và bạn thường sẽ), thêm Configure::write('Config.language', 'eng'); đến core.php

Trả lời

8

Bạn có thể nhìn vào file lib/Bánh/i18n/L10n.php, biết làm thế nào để gọi từng ngôn ngữ.

cài đặt cho Đức:

Configure::write('Config.language','de'); 

=> app/Locale/deu/LC_MESSAGES/default.po

+0

Cảm ơn gợi ý với tệp L10n.php, tôi sẽ sử dụng nó để tham khảo trong tương lai. –

+0

cảm ơn, hãy nhìn vào cốt lõi của CakePhp, giúp tôi hiểu. –

6

của nó " deu "not" ger "

CakePHP sử dụng chính thức (T) c Odes từ http://www.loc.gov/standards/iso639-2/php/code_list.php, cho CakePHP 1.3 nó được ghi chép lại dưới Internationalizing Your Application:

Các mã miền địa phương ba nhân vật phù hợp với các tiêu chuẩn ISO 639-2, mặc dù nếu bạn tạo miền địa phương trong khu vực (en_US en_GB, vv) bánh sẽ sử dụng chúng nếu thích hợp.

ISO 639-2 | ISO 639-1 | English name | French name | German name | 
Code  | Code  | of Language | of Language | of Language | 
------------------------------------------------------------------- 
ger (B) |   |    |    |    | 
deu (T) | de  | German  | allemand | Deutsch  | 
+1

Ah, bây giờ nó hoạt động.Không rõ ràng với tôi rằng tôi phải sử dụng "T" giá trị từ các tập tin, quá xấu mà điều này không được đề cập trong tài liệu như tôi nghĩ rằng rất nhiều người dùng CakePHP khác có thể không biết điều đó. –

+0

Cảm ơn câu trả lời của bạn! Tôi chỉ có thể đánh dấu một câu trả lời chính xác, tôi đã lấy một câu trả lời của del_dan vì tham chiếu đến tệp L10n. –

+1

không sao cả. đối với tài liệu hướng dẫn: bạn có thể tham gia bằng cách đẩy tới đại diện github: https://github.com/cakephp/docs - để bạn có thể đưa thông tin còn thiếu vào. – mark

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