
您好,我叫Alexander,我是一名Android应用程序开发人员。 一旦我进入一个具有11种界面语言和600多行代码的项目。 客户方面没有程序员,因此他们将整个内容存储在Excel电子表格中。 当他们更改其中的某些内容时,他们用“我们用黄色突出显示了单元格,分别更新了Android和iOS应用程序”的字样将此表发送给我们。 此后,两个开发人员损失了几个小时,需要手动进行更改。 然后发现有人忘记了某个地方,犯了一个错误或没有完成它,平台之间存在差异,客户感到紧张,开发人员吓到了。 这种情况根本不适合我,我开始寻找自动从Excel卸载行的方法。 结果是很棒的VBScript代码,我们仍然喜欢使用它。 现在,我将向您介绍此脚本。 下切,一定数量的图片和脚本代码。
因此,首先看一下表格本身并评估问题的严重性:

她在那里,美女! 如我们所见,有几个服务列,全局行名称及其翻译。 此外,某些行仅以英语和德语显示,因为在该应用程序的2.0版中,客户决定暂时只保留两种语言,然后再添加其余语言。 也许他可怜翻译员的钱。 但这是他的事,但我们必须考虑到这一点。 也就是说,脚本应跳过空单元格,而不应为这种语言创建空行。 此外,必须考虑单元格F5中的格式化字符,例如“%s”。 他们将不得不合作,因为Android在iOS中擅长的领域应替换为“%@”。 我会告诉您其他过程中的细微差别。
为了不让猫腻也不会拉尾巴,我现在将整个脚本发布:
现在是细微差别的时候了。
我们的应用程序需要多个用户权限。 在iOS上,用于请求这些权限的行不是通常存储在Localizable.strings中,而是存储在InfoPlist.strings中,因此,在脚本的开头,我们定义了将要提交到InfoPlist的那些行的名称:
Const NsCameraUsageDescription = "NsCameraUsageDescription" Const NSLocationAlwaysAndWhenInUseUsageDescription = "NSLocationAlwaysAndWhenInUseUsageDescription" Const NSLocationAlwaysUsageDescription = "NSLocationAlwaysUsageDescription" Const NSLocationWhenInUseUsageDescription = "NSLocationWhenInUseUsageDescription" Const NSPhotoLibraryAddUsageDescription = "NSPhotoLibraryAddUsageDescription" Const NSPhotoLibraryUsageDescription = "NSPhotoLibraryUsageDescription"
下一个值得注意的片段是将保存所有文件的文件夹的名称。 在iOS上,所有文件夹都以两个字母的语言名称命名,例如“ en.lproj”,“ de.lproj”。 除俄语外,其他所有内容均为“ ru-RU”。 在表格本身中,各列均采用Android表示法。 因此,parsim:
If objFSOandroid = "values" Then objFSOios = "en" & ".lproj" ElseIf objFSOandroid = "values-ru" Then objFSOios = "ru-RU" & ".lproj" Else objFSOios = Right(objFSOandroid,2) & ".lproj" End If
最后一个任务是替换和转义字符。 对于iOS,正如我所说,我们会将%s更改为%@,并转义引号和撇号:
iOSString = Replace(oTranslations.Sheets(1).Cells(nCounter, LanguageColumnIndex).Value, "%s", "%@") iOSString = Replace(iOSString, "'", "\'") iOSString = Replace(iOSString, chr(34), "\" & chr(34))
对于Android,我们还转义了撇号,并用通常的换行符\ n替换了所谓的换行符(Chr(10) )。 这是有原因的。 在其中一个单元格中,我们有一个相当大的文本,由客户在MS Word中编译,并使用技术复制粘贴功能放置在Excel单元格中。 虽然我们没有通过反复试验找到合适的替代方法,但在iOS中,该文本显示在必要的段落中,而在Android中,该文本合并为一个段落。
结论
您可能已经猜到了,该脚本在Windows命令行中运行。 为了简单起见,我们将脚本和.xlsx文件放在一个文件夹中,转到那里的命令行并编写命令:
cscript ConvertExcelToTXTandXML.vbs <filename>.xlsx
接下来,按Enter键,以脚本的精美可视化形式显示在程序的每个步骤的命令窗口中。 脚本的大量工作的结果是两个文件夹“ ios”和“ res”,其内容分别保留要复制到iOS和Android项目。
仅此而已。 我希望该脚本对某人有用,并节省大量时间。