<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Python實現刪除Android工程中的冗余字符串

        來源:懂視網 責編:小采 時間:2020-11-27 14:31:35
        文檔

        Python實現刪除Android工程中的冗余字符串

        Python實現刪除Android工程中的冗余字符串:Android提供了一套很方便的進行資源(語言)國際化機制,為了更好地支持多語言,很多工程的翻譯往往會放到類似crowdin這樣的平臺上。資源是全了,但是還是會有一些問題。 哪些問題 以下使用一些語言進行舉例。其中values為工程默認的資源。 1.某語言的資源
        推薦度:
        導讀Python實現刪除Android工程中的冗余字符串:Android提供了一套很方便的進行資源(語言)國際化機制,為了更好地支持多語言,很多工程的翻譯往往會放到類似crowdin這樣的平臺上。資源是全了,但是還是會有一些問題。 哪些問題 以下使用一些語言進行舉例。其中values為工程默認的資源。 1.某語言的資源

        Android提供了一套很方便的進行資源(語言)國際化機制,為了更好地支持多語言,很多工程的翻譯往往會放到類似crowdin這樣的平臺上。資源是全了,但是還是會有一些問題。

        哪些問題

        以下使用一些語言進行舉例。其中values為工程默認的資源。

        1.某語言的資源和某語言限定區域的資源之間。如values-fr-rCA存在于values-fr相同的字符串,這種表現最為嚴重。
        2.某語言的資源和默認的資源之間。values-fr存在與values相同的字符串,可能原因是由于values-fr存在未翻譯字符串導致

        為什么要去重

        潔癖,容不下半點冗余。

        解決思路

        1.如果values-fr-rCA存在于values-fr相同的字符串,去除values-fr-rCA中的重復字符串,保留values-fr。這樣可以保證在values-fr-rCA下也可以正確讀取到資源。

        2.如果values-fr存在與values相同的字符串。如去除values-fr中得重復字符串,保留values的條目。

        Py腳本

        代碼如下:


        #!/usr/bin/env python
        # coding=utf-8
        from os import listdir,path, system
        from sys import argv
        try:
        import xml.etree.cElementTree as ET
        except ImportError:
        import xml.etree.ElementTree as ET


        def genRegionLangPair(filePath):
        basicLanguage = None
        if ('values' in filePath) :
        hasRegionLimit = ('r' == filePath[-3:-2])
        if (hasRegionLimit):
        basicLanguage = filePath[0:-4]
        if (not path.exists(basicLanguage)) :
        return None
        belongsToEnglish = ("values-en" in basicLanguage)
        if (belongsToEnglish):
        #Compare with the res/values/strings.xml
        return (path.dirname(basicLanguage) + '/values/strings.xml', filePath + "/strings.xml")
        else:
        return (basicLanguage + '/strings.xml', filePath + "/strings.xml")
        return None

        def genLangPair(filePath):
        def shouldGenLanPair(filePath):
        if (not 'values' in filePath ):
        return False
        if('dpi' in filePath):
        return False
        if ('dimes' in filePath):
        return False
        if ('large' in filePath):
        return False
        return True

        if(shouldGenLanPair(filePath)):
        basicLanguage = path.dirname(filePath) + '/values/strings.xml'
        targetLanguage = filePath + '/strings.xml'
        if (not path.exists(targetLanguage)):
        return None

        if (not path.samefile(basicLanguage,targetLanguage)) :
        return (basicLanguage, targetLanguage)
        return None

        def genCompareList(filePath):
        compareLists = []
        for file in listdir(filePath):
        regionPair = genRegionLangPair(filePath + '/' + file)
        if (None != regionPair):
        compareLists.append(regionPair)

        languagePair = genLangPair(filePath + '/' + file)
        if (None != languagePair) :
        compareLists.append(languagePair)

        return compareLists

        def getXmlEntries(filePath):
        root = ET.ElementTree(file=filePath).getroot()
        entries = {}
        for child in root:
        attrib = child.attrib
        if (None != attrib) :
        entries[attrib.get('name')] = child.text
        print 'xmlEntriesCount',len(entries)
        return entries

        def rewriteRegionFile(sourceEntries, filePath):
        if (not path.exists(filePath)):
        return
        ET.register_namespace('xliff',"urn:oasis:names:tc:xliff:document:1.2")
        tree = ET.ElementTree(file=filePath)
        root = tree.getroot()
        print root
        totalCount = 0
        removeCount = 0
        unRemoveCount = 0
        print len(root)
        toRemoveList = []
        for child in root:
        totalCount = totalCount + 1
        attrib = child.attrib
        if (None == attrib):
        continue

        childName = attrib.get('name')

        if (sourceEntries.get(childName) == child.text):
        removeCount = removeCount + 1
        toRemoveList.append(child)
        else:
        unRemoveCount = unRemoveCount + 1
        print childName, sourceEntries.get(childName), child.text
        print filePath,totalCount, removeCount,unRemoveCount

        for aItem in toRemoveList:
        root.remove(aItem)

        if (len(root) != 0 ):
        tree.write(filePath, encoding="UTF-8")
        else:
        command = 'rm -rf %s'%(path.dirname(filePath))
        print command
        system(command)

        def main(projectDir):
        lists = genCompareList(projectDir + "/res/")

        for item in lists:
        print item
        src = item[0]
        dest = item[1]
        rewriteRegionFile(getXmlEntries(src),dest)

        if __name__ == "__main__":
        if (len(argv) == 2) :
        main(argv[1])

        如何使用

        代碼如下:


        python removeRepeatedStrings.py your_android_project_root_dir

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Python實現刪除Android工程中的冗余字符串

        Python實現刪除Android工程中的冗余字符串:Android提供了一套很方便的進行資源(語言)國際化機制,為了更好地支持多語言,很多工程的翻譯往往會放到類似crowdin這樣的平臺上。資源是全了,但是還是會有一些問題。 哪些問題 以下使用一些語言進行舉例。其中values為工程默認的資源。 1.某語言的資源
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费观看日本污污ww网站一区| 亚洲丁香婷婷综合久久| 杨幂最新免费特级毛片| 四虎永久在线精品视频免费观看| 亚洲一级毛片在线播放| 亚洲中文无码永久免费| 亚洲精品无码专区在线播放| 好爽…又高潮了毛片免费看| 国产gv天堂亚洲国产gv刚刚碰| 亚洲偷自精品三十六区| 成人免费AA片在线观看| 亚洲日韩国产欧美一区二区三区 | 亚洲伊人tv综合网色| 日韩精品人妻系列无码专区免费| 久久久久亚洲AV无码网站| 无码人妻丰满熟妇区免费| 精品国产人成亚洲区| 久久久受www免费人成| 日本免费中文字幕在线看| 国产AV日韩A∨亚洲AV电影 | 亚洲一线产区二线产区区| 国产精品视频免费一区二区三区| 亚洲精品中文字幕无码AV| 爱丫爱丫影院在线观看免费| 亚洲AV成人无码久久精品老人| 91视频免费网址| 亚洲国产精品久久久久婷婷老年| 18禁男女爽爽爽午夜网站免费| 亚洲人成77777在线播放网站| 久久午夜伦鲁片免费无码| 国产午夜亚洲精品| 最近最新MV在线观看免费高清| 亚洲av无码有乱码在线观看| 永久免费毛片在线播放| 粉色视频在线观看www免费| 亚洲色精品88色婷婷七月丁香 | 久久狠狠爱亚洲综合影院| 亚洲国产精品第一区二区三区| 久别的草原电视剧免费观看| 亚洲av永久无码天堂网| 亚洲av无码潮喷在线观看|