1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        搭建自己的國際化翻譯系統(tǒng)

        共 3969字,需瀏覽 8分鐘

         ·

        2022-03-07 11:24

        1、前言

        項目要走向國外市場,移動端Android和iOS,當(dāng)然也包括后端和前端,需要進(jìn)行國際化適配,但是之前的項目中是沒有英文翻譯文件的,所以需要將項目中所有的中文字符串進(jìn)行收集交給專業(yè)的人士進(jìn)行翻譯,然后將翻譯的英文內(nèi)容分別整理到Android和iOS項目中去。

        無疑這是一個很繁瑣且很容易出錯的事情,而且后續(xù)在開發(fā)的過程中還會新增中文字符串,這個時候我們又需要重新走一遍上面的流程,哪怕只是新增了一個字符串!于是我們需要一個系統(tǒng)去專門處理這件事件,將功能開發(fā)和英文翻譯這兩件事分離開來,讓專業(yè)的人士去做專業(yè)的事情,所以這個翻譯系統(tǒng)出現(xiàn)了。

        2、翻譯系統(tǒng)

        2.1 流程圖

        6feb3759e91a8dfae61a8bda2dfe45b6.webp

        2.2 系統(tǒng)結(jié)構(gòu)

        此項目分成三個部分,一個是翻譯系統(tǒng)服務(wù)端,一個是翻譯管理后臺,一個是翻譯同步助手。如果你只是想體驗一下,那么你可以忽略這部分的介紹。

        2.2.1 翻譯系統(tǒng)服務(wù)端

        這個項目是一個springboot應(yīng)用,數(shù)據(jù)庫采用mysql,緩存采用redis。目前部署在一臺空閑的阿里云服務(wù)器中。

        服務(wù)端主要是提供功能api接口,包括后臺管理系統(tǒng)的接口和翻譯同步助手的接口,目前總共有17個接口,所有接口都由AdminTranslateController這個類提供。

        針對翻譯后臺提供的接口如下:

        • 獲取所有翻譯列表數(shù)據(jù)

        • 用戶登錄

        • 修改用戶密碼

        • 用戶重置token

        • 獲取模塊列表

        • 更新模塊列表

        • 更新模塊信息

        • 編輯翻譯內(nèi)容

        • 合并某條翻譯

        • 標(biāo)記翻譯已確認(rèn)

        • 拆分翻譯

        • 下載jdk工具和翻譯助手工具

        • 刪除翻譯

        • 獲取翻譯修改記錄

        針對翻譯助手提供的接口:

        • 獲取已翻譯的數(shù)據(jù)列表

        • 客戶端上傳本地字符串?dāng)?shù)據(jù)

        • 客戶端上傳本地英文翻譯

        服務(wù)端項目地址為:https://github.com/MZCretin/java-translate-server 如果你感興趣可以clone下來看看,項目中提供了項目運行所需要的數(shù)據(jù)庫文件。

        2.2.2 翻譯管理后臺

        這個是項目是用vue開發(fā)的前端項目,本項目就是其項目源碼,ui框架使用的是element-ui,請求框架用的是axios。

        管理后臺主要有三個頁面,一個是翻譯工具下載頁面,一個是翻譯模塊配置頁面,一個是國際化翻譯頁面。

        項目地址為:https://github.com/MZCretin/vue-translate-web 如果你感興趣可以clone下來看看。

        如果你想本地跑起來,先安裝node環(huán)境,然后npm install,npm run serve,最后訪問:http://127.0.0.1:8080 即可。

        2.2.2.1 翻譯工具下載頁面

        這個頁面主要是提供翻譯同步助手的下載入口!當(dāng)然了,因為翻譯同步助手是用java寫的,所以你需要有java環(huán)境,所以這個頁面也提供了各個版本jdk的下載入口。

        2.2.2.2 翻譯模塊配置頁面

        這個頁面主要是給模塊配置模塊名稱,這樣在國際化翻譯系統(tǒng)頁面可以根據(jù)模塊去篩選翻譯內(nèi)容。

        2.2.2.3 國際化翻譯頁面

        這個頁面主要是給專業(yè)人士進(jìn)行翻譯的,在這里可以對中文進(jìn)行人工翻譯,也提供了百度翻譯的智能翻譯功能,還可以查看翻譯的修改記錄,追蹤翻譯歷史鏈路,也提供了一系列對翻譯條目的篩選功能和搜索功能。

        2.2.3 翻譯同步助手

        這是一個純java swing 項目,主要功能為 上傳本地中文字符串到遠(yuǎn)程翻譯系統(tǒng) 和 拉取遠(yuǎn)程已經(jīng)翻譯好的英文翻譯到本地。服務(wù)端項目地址為:https://github.com/MZCretin/java-translate-server 。該項目中的translate-tools模塊就是翻譯同步助手的項目源代碼。

        2.2.3.1 上傳本地中文字符串

        拉取Android項目中所有的中文strings.xml中的中文字符串和iOS中所有的中文字符串,并主動去重,然后調(diào)用后端接口將本地中文字符串上傳到云端。

        2.2.3.2 拉取遠(yuǎn)程翻譯內(nèi)容

        調(diào)用后端接口拉取后端已經(jīng)翻譯好的英文內(nèi)容到本地,對于Android項目,根據(jù)values/strings.xml生成對應(yīng)的values-en/strings.xml文件,對于iOS,生成對應(yīng)的en.lproj/Localizable.strings 文件。針對Android項目,每次在生成英文版本的strings.xml文件的時候,就自動將之前的strings.xml進(jìn)行備份,防止出現(xiàn)誤操作無法找回之前的數(shù)據(jù)。

        3、體驗一下

        衷心的希望你能一步一步的走完整個流程~

        3.1 創(chuàng)建測試項目

        首先,我當(dāng)你是一個Android開發(fā)者,我們首先創(chuàng)建一個空項目,然后在項目中新增若干個module,模擬真實項目中的多module環(huán)境,在每個module中添加strings.xml文件,在這個文件中定義幾個字符串,如圖所示。

        e3f1c1bcc9b0310a3ded0040d561dcfa.webp

        3.2 下載翻譯同步助手及使用說明

        你先訪問 http://tools.cretinzp.com/translate-web/#/home 首次登錄沒有賬號密碼就隨便寫一個,后臺會自動幫你注冊,但是你要自己記住這個賬號密碼,方便后面繼續(xù)登錄。

        成功進(jìn)入系統(tǒng)之后,訪問 http://tools.cretinzp.com/translate-web/#/translate/tools 下載最新版本的翻譯同步助手。如果你本機(jī)沒有java環(huán)境,你還需要在此頁面下載你當(dāng)前系統(tǒng)對應(yīng)的jdk,并一路下一步安裝。安裝成功之后,打開剛剛下載的翻譯同步助手,你將看到如下頁面:

        e8ae2a712f2600e93b3476b683fa68eb.webp

        • A、如果你是Android開發(fā)者,那你點擊選擇本地項目地址按鈕,選擇你需要國際化項目的項目根目錄就好了,選擇完之后控制臺會輸出你選擇的地址,請一定關(guān)注一下你選擇的地址是否正確;如果你是iOS開發(fā)者,那你點擊選擇本地項目地址按鈕,選擇項目中的zh-Hans.lproj文件夾,注意一定要選擇到這個文件夾,同樣的關(guān)注一下控制臺輸出的地址是否以zh-Hans.lproj結(jié)尾。

        • B、如果你是Android項目就選擇Android,反之選擇iOS

        • C、工具需要校驗身份,訪問 http://tools.cretinzp.com/translate-web/#/home 頁面右上角點擊你的用戶名,在下拉框中選擇獲取token,復(fù)制對話框中的token值粘貼到這里才可正常使用功能。


          98ffaa3e3da0ed04f0253f347f36f660.webp


        • D、如果你本地有新增的字符串未上傳到云端,那么你需要進(jìn)行此操作。先點擊預(yù)加載本地數(shù)據(jù),此操作會收集當(dāng)前項目中的所有字符串信息到內(nèi)存中,控制臺會輸出收集到的字符串條數(shù),如果出現(xiàn)條數(shù)為0,有可能你的項目地址選擇不對,也有可能你的系統(tǒng)版本比較高,沒有給到訪問資源的權(quán)限,遇到這種情況請自行g(shù)oogle解決辦法。如果控制臺中輸出的條數(shù)是正常的,再點擊上傳本地數(shù)據(jù)到云端,查看控制臺輸出,成功之后可以訪問后臺查看你上傳的數(shù)據(jù)。

        • E、如果翻譯員在后臺進(jìn)行了翻譯,你需要將翻譯后的英文同步到本地,那么你需要進(jìn)行此操作。先點擊遠(yuǎn)程下載數(shù)據(jù)到本地,這個過程會請求后臺接口拉取所有以及翻譯好的英文數(shù)據(jù)到本地內(nèi)存,控制臺會輸出云端已經(jīng)翻譯好的數(shù)據(jù)條數(shù),再點擊合并遠(yuǎn)程數(shù)據(jù)到本地,此時,工具會自動根據(jù)本地的中文字符串對應(yīng)生成翻譯好的英文文件。針對Android會生成 values-en/strings.xml 文件,針對iOS會生成en.lproj/Localizable.strings 文件,實現(xiàn)項目國際化。

        3.3 上傳本地翻譯

        先按照3.2中的說明選擇項目,然后填入token,然后點擊預(yù)加載本地數(shù)據(jù),看控制臺中的輸入為收集到11條數(shù)據(jù),app中有一條,其他5個module中各有2條,一共11條,合理,然后點擊上傳本地數(shù)據(jù)到云端,查看控制臺輸出成功。如圖

        83d4a8bb41adc84c2aa89e9f4720e7d2.webp

        上傳成功之后點擊 訪問翻譯后臺按鈕,查看后臺是否有數(shù)據(jù),如圖所示

        6d04d9c38f3597a78a3ca85f37814f98.webp

        3.4 對內(nèi)容進(jìn)行翻譯

        針對每一條數(shù)據(jù),你可以直接在英文內(nèi)容輸入框中輸入翻譯后的內(nèi)容,也可以點擊右邊智能翻譯按鈕進(jìn)行翻譯,智能翻譯采用我正在維護(hù)的RollToolsApi中的一個翻譯接口,詳情請查看 https://www.mxnzp.com/doc/detail?id=21 ,當(dāng)你認(rèn)為翻譯已經(jīng)合理不希望別人再改動時,可點擊右邊的 確認(rèn)翻譯按鈕,告知別人這條翻譯是已經(jīng)確認(rèn)過的。

        翻譯之后的效果如下:

        39b46b05001f8dca87a6ca1aa175ea82.webp

        另外,點擊右邊的修改記錄可以查看當(dāng)前數(shù)據(jù)的所有修改記錄。

        3.5 同步翻譯到本地

        等翻譯人員翻譯完成之后,我們需要同步遠(yuǎn)程翻譯到本地。同步翻譯的操作依然在翻譯同步助手上進(jìn)行。點擊工具上的 遠(yuǎn)程下載數(shù)據(jù)到本地按鈕,將遠(yuǎn)程翻譯數(shù)據(jù)拉取到內(nèi)存中,控制臺輸出拉取遠(yuǎn)程數(shù)據(jù)11條,然后點擊 合并遠(yuǎn)程數(shù)據(jù)到本地按鈕,生成本地的英文翻譯文件,看控制臺輸出:

        edd59bb19675f93b79879cdb1f1983c4.webp

        控制臺輸出合并完成,我們打開我們的項目,查看是否生成了英文翻譯文件。

        6198df3475a9cd2a7068294ea282e16f.webp

        可以看到英文翻譯已經(jīng)拉下來了。

        3.6 看實際效果

        我在首頁上顯示了這11條中文字符串,左邊是中文的效果,右邊的是切換成英文環(huán)境的效果。

        fc652bfc0328c6da4b43af82e5c14b87.webp

        4、后期展望

        我是覺得技術(shù)是用來服務(wù)自己的,所以在遇到一些問題的時候希望能夠通過代碼解決一些實際問題,于是才花時間去研究這個東西。對于同是移動端開發(fā)的你,不知道有沒有遇到過這個問題。如果你覺得有點意思,并且希望能添加一些東西,我希望你能跟我掰頭掰頭~

        待辦

        • 國際化顯然不僅僅是移動端的事情,還包括后臺和前端,后面我希望也能把他們包含進(jìn)去。

        • 還有就是對多語言的支持,目前僅支持中文和英文,后續(xù)需要支持其他語言

        • ...

        源碼地址集合

        期待你的star~~~

        • java后臺項目源碼

          https://github.com/MZCretin/java-translate-server

        • 翻譯后臺前端項目源碼

          https://github.com/MZCretin/java-translate-server



        瀏覽 187
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91探花在线观看 | 蜜桃91视频 | 亚洲精品乱伦视频 | 冲田杏梨桃乳逆护士ed2k | 91免费黄视频 | 欧美色操 | 人善交精品一区二区三区 | 免费无码婬A片在线视频夜网站 | av色偷偷| 一级 黄 色 片69 |