命令行工具,用于检查CommCare应用的批量翻译文件在翻译间是否具有一致的 <输出值.../> 标签。
项目描述
CommcareTranslationChecker
https://github.com/dimagi/CommcareTranslationChecker
一个命令行工具,用于检查批量翻译文件的多列之间,以确保输出值标签在列间的一致性。
安装
0a. 安装Python和pip
。此工具已在Python 2.7和3.6上进行了测试。
1. 通过pip
安装CommCare翻译检查器
$ pip install CommcareTranslationChecker
基本命令行用法
命令行工具的基本用法是与已保存的Excel文件一起使用。这可以配置为表单翻译或应用程序翻译
$ CommcareTranslationChecker <relative or absolute path to translation file>
默认情况下,该程序将读取指定的文件,并检查所有以 "default_" 开头的列与最左侧的 "default_" 列进行比较。如果任何列中“输出值”标签的列表存在差异,将在“commcareTranslationChecker_output”文件夹中生成一个文件。如果相对于当前路径不存在此类文件夹,则将其创建。此文件将是输入文件中数据的精确副本,并在每个工作表中附加一个名为“mismatchFlag”的额外列。对于检测到差异的所有行,此列将标记为“Y”,否则为“N”。此外,所有与最左侧列的“输出值”标签不同的单元格将被红色填充,以便于视觉参考。
如果翻译文件包含一个名为 Modules_and_forms 的工作表,并且有一个名为 sheet_names 的列,则工具将检查此列中的每个值是否对应于工作簿中的一个工作表名称。如果不是,输出文件中 sheet_names 列中相应的单元格将被突出显示为红色。
文件创建后,将打印一个摘要,概述每个工作表中发现差异的行数。
通过导入使用
>>> import openpyxl
>>> from CommcareTranslationChecker import validate_workbook
>>> messages = []
>>> wb = openpyxl.load_workbook("examples/TranslationCheckerTest_BulkAppTranslation.xlsx")
>>> validate_workbook(wb, messages)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "CommcareTranslationChecker/CommcareTranslationChecker.py", line 527, in validate_workbook
raise FatalError("Some fatal error message.")
CommcareTranslationChecker.exceptions.FatalError: Some fatal error message.
>>> messages
['There were issues with the following worksheets:', u'moduleX_formY is missing from the workbook.']
高级命令行用法
除了概述的基本用法外,还有一些可选参数可以提供更定制化的体验。
$ CommcareTranslationChecker --columns <comma-separated list of column names to check> \
--base-column <name of column to be compared against, if different from left-most> \
--output-folder <relative or absolute path to folder in which to save output file> \
--ignore-order \
--verbose \
--no-output-file \
--configuration-sheet <name of sheet containing meta information about other sheets in the workbook> \
--configuration-sheet-column <name of column in configuration-sheet containing expected sheet titles> \
--output-mismatch-types \
--format-check \
--format-check-characters <sequence of characters whose counts will be compared by format check> \
--format-check-characters-add <sequence of characters to add to the current format check character list> \
以下五个选项不包含输入参数,具体如下:
- --ignore-order 如果传递,则比较单元格时不会考虑输出值标签出现的顺序。这在输出值标签的顺序因涉及语言之间的词序差异而不同时很有用。
- --verbose 如果传递,则输出将打印到屏幕上,指出文件中哪些行有问题。
- --no-output-file 如果传递,则不会创建输出文件。
- --output-mismatch-types 如果传递,将在输出中包含有关差异的更多信息。如果生成输出文件,此信息将作为附加列附加到每个工作表上,该列包含包含错误的每个语言列。如果传递了 --verbose 标志,则此信息将添加到输出中的每一行。
- --format-check 如果传递,则将在列之间比较任何特殊字符的数量添加一个额外的检查。默认字符列表为 ~`!@#$%^&*()_-+={[}]|\:;"'<,>.?
请参阅 CommcareTranslationChecker --help
以获取选项的完整列表。
发布过程
1. 为发布创建标签
$ git tag -a "X.YY.0" -m "Release X.YY.0"
$ git push --tags
2. 创建源分发
确保存档具有正确的版本号(与标签名称匹配)。
$ python setup.py sdist
3. 创建 wheel
$ python setup.py bdist_wheel --universal
4. 上传到 pypi
$ pip install twine
$ twine upload dist/CommcareTranslationChecker-X.YY.0*
5. 验证上传
https://pypi.python.org/pypi/CommcareTranslationChecker
6. 在 github 上创建发布
https://github.com/dimagi/CommcareTranslationChecker/releases
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。