1. xliff是什么
xliff是Android中的用以格式化字符串的一种东西。%d这种会转换成<xliff:g id="xxx">%1$d</xliff:g>这种。
2. 代码
class XliffMaker(object):
"""class for XliffMaker"""
def __init__(self, s):
super(XliffMaker, self).__init__()
self.s = s
def make(self):
reg = re.compile(STRING_REGEX)
idx = 1
targetStrHead = '<xliff:g id="FMT_STR_ID">'
targetStrBoot = '</xliff:g>'
targetStr = targetStrHead
mediemStr = ""
otherStrList = reg.split(self.s)
replacedList = []
for m in reg.finditer(self.s):
s0 = m.group()
s1 = ""
if 'd' in s0:
reg0 = re.compile(r'%(\d+)d')
s1 = '%%%d$%sd' % (idx, reg0.search('%2d').group(1))
elif 's' in s0:
s1 = '%%%d$s' % idx
replacedList.append(s1)
idx = idx + 1
ret = zip(otherStrList, replacedList)
for t in ret:
mediemStr = mediemStr + "".join(t)
mediemStr = mediemStr + otherStrList[-1]
return targetStr + mediemStr + targetStrBoot
目前只支持%d和%s两种格式!其中,%d可以使用位数限制格式,例如%2d代表2位数。