Локализация ресурсов .NET - как их синхронизировать?
Когда мы следуем рекомендациям по локализации, мы получаем по крайней мере пару файлов ресурсов.
Resource.resx
и Resource.CI.resx
, который является конкретным ресурсом CultureInfo
.
Допустим, мы добавили сто строк в Resource.resx
и хотим перевести эти ключи в другой ресурс. мы можем скопировать их прямо сейчас и перевести их, и это может сработать в первый раз.
Однако после того, как мы переводим строки, становится сложно синхронизировать файлы - он автоматически перезаписывает строки, и я в настоящее время не понимаю, каким образом предполагается, что каждая строка локализована.
Так как строки ресурсов должны быть связаны друг с другом и с дополнительной работой, которая выполняется, чтобы убедиться, что сборки спутников построены правильно, я надеялся, что функция будет выглядеть так: "убедитесь, что каждая строка ресурса присутствует в локализованном файле ресурсов" но я боюсь, что этого не хватает..
Ответы
Ответ 1
RESX Synchroniser может сделать вам то, что вы ищете
При редактировании файлов .NET Resource в Visual Studio, либо вручную, либо используя "Генерировать локальные ресурсы", команды, IDE обновляет только культурно-инвариантные ресурсы: если вы иметь файл ресурсов, называемый Messages.aspx, файлы в других Языки, например, Messages.it-IT.resx, не обновляются, и вам нужно сделать это вручную. Синхронизатор RESX помогите вам сохранить файлы ресурсов синхронизированы, добавив новые ключи в локализованные файлы и удаление удаленные. Комментарии сохранены во время процесса.
Ответ 2
Я только что нашел http://zetaresourceeditor.codeplex.com/, похоже, похоже на аналогичную идею другим
Ответ 3
может быть UnitTest
может вам помочь? вы знаете, какой текст должен иметь каждый элемент управления после его создания после добавления новых строк для отображения и сравнения значений. после тяжелой работы вы можете проверить свою работу по локализации.
Ответ 4
Я предлагаю вам программно создавать файлы ресурсов для культуры, используя файл Resx для этой Winform.
Вы можете создать небольшое приложение, которое вы могли бы запускать время от времени.
Создайте XML-тип файла для каждой культуры, такой как fr.XML, заполните его Союзом всех строк в вашем проекте. И предоставите там сами переводы, например, файл на французском языке может выглядеть следующим образом.
< wordTranslation>
< Word>Hello< /Word>
< Translation>Bonjour< /Translation>
< /wordTranslation>
Создайте хэш-таблицу или некоторую структуру данных, которая лучше всего будет действовать в качестве словаря для каждой культуры, заполнить ее данными из определенных XMl файлов, таких как frDictionary.
Для каждого файла Resx в вашем проекте, например, wind1.resx, создайте файл, соответствующий культуре, например wind1.fr.resx.
Прочитайте слова от wind1.resx, найдите перевод слова из frDictionayry.
Напишите его на wind1.fr.resx.
Вы можете продолжать обновлять свои переводы в XML файле.
Так что это одноразовое усилие.
Таким образом, вы можете сохранить синхронизацию и легко ремонтироваться.
Ответ 5
Я знаю, что это уже получили традиционные ответы, но я также хотел бы предложить что-то совершенно оригинальное, которое мы пробовали (и преуспели) для себя для более эффективной локализации Silverlight:
Локализация проектов Silverlight после завершения
(Resx - это "прошлый век" )
Ответ 6
Вы подразумеваете синхронизацию переводов между этими файлами? Используйте http://www.getlocalization.com и загружайте оба в качестве основных файлов, когда они транслируются, переводы заполняются во все ваши файлы.
Ответ 7
Я думаю, вы можете попробовать Amanuens. Он разработан тем же автором RESX Synchronizer и, кроме того, помогает синхронизировать файлы ресурсов (даже автоматически в ваш репозиторий, если вы его установили), можно использовать, чтобы предоставить переводчикам доступ к строкам для перевода в очень мощный и простой в использовании веб-сайт редактор.
Ответ 8
немного старое это обсуждение, но все же интересно. посмотрите ResXManager