Hệ thống gettext lặp lại chuỗi từ tập hợp các tệp nhị phân được tạo từ tệp văn bản nguồn có chứa bản dịch bằng các ngôn ngữ khác nhau cho cùng một câu.
Phím tra cứu là câu trong ngôn ngữ "cơ sở".
trong mã nguồn của bạn, bạn sẽ có một cái gì đó giống như
echo _("Hello, world!");
cho mỗi ngôn ngữ bạn sẽ có một tập tin văn bản tương ứng với phím và bản dịch (chú ý% s có thể được sử dụng với chức năng printf)
french
msgid "Hello, world!"
msgstr "Salut, monde!"
msgid "My name is %s"
msgstr "Mon nom est %s"
italian
msgid "Hello, world!"
msgstr "Ciao, mondo!"
msgid "My name is %s"
msgstr "Il mio nome è %s"
Đây là những bước chính bạn cần phải đi qua để tạo tin cục bộ của bạn
- tất cả các đầu ra văn bản của bạn phải sử dụng chức năng gettext (gettext(), ngettext(), _())
- sử dụng xgettext (* nix) để phân tích các file php của bạn và tạo ra các tập tin văn bản cơ sở .po
- sử dụng poedit để thêm văn bản dịch vào các tập tin .po
msgfmt
- sử dụng (* nix) để tạo ra các tập tin .mo nhị phân từ tập tin .po
- đặt các file .mo trong một cấu trúc thư mục như
locale/de_DE/LC_MESSAGES/myPHPApp.mo
locale/en_EN/LC_MESSAGES/myPHPApp.mo
locale/it_IT/LC_MESSAGES/myPHPApp.mo
sau đó bạn script php phải thiết lập miền địa phương mà cần phải được sử dụng
Ví dụ từ php thủ công là rất rõ ràng cho phần đó
<?php
// Set language to German
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");
// Choose domain
textdomain("myPHPApp");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now
// Print a test message
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");
?>
Luôn từ hướng dẫn php tìm here cho một hướng dẫn tốt
Nguồn
2009-07-28 10:14:20
Nhưng trên Ví dụ thủ công PHP dường như không dịch chuỗi đã cho. Có cái gì khác để làm với ví dụ? –