背景:
android資源目錄下,多語言需要通過Google自動翻譯填入。eg:values-es, values-fr等,希望通過Google翻譯,將翻譯結(jié)果自動填充到對應(yīng)文件夾的strings.xml文件中。
功能:
? ? ? ? ?1.多語言的翻譯與自動填入。
? ? ? ? ?2.刪除多語言的填充(當(dāng)翻譯結(jié)果有明顯錯誤時,可以用此功能來回退自動填入)
用法:
? ? ? ? 1.多語言的翻譯與自動填入(默認(rèn)的values文件夾不填充)java -jar “jar包存放路徑“? 參數(shù)一? 參數(shù)二? 參數(shù)三?
? ? ? ? 參數(shù)一:需要填充的資源文件夾的路徑到 res一級
? ? ? ? 參數(shù)二:需要填充字符串的名字 eg: >? test
? ? ? ? 參數(shù)三:需要翻譯的內(nèi)容 eg:? “How old are you”
? ? ? ? 翻譯如下字符串<string name="test">"How old are you"</string>
? ? ? ?結(jié)果:腳本執(zhí)行完成后,字串內(nèi)容會自動翻譯完成,并且填充到所有的對應(yīng)的語言文件夾下面的. ? ?strings.xml中,不會重復(fù)插入,如果已經(jīng)存在名為test的字符串,將不再執(zhí)行插入操作。
? ? ?2.刪除多語言的填充java -jar “jar包存放路徑“? 參數(shù)一? 參數(shù)二? 參數(shù)三?
? ? 參數(shù)一:delete? 固定為delete字符串
? ? 參數(shù)二:需要填充的資源文件夾的路徑到 res一級
? ? 參數(shù)三:需要填充字符串的名字 eg:? test結(jié)果:在所有語言文件夾中,刪除制定名字的字符串。
實現(xiàn)知識涉及知識點(diǎn):
1.獲取Google免費(fèi)翻譯API
由于google商業(yè)云翻譯是需要收費(fèi)的,所以這里使用了網(wǎng)頁版翻譯接口,該接口能獲取到翻譯后的josn字符串。獲取鏈接如下:
翻譯鏈接 可以通過拼接鏈接來翻譯成不同國家的語言。此處鏈接為https鏈接,在獲取的過程中,需要證書驗證。在代碼中添加new X509TrustManager()相關(guān)代碼即可。
2.拿到翻譯后的自動填充
拿到翻譯解析后,保存在HashMap中,統(tǒng)一寫入到Android的語言文件夾中。此處涉及到需要翻譯哪些語言的問題,具體要翻譯哪些語言,是通過獲取參數(shù)的目錄中,目錄名字為"values-fr"類似的文件夾名字來確定的。例如目錄中存在values-fr文件夾,我們認(rèn)為"fr"即為需要翻譯的語言。以此類推,通過文件夾名字可以確定有哪些語言是需要去請求翻譯的。寫入的過程采用了Dom4j方式。
3.腳本化翻譯過程
導(dǎo)出jar包,需要fat jar支持,需要在線安裝相關(guān)插件。
解決問題過程:
1.分析決絕問題的主要阻礙,即如何免費(fèi)獲取Google翻譯。其中Google官方提供的云翻譯為收費(fèi)翻譯,不予考慮。Stack Overflow查找到可以自動翻譯的鏈接后,問題變?yōu)槿绾潍@取https提供的josn字符串。問題得以順利解決。
源代碼和jar包鏈接:
https://github.com/qijunf/AutoTranslationForAndroid