5
我一直聽說gettext - 我知道這是某種unix命令,根據提供的字符串參數來查找翻譯,然後生成一個.pot文件,但有人可能會以通俗的語言向我解釋這是如何處理的在Web框架中?使用gettext在PHP中添加對i18n的支持?
我可能會考慮看看一些已建立的框架是如何實現它的,但是外行的解釋會有所幫助,因爲在我真正鑽研事情以提供我自己的解決方案之前,它可能有助於更清楚地瞭解圖片。
我一直聽說gettext - 我知道這是某種unix命令,根據提供的字符串參數來查找翻譯,然後生成一個.pot文件,但有人可能會以通俗的語言向我解釋這是如何處理的在Web框架中?使用gettext在PHP中添加對i18n的支持?
我可能會考慮看看一些已建立的框架是如何實現它的,但是外行的解釋會有所幫助,因爲在我真正鑽研事情以提供我自己的解決方案之前,它可能有助於更清楚地瞭解圖片。
gettext系統從一組二進制文件中迴應字符串,這些二進制文件是從包含相同句子的不同語言翻譯的源文本文件創建的。
查找鍵是「基本」語言中的句子。
在源代碼你將不得不像
echo _("Hello, world!");
爲每一種語言,你將與鍵和翻譯版本相應的文本文件(注意,可以用的printf函數中使用的%S)
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"
這些都是你需要去完成創建您的本地化的主要步驟
語言環境/ de_DE/LC_MESSAGES/myPHPApp.mo
場所/的en_EN/LC_MESSAGES/myPHPApp.mo
區域/ it_IT/LC_MESSAGES/myPHPApp.mo
,那麼你的PHP腳本必須設置需要使用
的例子來自PHP語言環境手冊是針對部分非常清晰
<?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");
?>
從PHP手冊
總是尋找here一個很好的教程
但上面PHP手冊示例似乎沒有翻譯給定的字符串。這個例子還有什麼別的嗎? – 2017-09-08 06:28:08