根据网上的开源项目修改而来

目的

本项目的开发目的是由于在 Android 项目中会有多语言翻译的需求,在我们做完中文给到专业人员翻译的时候,有字符串到出的需求;反之,多国语言翻译回来之后,同时有导入的需求,手动复制粘贴一定是最低效的方式。所以这个脚本只有两个功能,一个是导出,xml -> xls ,一个是导入 xls -> xml

使用方法

环境

Python2

python库

xlrd(导入使用)

pyExcelerator(导出使用)

配置

Config 里面默认配置了 表格的 title 等属性

keyTitle = "Android keyName" # key 名(Android 字符串 name)

moduleTitle = "Android module" # module 名(xml 文件名)

import_start_col = 2 # 从第几列开始导入

export_excel_name = "Output.xls" # 导出的 excel 文件名

export_base_dir = "values-zh" # 导出基准文件夹

export_base_title = "zh" # 导出基准 title

export_only_zh = False # 是否仅导出中文字符

参数说明

导入

-i 输入excel 的路径

-f 输入目标 xml 路径

-l 输入目标语言简写,如 en zh 等,与 -f 成对使用

-d 输入目标文件夹,如 c:\android,文件目录结构如下(android 直接从工程中拷出即可)

(由于默认为 en 因此文件夹支持 values-en 也支持 values)

├── andorid

│ ├── values-zh

│ |├── strings_device.xml

│ |├── strings_me.xml

│ |├── strings_moment.xml

│ ├── values-de

│ ├── values-ko

示例,在脚本目录下执行,或在下面脚本前加路径

单个文件(入参有是三个 -i -f -l)

python xls2xml.py -i "C:\Users\Administrator\Desktop\App Native - 1126.xlsx" -l "en" -f "C:\Users\Administrator\Desktop\p\strings_moment.xml"

表示 从把表格中 zh 那一列内容,替换到 strings_moment.xml 文件中

文件夹

python .\xls2xml.py -i "C:\Users\Administrator\Desktop\App Native - 1126.xlsx" -d "C:\Users\Administrator\Desktop\p"

导出

导出没有添加输入参数,直接支持可视化操作

单个文件,

输入要导出的 excel 路径,比如,选择路径为 C:\Users\Administrator\Desktop,那么会在桌面上创建一个 Output.xls 文件,完成路径为 C:\Users\Administrator\Desktop\Output.xls

输入要导出的 xml 文件,结果就会将 xml 的 键值对导出到 excel 表中

目录方式

要导出的 excel 路径,同上

要导出的 xml 目录路径,如 ..\android, android 目录下有如下文件格式

├── andorid

│ ├── values-zh

│ |├── strings_device.xml

│ |├── strings_me.xml

│ |├── strings_moment.xml

│ ├── values-de

│ ├── values-ko

│ ├── values

注:目录方式会默认以 values-zh 作为基准(比如 key 的顺序),可以通过修改 Config 属性 export_base_dir 和 export_base_title 来定制

导出效果

Android module

Android keyName

zh

en

ko

strings_me

me_1

strings_me

me_2

strings_me

me_3

strings_moment

moment_1

strings_moment

moment_2

strings_moment

moment_3

strings_device

device_1

注意点:

xml 目录指的都是包含着 values-zh 等目录的文件夹

这里的 module 指的是 同一种语言下的 strings.xml 文件的文件名

如果在字符串定义有数组,比如 strings-array表示,会自定义名称,比如 下面就会生成两个键值对

gender_item-INDEX-0:男

gender_item-INDEX-1:女

关于导入列配置 import_start_col,项目使用表格 是从第 2 列开始做导入(从0开始),也就是 en 和 de 需导入,在实际使用中可根据需求处理

export_only_zh 需求来源于,我们在项目中会追加文案(默认中文),在没有多语言翻译的时候,其他的 strings 都会写成中文,为了便于仅导出为翻译的部分,添加此字段辅助。

常用使用方法, 将导出基准设为非中文的语言,如 下面将基准设为英文,并将近导出中文支付设为 true,那么导出的就是没有翻译(仅中文)的内容

为什么不能将基准设为中文? 如果以中文为基准,所有的字符串都会导出来啦

export_base_dir = "values" # 导出基准文件夹

export_base_title = "en" # 导出基准 title

export_only_zh = True # 是否仅导出中文字符

可视化使用

