Использование символа @ при локализации приложений

Как известно, существует три способа использования символа @

Сухой, но чёткий язык спецификации сообщает:

“The prefix “@” enables the use of keywords as identifiers, which is useful when interfacing with other programming languages. The character @ is not actually part of the identifier, so the identifier might be seen in other languages as a normal identifier, without the prefix. An identifier with an @ prefix is called a verbatim identifier. Use of the @ prefix for identifiers that are not keywords is permitted, but strongly discouraged as a matter of style.”

Четвёртый способ

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

Поэтому зачастую, скажем, сообщения об ошибках, пишутся либо на английском либо на руском языках, а на этапе локализации методом «пристального всматривания в код» ищутся все нелокализованные строки текста и заменяются на ресурсные константы. По окончании локализации всегда возникает вопрос:

— Все ли строки приложения локализованы?

Наличие в приложении англоязычных соощений об ошибках приводит вынуждает пользователей, английского языка не знающих, сообщать о проблеме в стиле «программа не работает, что-то пишет непонятное». Очень информативно, не так ли? Сидите, разбирайтесь, деньги-то за продукт вы взяли.

Для решения задачи поиска таких строк мной в компании было предложено использовать символ @ во всех строках, которые предполагается впоследствии локализовать. Способ не хитрый, может ещё кто-нибудь додумался.

throw new ErrorException(@"Sawing regime with specified parameters already exists.");

Простой поиск по исходным текстам символа @ выдаст список нелокализованных строк. При этом текст, который в процессе разработки умирает естественной смертью, не «повиснет» в ресурсах приложения.