iOS多语言文件与excel的互相转换

最近因为要将多语言文件整理成表格形式与安卓对齐,想到多达十几种语言,一种语言涉及到几百行,这如果要人工整理得整理到啥时候,就想到做一个shell脚本来解决这个问题。

因为在mac不能直接支持excel,所以用csv文件来代替,用时将csv转成excel即可。

csv事实上是由为逗号隔开的一行行字符串组成

如:

theme,Theme

share,Share

feedback,Feedback

rate,Rate

about,About

搞清楚原理,开始撸代码:

假设string文件格式为: key = "value";

先将" = "做一个字符替换,以免等会进行字符分割时有扰乱

替换 = 为$


srcText=" = "

destText="$"

sed -i "" "s/${srcText}/${destText}/g" temp.strings

去掉每行末尾的分号;

srcText=";"

destText=""

sed -i "" "s/${srcText}/${destText}/g" temp.strings

去掉引号

srcText="\""

destText=""

sed -i "" "s/${srcText}/${destText}/g" temp.strings

考虑到字符中有空格和逗号影响分割的精确度,均进行替换

#替换空格
srcText=" "

destText="~"

sed -i "" "s/${srcText}/${destText}/g" temp.strings

替换逗号

srcText=","

destText="^"

sed -i "" "s/${srcText}/${destText}/g" temp.strings

然后逐行读取string文件,用分割出key和value,不包含的就认定为注释项,组合成key,value的形式放入数组中


#逐行读取

arr=()

flag=0

while read LINE

do

str=$LINE

res=""

#如果包含$

if [[ $str == *"$"* ]]

then

key=`echo $str | cut -d "$" -f 1`

value=`echo $str | cut -d "$" -f 2`

res="${key},${value}"

else

if [[ $str == *"//"* ]]

then

pre="${str#*//}"

res="${pre},"

fi

fi

echo $res

arr[flag]=$res

最后再逐行写入文件,恢复替换掉的字符


for line in ${arr[@]}; do

echo $line >> reslut.csv

done

#恢复空格

srcText='~'

destText=' '

sed -i "" "s/${srcText}/${destText}/g" reslut.csv

#恢复逗号

srcText='^'

destText=','

sed -i "" "s/${srcText}/${destText}/g" reslut.csv

效果图:


屏幕快照 2018-07-05 下午3.01.40.png
屏幕快照 2018-07-05 下午3.02.36.png

如果想要将csv转化成string文件,步骤倒过来即可

shell脚本下载地址: https://github.com/taozaizai/string2csvANDcsv2string.git

如果转化中文或者其他的语言时出现乱码,请用mac自带的numbers打开。

你可能感兴趣的:(iOS多语言文件与excel的互相转换)