在移动应用程序中编辑翻译的工具
Mobile-Text-Tool的Python项目详细描述
移动文本工具是一组将翻译导出到^{tt1}的工具$ 以及IOS移动应用程序。它提供了 json,可以读写不同的格式。
功能
- 导入.csv、.xls、.xlsx、.json
- 导出.csv、.json、android资源、ios资源
- 自定义行格式导入和导出
- 字符串转义
- 令牌替换:必须使用{}或{1}..{n}符号 在源文件中
cli
$ update_wordings --help usage: update_wordings [-h] [-o [OUT_FILE [OUT_FILE ...]]] [-a ANDROID_RES_DIR] [-i IOS_RES_DIR] [--android-resname ANDROID_RESNAME] [--ios-resname IOS_RESNAME] [-s] [-f FORMAT_CONFIG] input_file Export wordings for Android & IOS. positional arguments: input_file .csv, .xls, .xlsx, .json formats are supported. optional arguments: -h, --help show this help message and exit -o [OUT_FILE [OUT_FILE ...]], --out-file [OUT_FILE [OUT_FILE ...]] .json or .csv output file path (default: []) -a ANDROID_RES_DIR, --android_res_dir ANDROID_RES_DIR resource directory for android strings (default: None) -i IOS_RES_DIR, --ios_res_dir IOS_RES_DIR resource directory for ios strings (default: None) --android-resname ANDROID_RESNAME filename for android resource (default: strings.xml) --ios-resname IOS_RESNAME filename for ios resource (default: i18n.strings) -s, --split-files Export sections as separate ios and android resource files, comment key is used for naming new files (default: False) -f FORMAT_CONFIG, --format-config FORMAT_CONFIG excel and csv format specifications config file (default: None)
默认CSV和XLS格式规范配置:
{"excel_sheet_reference":0,"key_col":0,"exportable_col":1,"is_comment_col":2,"comment_col":3,"translations_start_col":4,"exportable_value":null,"is_comment_value":null,"metadata_cols":{}}
- excel_sheet_reference:是用于excel导入的工作表编号(int)或名称(string)
- exportable_value:是要在exportable_col中匹配的值,用于判断该值是否将导出到android或ios,可以是字符串或字符串列表,null将与该列中任何非空值的True匹配。
- is_comment_value:与exportable_value相同,用于判断行是否是注释
示例csv或xls表格,默认格式:
key | exportable | is_comment | comment | en | fr | de |
---|---|---|---|---|---|---|
Menu | Yes | Yes | Menu Screen | |||
menu.welcome | Yes | Welcome | Bienvenue | Willkommen | ||
menu.contact | Yes | Contact | Contact | Kontakt | ||
Share | Yes | Yes | Share Screen | |||
share.share | Yes | Share | Partager | Teilen |
从.xlsx文件生成android和ios的翻译:
$ update_wordings my_wordings.xlsx -i out/ios -a out/android
使用自定义资源从android的json文件生成翻译 文件名:
$ update_wordings my_wordings.json -a out/android --android-resname my_strings.xml
python接口
importmobileStrings
阅读:
来自模块text_in的函数read_file(f)支持.xls, .xlsx,.csv,.json文件格式。
languages,wordings=mobileStrings.text_in.read_file('./test_translations.json')print', '.join(languages)
en, fr, de, pt, it, es, nl, zh, ja, pl, pt_BR, ru, id, ko, ar, tr, th, sv
读取自定义格式:
对于表示为.csv和.xls行的格式,可以 用FormatSpec
指定列号specs=mobileStrings.text_in.FormatSpec(0,1,2,3,4,bool,bool,{})# Default format_spec (all params are optional)languages,wordings=mobileStrings.text_in.read_file('./test_translations.csv',specs)print', '.join(languages)
en, fr, de, pt, it, es, nl, zh, ja, pl, pt_BR, ru, id, ko, ar, tr, th, sv
查询:
要按关键字搜索一个词,可以将 Wording到adict
# wordings is a list, create a dict to queryd=dict((w.key,w)forwinwordings)print('# keys: ')print'\n'.join(d.keys())welcome_wording=d.get('menu.welcome')print('\n# '+welcome_wording.comment+':')printwelcome_wording.translations.get('fr')printwelcome_wording.translations.get('de')
# keys: menu.home menu.contact menu.share menu.welcome menu.news menu.share.not.exported menu.infos comment.generated comment.section # Title on menu header: Bienvenue ! Willkommen!
写入:
编写非常简单:使用^{tt27}中的write_函数$ 模块。它支持Android,IOS,json,csv输出 格式。
对于移动应用程序:
mobileStrings.text_out.write_android_strings(languages,wordings,'~/dev/myAndProject/res')mobileStrings.text_out.write_ios_strings(languages,wordings,'~/dev/myIOSProject/res')
CSV示例:
importcStringIOsf=cStringIO.StringIO()# Write csv in a file-like object, for the first 3 languages onlymobileStrings.text_out.write_csv(languages[:3],wordings,sf)printsf.getvalue()sf.close()
key,exportable,is_comment,comment,en,fr,de comment.generated,Yes,Yes,Generated by mobile dev tools - Do not modify,,, menu.welcome,Yes,,Title on menu header,Welcome!,Bienvenue !,Willkommen! menu.home,Yes,,Home item,Home,Accueil,Start menu.news,Yes,,News item,News,Actualités,News comment.section,Yes,Yes,This is a section,,, menu.contact,Yes,,Contact item,Contact,Contact,Kontakt menu.infos,Yes,,Information pages item,Info,Infos,Informationen menu.share.not.exported,,,Share application item - not exported,Share,Partager,Teilen menu.share,Yes,,Share application item,Share,Partager,Teilen menu.share,Yes,,Share application item,,Partager,Teilen