欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP項目多語言配置平臺實現(xiàn)過程解析

 更新時間:2020年05月18日 12:00:11   作者:netbird_fly  
這篇文章主要介紹了PHP項目多語言配置平臺實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這個月用ant design的方式重構(gòu)了我在15年的時候?qū)懙囊粋€給主端項目寫的多語言配置后臺。發(fā)現(xiàn)當時的設計很“深”,深到有些功能根本就沒用過,根據(jù)這幾年的使用情況,重構(gòu)了這一版本,無論是體驗上還是實用性上都有所提高。今天抽時間把當時的一些想當然的需求拿出來總結(jié)下吧:

使用的技術

我們的項目主要是PHP為主要開發(fā)語言。使用gettext擴展實現(xiàn)國際化的。即通過人工的方式按照規(guī)則寫入.po文件,然后調(diào)用某函數(shù)生成.mo 文件,放到生產(chǎn)環(huán)境的文件夾下,然后在代碼里初始化一些內(nèi)容進行引用。

gettext

gettext是php實現(xiàn)國際化的基本方式。使用方法如下:

安裝php擴展gettext,這個同php其他擴展一樣,這里就不詳細介紹了。

linux環(huán)境安裝msgfmt,安好后可用此命令將po文件生成.mo文件。

基本使用

建立文件如:zh_CN.po (.po是個文本文件),內(nèi)容如下:

msgid "repeat content!"
msgstr "文本內(nèi)容相同"

利用msgfmt將.po文件生成.mo文件。

msgfmt -o {$lang_path}/zh_CN.mo {$lang_path}/zh_CN.po

將生成的.po文件拷貝到你指定的文件夾 target_dir 下。

在php代碼里面初始化。

$lang = 'zh_CN'; //
setlocale(LC_MESSAGES, 'en_US.UTF-8'); // 函數(shù)設置地區(qū)信息(地域信息)
bindtextdomain($lang, {$pofile_path})); // 用來設置文本域目錄
textdomain($lang); // 設置默認域
bind_textdomain_codeset($lang, 'UTF-8');

在php的請求里面使用如下方法即可得到語境下對應詞組的內(nèi)容:

gettext("repeat content!") // 文本內(nèi)容必須與1中的內(nèi)容一致。

或者

_("repeat content!"); // 與上面函數(shù)相同

管理后臺

以前都是開發(fā)人員自己上傳,后來為了解放開發(fā)者,讓產(chǎn)品自己操作,我們進行了如下改進:

  • 做成可配置后臺,產(chǎn)品自己根據(jù)內(nèi)容填寫。
  • 配置后臺分成入口(權限控制),展示列表頁,即每個詞組key對應各種語言下的內(nèi)容。
  • 詳情頁,詳情頁支持批量添加。
  • 點擊按鈕觸發(fā)發(fā)布。
  • 發(fā)布高級功能:生成列表和支持比對,對歷史版本發(fā)布(拷貝歷史版本到對應的文件夾下)。

改進

經(jīng)過一段時間的使用,我決定根據(jù)實際使用情況重構(gòu)一版。

  • 頁面全部采用ant design pro為基礎的框架,采用前后端分離的樣式,我特別推崇ant design的設計思想,和人機交互的開發(fā)方法,是后端開發(fā)者的福音。
  • 淡化歷史版本的記錄。雖然有個好些,但是這個確實看的人少,基本沒有。
  • 重新發(fā)布,如果有時間就做,沒時間就不做。
  • 對于一些特殊內(nèi)容的規(guī)定,如如果一個詞組key在某種語言環(huán)境下顯示為空,該怎么處理等等。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論