Через несколько дней после запроса я попытался задать тот же вопрос на официальной странице поддержки для Multilingual App Toolkit, но я также не получил ответа.
В качестве обходного пути к проблеме я написал скрипт на python, который устанавливает все свойства, отличные от .Text
в файлах XLIFF, чтобы они отмечались как translate="No"
.Многоязычный редактор не имеет возможности установить «переводимый» как массовую операцию, и выполнение этого вручную заняло бы бесконечно.
#!/usr/bin/env python
from lxml import etree
import os
NEW_LINE = '\r\n'
def set_translatable(filepath):
"""
Each string in the XLF file is set to translatable False unless
it is the `.Text` attribute that we actually want translated.
"""
doc = etree.parse(filepath)
for d in doc.iter():
if 'trans-unit' in d.tag:
translate = False
for k, v in d.items():
if k == 'id':
if v.endswith('.Text'):
translate = True
translate = 'yes' if translate else 'no'
d.set('translate', translate)
with open(filepath, 'w') as out_file:
doc.write(out_file)
def main():
cwd = os.getcwd()
for subdir, dirs, files in os.walk(cwd):
for file in files:
if filepath.endswith('.xlf'):
set_translatable(filepath)
if __name__ == '__main__':
main()
В Visual Studio мне также приходилось вручную открывать каждую форму и задаватьLocalizable
свойство True
, так что значения .Text
сохраняются в соответствующем .resx
, где Многоязычный набор инструментов приложения может их обрабатывать.