Trang này cung cấp tài liệu tham khảo và các tài nguyên liên quan cho thư viện máy khách Translation PHP
Tài nguyênMô tảTham khảo thư việnBản dịch Tham khảo thư viện PHPHướng dẫn ngôn ngữHướng dẫn chung để sử dụng PHP với kho lưu trữ GCPGitHubMã nguồn và tài liệu bổ sung cho thư viện nàyBắt đầu nhanhGiới thiệu về cách sử dụng thư viện nàyStack OverflowCâu hỏi được gắn thẻ Dịch thuật và PHPCài đặt
Để cài đặt thư viện máy khách
composer require google/cloud-translate
Sử dụng thư viện khách hàng
Để sử dụng thư viện máy khách PHP cho Dịch thuật đám mây - Cơ bản, bạn phải khởi tạo ứng dụng khách API dịch thuật đám mây như sau
Mặc dù các ngôn ngữ lập trình web thay thế như Ruby [on Rails], Python hoặc NodeJS thống trị các tiêu đề trong ngành, PHP vẫn là một lựa chọn phổ biến để xây dựng các ứng dụng web
Mặc dù vậy, vẫn chưa có giải pháp tiêu chuẩn thực sự để bản địa hóa các ứng dụng PHP
Xây dựng một ứng dụng quốc tế thực sự không chỉ là dịch các chuỗi. Các vấn đề khác cần xem xét là định dạng ngày và giờ, ký hiệu tiền tệ và số nhiều. Các lập trình viên thường đánh giá thấp sự phức tạp của việc bản địa hóa và gặp khó khăn với mã tự chế, điều này gây khó khăn cho việc duy trì. Vì vậy, hãy nói về Mảng PHP, gettext, framework và Intl
Mảng PHP
Mảng liên kết đã là cách tiếp cận cơ bản của nhiều dự án PHP lớn và nhỏ trong một thời gian dài. Các chuỗi có thể dịch được lưu trữ trong một mảng kết hợp, một tệp cho mỗi ngôn ngữ
Tệp ngôn ngữ thích hợp được tải ở đầu mã ứng dụng của bạn
Cách tiếp cận này đơn giản và dễ sử dụng, nhưng nó nhanh chóng đạt đến giới hạn của nó. Hãy xem xét một ứng dụng hiển thị thông báo khi người dùng tải tệp lên
3 files uploaded successfully
Nếu nó chỉ là một tập tin thì sao?
1 file[s] uploaded successfully
không. Đó chỉ đơn giản là xấu xí. Tôi có thể nghĩ ra một cách hack like
Điều này không chỉ làm lộn xộn code mà còn không thực sự giải quyết được vấn đề. Trong ngôn ngữ tiếng Anh, thêm 's' là đủ, nhưng dạng số nhiều hoạt động khác trong các ngôn ngữ khác. Ví dụ: dạng số nhiều của thế giới “tệp” [plik] trong tiếng Ba Lan hoạt động như thế này
1 plik 2,3,4 pliki 5-21 pliko'w 22-24 pliki 25-31 pliko'w
lấy văn bản
Hệ thống gettext GNU đã tồn tại hơn 20 năm. Nó được sử dụng rộng rãi và là tiêu chuẩn thực tế để bản địa hóa trong nhiều ngôn ngữ lập trình
Sử dụng gettext với PHP có thể phức tạp trong một số thiết lập
Nếu bạn đang chạy VPS Ubuntu stock, gettext sẽ chỉ hỗ trợ các ngôn ngữ được cài đặt trên máy. Hoặc có lẽ bạn đang sử dụng gói lưu trữ không có tiện ích mở rộng gettext
Trong cả hai trường hợp, php-gettext có thể giúp. php-gettext nó là một sự thay thế thả xuống cho môi trường PHP nơi tiện ích mở rộng gettext không được cài đặt
Thiết lập cơ bản
Trong ví dụ này, tôi muốn sử dụng tiếng Anh và tiếng Đức. Tôi tạo cấu trúc thư mục sau
index.php /locale /en_US /LC_MESSAGES messages.po messages.mo /de_DE /LC_MESSAGES messages.po messages.mo
Bản dịch được lưu trữ trong. tệp po, một định dạng tệp văn bản thuần túy đơn giản. Chỉ sử dụng một trình soạn thảo văn bản, tôi tạo en/LC_MESSAGES/messages. po
msgid "hello" msgstr "Hello" msgid "signup" msgstr "Sign up for free"
Tôi cũng tạo một tin nhắn. po cho ngôn ngữ de_DE
msgid "hello" msgstr "Hallo" msgid "signup" msgstr "Kostenlos registrieren"
Trong bước tiếp theo,. tệp po được biên dịch thành. tập tin mo. Điều này có thể được thực hiện bằng tiện ích dòng lệnh msgfmt
msgfmt messages.po -o messages.mo
Điều này được thực hiện cho mỗi. tập tin po
Cách sử dụng
bây giờ tôi có thể sử dụng. mo qua gettext trong ứng dụng PHP của tôi
Tập lệnh này tạo môi trường gettext mới bằng ngôn ngữ de_DE. Sau đó, tin nhắn có id 'xin chào' được lặp lại sẽ xuất ra tiếng Đức "Hallo"
Hệ thống gettext hỗ trợ dạng số nhiều. Sử dụng ví dụ ở trên, tôi tạo msgid số nhiều
m
sgid "upload" msgid_plural "uploads" msgstr[0] "file uploaded successfully" msgstr[1] "files uploaded successfully"
mà tôi có thể sử dụng trong mã ứng dụng của mình
gettext có thể xử lý số nhiều nhưng nó không có công cụ để làm việc với các định dạng số, tiền tệ, ngày/giờ
khung
Tất cả các khung công tác PHP chính đều có hỗ trợ tích hợp để tạo bản dịch. Một số cung cấp các tính năng bổ sung như các lớp cho tiền tệ và định dạng ngày/giờ
Tệp ngôn ngữPluralsDate/TimeCurrencySymfonyYAML, XLIFF, PHP MảngF3PHP Arrays, INICodeIgniterPHP ArraysKohanaPHP ArraysCakePHPgettextZendPHP Arrays, CSV, TBX/TMX, gettext, Qt, XLIFF, INI,Các mô-đun bản địa hóa của các khung này có thể được sử dụng như một công cụ độc lập mà không cần nhiều mã từ chính khung đó. Kiểm tra các hướng dẫn khác của chúng tôi để xem nó có thể trông như thế nào
Và tất nhiên, đừng quên Laravel, một trong những framework PHP phổ biến nhất
4. quốc tế
PHP5. 3 giới thiệu lớp Intl. Intl là một tập hợp các trình trợ giúp thuận tiện để định dạng ngày, giờ, số và làm việc với tiền tệ. Nó có thể được sử dụng để bổ sung cho gettext hoặc các framework thiếu một số chức năng
Phần kết luận
Bản địa hóa đôi khi có vẻ khó. May mắn thay, bạn không phải cố gắng giải quyết vấn đề bằng mã tự chế
Thật không may, gettext không hoạt động trơn tru với PHP nên tôi khuyên bạn nên sử dụng một framework
Symfony, Zend và F3 đều hoạt động rất tốt và dễ sử dụng. Sau khi chơi với tất cả các khung, tôi thực sự thích cách tiếp cận F3. Dưới đây là hướng dẫn từng bước về cách bắt đầu với F3