<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
        主站蜘蛛池模板: 成人爽a毛片免费| 国产亚洲精品bv在线观看| 亚洲а∨精品天堂在线| 最近2019免费中文字幕视频三| 亚洲免费无码在线| 在线播放亚洲精品| 女人18特级一级毛片免费视频| 亚洲视频一区二区三区| 99久久精品免费精品国产| 国产亚洲一区二区三区在线| 国产精品青草视频免费播放| 国产免费啪嗒啪嗒视频看看| 亚洲国产AV一区二区三区四区| 午夜小视频免费观看| 国产午夜亚洲精品| 久久电影网午夜鲁丝片免费| 亚洲一级在线观看| 成年女人毛片免费观看97| 亚洲黄色激情视频| 日韩视频在线免费观看| 亚洲老熟女五十路老熟女bbw| 女人18毛片特级一级免费视频 | 91精品免费不卡在线观看| 亚洲成AV人在线观看天堂无码| 中文字幕无码日韩专区免费| 亚洲AV无码一区二区三区系列| 久久美女网站免费| 久久亚洲美女精品国产精品 | 久久精品国产亚洲αv忘忧草| 曰批全过程免费视频网址| 亚洲最新在线视频| 手机在线毛片免费播放| 欧美亚洲精品一区二区| 亚洲精品国产V片在线观看| 免费无码又爽又刺激网站| 亚洲尹人九九大色香蕉网站| 无码人妻精品中文字幕免费东京热| 亚洲国产综合人成综合网站00| 69成人免费视频无码专区| 老外毛片免费视频播放| 国产av天堂亚洲国产av天堂|