上面直接使用参数的方式还是容易出错,建议使用下面的方式,更清晰易懂

python pick_me.py install

测试

ImportTestUnit.py 和 ExportTestUnit.py 用户导入导出测试

android多语言编码格式,AndroidXml2Xls相关推荐

  1. android多语言编码格式,在Android中使用国家/地区代码以编程方式更改语言

    字符串文件:values / string.xml和values-pt-rBr / string.xml setLocale(new Locale("en")); String e ...

  2. Android 多语言

    Android 多语言 一般不是代码设置切换语言呢,我们直接写添加资源文件即可 下面说下自己在项目中用到的方法,语言切换可以使用手机里面的切换语言即可 1 鼠标右键项目的res --->new ...

  3. android 初始化语言,3.4.1 Android初始化语言(1)

    3.4 init.rc文件解析过程 init.rc文件按照一定的格式组织,要分析init.rc文件的解析过程,首先要熟悉它的格式.init.rc的文件格式由Android初始化语言(Android I ...

  4. android 初始化语言,Android Init Language(安卓初始化语言)

    android源码学习目录 了解Android init进程的都知道,启动 init进程之前会解析init.rc文件,init.rc是Android的配置文件脚本,它由一种被称为"Andro ...

  5. android 初始化语言,25.Android init language (安卓初始化语言)

    目前在研究framework框架,AIL是Android初始化语言,以下是根据官方文档进行的翻译有助于研究Android启动过程: Android初始化语言包含了四种类型的声明:Actions(行动) ...

  6. Android初始化语言 (init.*.rc、init.conf文件格式)

    2019独角兽企业重金招聘Python工程师标准>>> 下文转载自:http://hi.baidu.com/zhlg_hzh/blog/item/4ad24a807c71d3db90 ...

  7. 解析android多语言与自定义字体

    一.android多语言 这里以汉语 英文 印尼文为例记录一下实现流程 1.1,value文件夹下添加不同语言的String.xml文件,分别是 values默认 <resources>& ...

  8. android国际化语言编码对照表

    android国际化语言编码对照表 (查询整理以备不时之需,以下内容均已附原文连接) 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-z ...

  9. android 语音适配,Android多语言适配繁体中文

    Android多语言适配一般默认是values/drawable目录下的文件是英文语言的资源,如果在中文下使用不同的资源则需要新建values-zh/drawable-zh-xxxdpi这样,res目 ...

最新文章

  1. Java集合之并发容器
  2. IntPtr to bytes
  3. mysql ignore 1 lines_20190716MySQL基础操作(一)
  4. CDH HUE集成MySQL
  5. iOS之多线程的使用和优缺点比较
  6. FZU1969(最大公约数之和)
  7. TypeScript里一些特殊的类型
  8. eclipse下添加viplugin插件的方法
  9. linux物理硬盘和sd的对应关系_Linux物理存储结构以及磁盘划分
  10. mac搜索不到wifi wtg_如何设置隐藏wifi 防止蹭网隐藏wifi方法【详解】
  11. 威斯康星大学硕士计算机科学,2020年威斯康星大学麦迪逊分校排名TFE Times美国最佳计算机科学硕士专业排名第12...
  12. 用Snoop工具来探测WPF窗体的构成
  13. ook的matlab,【伪技术】基于OOK的语音信号的数字传输
  14. 捷顺对讲服务器地址在哪修改,捷顺软件安装说明.docx
  15. android开源代码
  16. win10远程桌面连接凭据怎么设置_win10远程桌面怎么保存密码?win10让远程桌面记住密码的方法...
  17. Wrapper中的QueryWrapper常用ge,gt,lt,le具体含义
  18. python判断是否为变位词_[python]变位词的判别与分类
  19. 小度智能音箱维修点_小度音箱客服电话
  20. 群控代理、2016年很火的云豹群控代理

热门文章

  1. 设置SecureCRT配色和解决乱码问题
  2. php数据访问(查询)
  3. 八月22日,django知识点总结:
  4. SVN 服务端、客户端安装及配置、导入导出项目
  5. 解决Java compiler level does not match the version of the installed Java project facet.问题
  6. 无法显示 xml 页 解决方案
  7. MySQL数据库 Too many connections
  8. openresty 环境搭建
  9. 调用WCF返回Josn的两种方式
  10. [导入]Vista的屏幕截图小工具:Snipping Tool