Определить текст позиции


В ASP.NET, приложение может быть локализовано с помощью файлов ресурсов. Файлы ресурсов содержат различные переводы. Например, можно иметь английский файл ресурсов и испанский файл ресурсов. При использовании файлов ресурсов атрибут может быть применен к элементам управления на веб-странице для автоматического заполнения этого элемента управления значениями из файла ресурсов. Кроме того, значения могут быть программно загружены из файла ресурсов и назначены свойству элемента управления.

ASP.NET использование запасной механизм для загрузки переводов. Он пытается найти файл ресурсов, наиболее схожий с культурой текущего пользователя. Если культура текущего пользователя является испанской, ASP.NET пытается загрузить соответствующий ресурс из испанского файла ресурсов. Если испанский ресурс недоступен, он возвращается к файлу ресурсов по умолчанию. Из-за такого поведения текст для испанского пользователя может отображаться на языке по умолчанию по двум причинам:

    Перевод на испанский язык отсутствует. (Переводчики еще не предоставили перевод для этого пункта.)
  1. текст не локализован. (Это может быть результатом того, что на странице появляется простой текст или сообщение где-то жестко закодировано.)

Если текст появляется на языке по умолчанию, я хочу знать, было ли это из-за причины 1 или из-за причины 2.

Для каждого пропущенного перевода я мог бы вставить какой-то текст-заполнитель в файл ресурсов. Однако это означает, что я выбрасываю запасной механизм. Еще хуже, если текст-заполнитель случайно попадает в производство, он выглядит намного хуже, чем текст по умолчанию.

Есть ли у кого-нибудь предложения (или решения) для определения того, какое из этих двух условий является причиной появления текста по умолчанию во время ручного тестирования?

1 2

1 ответ:

Если я правильно вас понял, вы хотите проверить, что каждый локализуемый текст действительно локализуется и не записывается в коде. Для этого не следует использовать реальную культуру (испанский язык), вместо этого следует создать ресурсы для поддельной неподдерживаемой культуры и обеспечить автоматический перевод для каждой локализуемой записи ресурса, доступной в ресурсах по умолчанию.

Например, если у вас есть ресурс по умолчанию, содержащий:

  • Запись1: это тест!

Вы должны создать ресурс в вашей поддельной культуре, содержащий:

  • Entry1: Th1s 1s @ t€st!

Вы даже можете (и должны) выполнять создание поддельных ресурсов автоматически, используя простое сопоставление символов. Таким образом, когда вы устанавливаете приложение для использования вашей собственной поддельной культуры, вы знаете, что каждая запись имеет перевод, поэтому вы можете найти закодированный текст. эта стратегия используется Windows и известна как псевдо-локали. То использование псевдотранслированных строк делает возможным разработку с использованием поддельной культуры, поскольку текст все еще читаем, и это повышает вероятность нахождения жестко закодированного текста.

Windows поддерживает псевдо-локали, начиная с Windows Vista и Windows 2008 R2, поэтому, если ваша среда сборки и тестирования использует эти операционные системы, вы можете связать свою поддельную культуру с одним из этих псевдо-локалей (например qps-ploc). Если у вас есть неподдерживаемые операционные системы просто ассоциируйте ваши поддельные ресурсы для реальной культуры, которую вы, вероятно, никогда не будете поддерживать или просто создадите свою собственную культуру.

Также обратите внимание, что даже в поддерживаемой операционной системе Visual Studio не будет создавать вспомогательные сборки для этих псевдо-локалей, если вы не включите их в реестре .