php 項目多語言配置平臺的實現方案

這個月用ant design的方式重構了我在15年的時候寫的一個給主端項目寫的多語言配置後臺。發現當時的設計很「深」,深到有些功能根本就沒用過,根據這幾年的使用狀況,重構了這一版本,不管是體驗上仍是實用性上都有所提升。今天抽時間把當時的一些想固然的需求拿出來總結下吧: php

使用的技術

咱們的項目主要是PHP爲主要開發語言。使用gettext擴展實現國際化的。即經過人工的方式按照規則寫入.po文件,而後調用某函數生成.mo 文件,放到生產環境的文件夾下,而後在代碼裏初始化一些內容進行引用。linux

gettext

gettext是php實現國際化的基本方式。使用方法以下:後端

  1. 安裝php擴展gettext,這個同php其餘擴展同樣,這裏就不詳細介紹了。
  2. linux環境安裝msgfmt,安好後可用此命令將po文件生成.mo文件。

基本使用

  1. 創建文件如:zh_CN.po (.po是個文本文件),內容以下:
    msgid "repeat content!"
    msgstr "文本內容相同"
  2. 利用msgfmt將.po文件生成.mo文件。
    msgfmt -o {$lang_path}/zh_CN.mo {$lang_path}/zh_CN.po

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

  3. 在php代碼裏面初始化。
    $lang = 'zh_CN';  //
    setlocale(LC_MESSAGES, 'en_US.UTF-8');  // 函數設置地區信息(地域信息)
    bindtextdomain($lang, {$pofile_path})); // 用來設置文本域目錄
    textdomain($lang); // 設置默認域
    bind_textdomain_codeset($lang, 'UTF-8');
  4. 在php的請求裏面使用以下方法便可獲得語境下對應詞組的內容:
    gettext("repeat content!")  // 文本內容必須與1中的內容一致。
     或者
     _("repeat content!");  // 與上面函數相同

管理後臺

之前都是開發人員本身上傳,後來爲了解放開發者,讓產品本身操做,咱們進行了以下改進:前後端分離

  1. 作成可配置後臺,產品本身根據內容填寫。
  2. 配置後臺分紅入口(權限控制),展現列表頁,即每一個詞組key對應各類語言下的內容。
  3. 詳情頁,詳情頁支持批量添加。
  4. 點擊按鈕觸發發佈。
  5. 發佈高級功能:生成列表和支持比對,對歷史版本發佈(拷貝歷史版本到對應的文件夾下)。

改進

通過一段時間的使用,我決定根據實際使用狀況重構一版。dom

  1. 頁面所有采用ant design pro爲基礎的框架,採用先後端分離的樣式,我特別推崇ant design的設計思想,和人機交互的開發方法,是後端開發者的福音。
  2. 淡化歷史版本的記錄。雖然有個好些,可是這個確實看的人少,基本沒有。
  3. 從新發布,若是有時間就作,沒時間就不作。
  4. 對於一些特殊內容的規定,如若是一個詞組key在某種語言環境下顯示爲空,該怎麼處理等等。
相關文章
相關標籤/搜索