
Olá, meu nome é Alexander e sou desenvolvedor de aplicativos Android. Uma vez eu entrei em um projeto que tinha 11 linguagens de interface e mais de 600 linhas. Como não havia programadores do lado do cliente, eles armazenaram tudo em uma planilha do Excel. Quando eles mudaram algo, enviaram-nos esta tabela com as palavras "Destacamos células com alterações em amarelo, atualizando aplicativos Android e iOS, respectivamente". Depois disso, dois desenvolvedores perderam algumas horas, fazendo alterações manualmente. E então descobriu-se que alguém havia esquecido algo em algum lugar, cometeu um erro ou não terminou, houve discrepâncias entre as plataformas, o cliente estava nervoso, os desenvolvedores estavam em pânico. Como essa situação não me agradava, comecei a procurar maneiras de automatizar o descarregamento de linhas do Excel. O resultado foi um ótimo código VBScript, que ainda gostamos de usar. Agora vou apresentar esse script para você. Sob o corte, um certo número de imagens e código de script.
Portanto, primeiro dê uma olhada na própria tabela e avalie a escala do problema:

Lá está ela, beleza! Como podemos ver, existem várias colunas de serviço, nomes de linhas globais e suas traduções. Além disso, algumas linhas são apresentadas apenas em inglês e alemão, pois na versão 2.0 do aplicativo, o cliente decidiu deixar apenas dois idiomas por enquanto e adicionar o restante posteriormente. Ou talvez ele tenha pena do dinheiro dos tradutores. Mas isso é assunto dele, mas temos que levar isso em conta. Ou seja, o script deve pular células vazias e não criar linhas vazias para esse idioma. Além disso, caracteres de formatação como "% s" na célula F5 devem ser considerados. Eles terão que trabalhar, porque o que o Android é bom no iOS deve ser substituído por "% @". Vou falar sobre as outras nuances ao longo do caminho.
Para não definhar e não puxar o gato pela cauda, postarei o script inteiro agora:
VBScript em toda a sua glória Agora é a hora de passar pelas nuances.
Nosso aplicativo requer várias permissões de usuário. No iOS, as linhas para solicitar essas permissões são armazenadas não como de costume em Localizable.strings, mas em InfoPlist.strings, portanto, no início de nosso script, definimos os nomes dessas linhas que serão enviadas ao InfoPlist:
Const NsCameraUsageDescription = "NsCameraUsageDescription" Const NSLocationAlwaysAndWhenInUseUsageDescription = "NSLocationAlwaysAndWhenInUseUsageDescription" Const NSLocationAlwaysUsageDescription = "NSLocationAlwaysUsageDescription" Const NSLocationWhenInUseUsageDescription = "NSLocationWhenInUseUsageDescription" Const NSPhotoLibraryAddUsageDescription = "NSPhotoLibraryAddUsageDescription" Const NSPhotoLibraryUsageDescription = "NSPhotoLibraryUsageDescription"
O próximo fragmento digno de nota são os nomes das pastas em que todos os arquivos serão salvos. No iOS, todas as pastas são nomeadas com uma designação de idioma de duas letras, como "en.lproj", "de.lproj". Tudo, exceto russo, aqui é "ru-RU". E na própria tabela, as colunas estão na notação Android. Portanto, 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
E a última tarefa, substituindo e escapando caracteres. Para iOS, mudaremos, como eu disse, % s para % @ e escaparemos de aspas e apóstrofes:
iOSString = Replace(oTranslations.Sheets(1).Cells(nCounter, LanguageColumnIndex).Value, "%s", "%@") iOSString = Replace(iOSString, "'", "\'") iOSString = Replace(iOSString, chr(34), "\" & chr(34))
Para o Android, também escapamos dos apóstrofos e substituímos o chamado caractere de alimentação de linha ( Chr (10) ) pelo caractere usual de nova linha \ n . E há uma razão para isso. Em uma das células, temos um texto bastante grande, compilado pelo cliente no MS Word e colocado na célula do Excel usando pasta de cópia técnica. E, embora não tenhamos encontrado a substituição correta por tentativa e erro, no iOS o texto foi exibido nos parágrafos necessários, e no Android foi mesclado em um parágrafo.
Conclusão
Como você provavelmente já adivinhou, o script é executado na linha de comando do Windows. Para simplificar, colocamos o script e o arquivo .xlsx em uma pasta, acessamos a linha de comando e escrevemos o comando:
cscript ConvertExcelToTXTandXML.vbs <filename>.xlsx
Em seguida, pressione Enter e desfrute de uma bela visualização do script na forma de pontos que aparecem na janela de comando para cada etapa do programa. O resultado do trabalho titânico de nosso script são duas pastas "ios" e "res", cujo conteúdo ainda precisa ser copiado para o projeto iOS e Android, respectivamente.
Isso é tudo. Espero que este script seja útil para alguém e economize muito tempo.