03.09.2017 Попинайте метод локализации приложений
 
Вот к чему пришел:

1. Избавляемся от ключей. Вместо ключа (типа MainPageHeaderText1) юзать сам текст (ака "My Cool Service"). Ключи -- лишняя сущность. Они допустимы только когда текста реально много.

2. Одного текста не достаточно -- нужна еще и категория, иначе сложно переводить (не ясно к чему относится). Т.е. в итоге присвоение строке локализованного значения выглядит примерно так:

headerText = Translate(nameof(Page1), "My Cool Service");


При желании вместо "My Cool Service" можно указать и ключ, если текст очень длинный.

3. Список на локализацию должен формироваться автоматически. Т.е. открыли страницу а перевода для фразы "My Cool Service" еще нет. По умолчанию отдается то что в коде и сразу же создается запись в таблице переводов (с пустым переводом, конечно). Т.е. чтобы собрать полный список на перевод -- вам всего лишь нужно пройтись по всем возможным формам приложения (а без этого и не протестите).

Т.е. вручную не нужно вносить "My Cool Service" в базу -- оно там само появится, как только выполнится Translate(nameof(Page1), "My Cool Service"). А далее можете отдавать переводчику все что есть в базе. Если там появилось не все -- значит тестеры открыли не все страницы и/или протестировали не все возможные ситуации.

Критика?

 
 
 
 
10.12  .NET Reactor
15.11  n
15.11  C# ClickOnce