国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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毛片久久 | 一级毛片特级毛片免费的 | 欧美一区二区在线视频 | 在线观看免费精品国自产 | 鸣人x钢手 | 欧美1区二区三区公司 | 中文字幕第13亚洲另类 | 日韩精品第三页 | 精品一区二区三区四区在线 | 色精品一区二区三区 | 日韩专区在线 | 国内精品视频在线播放 | 大黄毛片| 欧美色图一区二区 | 亚洲性一区 | www.色人阁| 热久久国产欧美一区二区精品 | 亚洲欧美日韩另类在线专区 | 日韩免费一区二区三区 | 69天堂网在线视频精品 | 久久99久久精品国产99热 | 在线欧美v日韩v国产精品v | 日韩色视频 | 久久综合中文字幕一区二区 | 国产精品不卡在线观看 | 欧美另类在线观看 | 亚洲午夜电影 | 欧美小视频在线观看 | 一区二区三区四区电影 | 国产精品久久久久影院色 | 成人a毛片免费视频观看 | 国产日韩欧美另类重口在线观看 | 久久久久88色偷偷免费 | 成人毛片在线播放 | 国产精品久久久久久久 | 欧美亚洲日本国产 | 国产国语在线播放视频 | 五月婷婷综合网 | 国内一级一级毛片a免费 |