Я вижу, что большинство приложений разделены между 2. Вещи, которые возвращаются на большинстве страниц, такие как Ok, Cancel, Address, Firstname, ... переходят на глобальные. Конкретные термины идут в местных ресурсах.
Однако в моем предыдущем приложении мы решили не помещать его в ресурсы, а в базу данных. Мы создали пользовательские элементы управления, которые имели свойство translationkey, сопоставленное с уникальным ключом в базе данных. Переводы были помещены в объект Cache, чтобы держать его как можно ближе к элементам пользовательского интерфейса, которые в нем нуждались. Это отлично сработало для нас, и нам нужно было меньше развертываний, поскольку при необходимости переводы можно было бы непосредственно улучшить в производственной базе данных (к счастью, не так часто).
Обновление из-за комментария:
public class TranslationLabel : Label, ITranslation
{
public string TranslationKey { get; set; }
}
В пользовательском классе basePage мы перебрали коллекцию элементов управления и вынули те, которые реализовали интерфейс ITranslation. Затем возьмите ключ перевода и найдите его в словаре, полученном из кэша.
Использование:
<cl:TranslationLabel runat="server" TranslationKey="WarningMessage" />