<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 3969字,需瀏覽 8分鐘

           ·

          2022-03-07 11:24

          1、前言

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

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

          2、翻譯系統(tǒng)

          2.1 流程圖

          6feb3759e91a8dfae61a8bda2dfe45b6.webp

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

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

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

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

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

          針對(duì)翻譯后臺(tái)提供的接口如下:

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

          • 用戶登錄

          • 修改用戶密碼

          • 用戶重置token

          • 獲取模塊列表

          • 更新模塊列表

          • 更新模塊信息

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

          • 合并某條翻譯

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

          • 拆分翻譯

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

          • 刪除翻譯

          • 獲取翻譯修改記錄

          針對(duì)翻譯助手提供的接口:

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

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

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

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

          2.2.2 翻譯管理后臺(tái)

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

          管理后臺(tái)主要有三個(gè)頁面,一個(gè)是翻譯工具下載頁面,一個(gè)是翻譯模塊配置頁面,一個(gè)是國(guó)際化翻譯頁面。

          項(xiàng)目地址為: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 翻譯工具下載頁面

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

          2.2.2.2 翻譯模塊配置頁面

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

          2.2.2.3 國(guó)際化翻譯頁面

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

          2.2.3 翻譯同步助手

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

          2.2.3.1 上傳本地中文字符串

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

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

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

          3、體驗(yàn)一下

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

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

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

          e3f1c1bcc9b0310a3ded0040d561dcfa.webp

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

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

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

          e8ae2a712f2600e93b3476b683fa68eb.webp

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

          • B、如果你是Android項(xiàng)目就選擇Android,反之選擇iOS

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


            98ffaa3e3da0ed04f0253f347f36f660.webp


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

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

          3.3 上傳本地翻譯

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

          83d4a8bb41adc84c2aa89e9f4720e7d2.webp

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

          6d04d9c38f3597a78a3ca85f37814f98.webp

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

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

          翻譯之后的效果如下:

          39b46b05001f8dca87a6ca1aa175ea82.webp

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

          3.5 同步翻譯到本地

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

          edd59bb19675f93b79879cdb1f1983c4.webp

          控制臺(tái)輸出合并完成,我們打開我們的項(xiàng)目,查看是否生成了英文翻譯文件。

          6198df3475a9cd2a7068294ea282e16f.webp

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

          3.6 看實(shí)際效果

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

          fc652bfc0328c6da4b43af82e5c14b87.webp

          4、后期展望

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

          待辦

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

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

          • ...

          源碼地址集合

          期待你的star~~~

          • java后臺(tái)項(xiàng)目源碼

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

          • 翻譯后臺(tái)前端項(xiàng)目源碼

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



          瀏覽 187
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黑人黄片 | 欧美久久久久久久久久久久 | 亚洲秘 无码一区二区三区电影 | 成人7777 | 色婷婷色 |