Перевод файлов ресурсов .NET .resx с сохранением структуры: на выходе Strings.de.resx
Загрузите один или несколько файлов .resx и получите для каждого сателлитный файл на новом языке (например, Strings.de.resx) с переводом всех строковых значений. Имена ресурсов, блок resheader, комментарии и нестроковые ресурсы (например, изображения) останутся в неизменном виде. Задача объёмом до 300 значений переводится полностью бесплатно; задачи большего размера — за $5 (разовый платёж).
- Переводится значение каждого строкового ресурса; атрибут name остаётся нетронутым
- Записи resheader и элементы comment не переводятся
- Ресурсы с атрибутами type или mimetype (изображения, массивы байтов, другие объекты) пропускаются
- Плейсхолдеры вроде {0} и {name} проверяются в каждом значении
- Strings.resx возвращается как Strings.de.resx — именно с таким именем, которого ожидает .NET
Как перевести файлы .resx
-
1
Загрузите файлы .resx
Перетащите нейтральные файлы .resx вашего проекта, например Strings.resx и Errors.resx, и выберите язык.
-
2
Оцените первые значения бесплатно
Первые переведённые строки появятся рядом с оригиналом. При необходимости отредактируйте их перед оплатой.
-
3
Откройте полный результат и добавьте файлы в проект
Откройте полный результат для всей задачи за $5, скачайте файлы (при нескольких файлах — в архиве ZIP) и поместите их рядом с оригиналами.
Что именно инструмент меняет в файле .resx
Файл .resx представляет собой XML. Каждый строковый ресурс — это элемент data с атрибутом name и вложенным элементом value. Переводится только текст внутри элемента value. Элемент comment, в котором часто содержатся примечания для переводчика, остаётся нетронутым, как и записи resheader, сообщающие .NET правила чтения файла.
Файл не парсится и не пересобирается с нуля: инструмент заменяет только символы каждого значения, благодаря чему порядок ресурсов, атрибуты xml:space и исходное форматирование сохраняются. Спецсимволы вроде & и < в переводе экранируются корректно.
Плейсхолдеры и именование файлов
Составные плейсхолдеры вроде {0} или {1}, а также именованные переменные вроде {count} проверяются при каждом переводе: если значение потеряло плейсхолдер, оно переводится заново, а в крайнем случае остаётся на исходном языке, чтобы String.Format не вызывал ошибок при выполнении.
Каждый файл возвращается с кодом локали перед расширением (например, Strings.resx превращается в Strings.de.resx) — именно по такому шаблону диспетчер ресурсов находит вспомогательные сборки.
Как работает инструмент, сколько он стоит и как обрабатываются ваши файлы — на странице Перевод JSON, XML и YAML; цены на все инструменты — на странице цены.
Обновлено
Вопросы и ответы
Можно ли перевести файлы .resx, ничего не сломав?
Да. Изменяется только текст внутри тегов value. Имена, заголовки, комментарии и нестроковые ресурсы остаются нетронутыми, а плейсхолдеры вроде {0} проходят проверку.
Можно ли загрузить сразу несколько файлов .resx?
Да. Загрузите их вместе и скачайте один ZIP-архив с переведёнными версиями всех файлов.
Переводятся ли комментарии?
Нет. Элементы comment остаются без изменений, поэтому примечания для переводчиков и разработчиков сохраняются на исходном языке.
Сколько это стоит?
Задача объёмом до 300 значений бесплатна полностью. Для задач побольше — разовый платёж $5 (до 50,000 значений), а тариф Unlimited за $19 в неделю покрывает до 200,000 значений.