<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 1\. SHOP語言包制作 | key | value | | --- | --- | | 編寫人 | pm關 | 在 PHP 也可以利用 gettext 套件寫作 i18n 程序,實現 NLS(Native Language Support) 國際化支持,具體請參考官方文檔([http://www.gnu.org/software/gettext/manual/gettext.html](http://www.gnu.org/software/gettext/manual/gettext.html)) ## 1.1. gettext簡介 GNU gettext是翻譯項目的重要一步,它提供了一個工作框架,由一些集成的工具和文檔組成,幫助程序員、翻譯人員和最終用戶實現程序的國際化和本地化。用 Gettext的方式實現多語言得到了廣泛的支持,著名的BLOG程序wordpress的國際化就是用的GNU gettext。 ## 1.2. 大致原理 GNU gettext使用PO或MO文件來實現國際化和本地化。PO的意思是Portable Object,是一種文本結構,可以方便的由人們閱讀和修改。MO是Machine Object的簡寫,MO文件是PO文件的二進制形態。一般來說,一個PO或MO文件對應于一種語言,如果一個程序要支持多種語言,每一種語言都需要自己 的PO或MO文件。 ![image](https://static.shopsuite.cn/p/poedit/o_gettext01.jpg) ## 1.3. 運行環境 在 phpinfo() 中看到 gettext 字樣,如果沒有則需要安裝php\_gettext擴展。 ## 1.4. SHOP中PHP使用 1. 配置文件啟用語言包/shop/configs/config.ini.php 中打開或者修改如下: ~~~php //初始化語言包 //zh_CN 代表使用中文語言包 //BbcBuilder 語言包名稱 if (function_exists('_')) { init_locale(APP_PATH . '/data/locales/', 'zh_CN', 'BbcBuilder'); } ~~~ //init\_locale 在 /libraries/**init**.php 中定義如下: ~~~php /** * 本地化 I18N 程序范例開始 * * * @param string $lan_path 設置某個域的mo文件路徑 * @param string $lang bsd use zh_CN.UTF-8 * @param string $domain 定義要用的mo文件名稱,常規來說,我們都把PACKAGE的名稱定義和程序名稱相同。 * @return void */ function init_locale($lan_path, $lang, $domain) { setlocale(LC_ALL, $lang); //// bsd use zh_CN.UTF-8 bindtextdomain($domain, $lan_path); //設置某個域的mo文件路徑 bind_textdomain_codeset($domain, 'UTF-8'); //設置mo文件的編碼為UTF-8 textdomain($domain); //設置gettext()函數從哪個域去找mo文件 } ~~~ 2. 語言包目錄結構 ~~~ -/shop/data/locales +en_US +jp_JP -zh_CN -LC_MESSAGES BbcBuilder.mo BbcBuilder.po ~~~ 3. 其它系統同理 ## 1.5. SHOP中JS使用 JS中使用,采用數據Key\\Value模式。 調用JS文件如下: /shop/static/default/js/locales/zh\_CN/LC\_MESSAGES/BbcBuilder.js //key為待翻譯, value為翻譯后的字符串。 var G={"Title":"Zero Framework","Hello World!":"世界,你好!"}; 調用的時候仍然采用 \_\_('key') 方式。 ~~~ function __(key) { if (G[key]) { return G[key] } else { return key; } } ~~~ ## 1.6. 語言包工具 - 生成po和mo文件。 1. Poedit工具下載地址:[https://poedit.net/download](https://poedit.net/download)(用來編輯po文件,編輯需要翻譯的語言,最后自動生成mo文件), 如果下載不了也可百度搜索其它站點下載。 2. poedit的使用 如果語言包目錄/shop/data/locales/zh\_CN/LC\_MESSAGES/中已經存在BbcBuilder.po文件,直接用poedit進行編輯即可;如果不存在則參見以下步驟: 3. 點擊“文件-新建消息目錄文檔”。 4. 在彈出的對話框中填寫“工程名稱以及版本”、“團隊”、“團隊專用電子郵件”、“語言”、“字符集”、“源代碼字符集”等信息。注意:不要填寫“國家”,否則是否漢化會信賴于國家而不是信賴于語言。![](https://box.kancloud.cn/991ffc3d36dcfb971acaacaf2b9fd86c_321x351.png) 5. 切換到“路徑”選項卡,在“基本路徑”中填入要漢化的主題的路徑,在“路徑”中加入一個"點(.)"。例如: /shop![](https://box.kancloud.cn/64c1fcc5f1da7fa39ac7cedcd28da3bb_323x354.png) 6. 切換到“關鍵字”選項卡,在“關鍵字”中加入“\_\_”和“\_\_e”,這樣poedit就會在所有php文件中查找由\_\_()和\_\_e()標識的字符串。(images/screenshot_1560311657403.png) 7. 點擊確定后,彈出“另存為”對話框,把po文件命名為BbcBuilder.po。poedit會自動從所有php文件中提取出需要翻譯的字符串,如下圖所示,一項一項翻譯就可以了。![](https://box.kancloud.cn/b7b05cfc3db7df3c9af52d3758f726f8_504x467.png) 8. 在“編輯-首選-編輯器-行為”中勾上“保存時自動編譯.mo文件”,則在保存時會自動生成BbcBuilder.mo文件。 若翻譯完后又在php文件中添加或刪除了要翻譯的字符串,點擊“類目-自源更新”,poedit會查找出相應的變更。 ## 1.7. 最后記得要 重啟Apache,方可看到效果。 ## 1.8. 備注 針對需要翻譯的文字,大部分已經增加\_\_('text')標記,但是有些是沒有的,注意排查后增加對應的\_\_()函數。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看