Сначала мы использовали полностью normailized базу данных, но теперь мы сделали ее частично normailzed из-за проблем производительности (для сокращения соединений).
Как говорится "нормализуют, пока это не причиняет боль, денормализуйте, пока это не работает".
довольно распространено в большом, интенсивном использовании dbs видеть степень денормализации для помощи производительности, таким образом, я не волновался бы слишком много об этом теперь, пока производительность состоит все еще в том, где Вы хотите, чтобы он был, и Ваш код для управления "денормализованными" полями не становится слишком обременительным.
, что является возможными решениями, когда размер данных становится очень большим, как нет. из клиентов увеличиваются в будущем?
Не знание слишком много о домене Вашего приложения, трудно сказать, как можно соответствовать требованиям завтрашнего дня, это, но разделяющий недавно используемые и старые данные для разделения таблицы является довольно общий подход в переданных в большой степени базах данных - если 95% пользователей запрашивают их данные с прошлых 30/45 дней, имея "live_data" таблицу, содержащую, скажем, последнюю 60-дневную ценность данных, и "old_data" для более старого материала может помочь производительности.
А хорошая идея состояла бы в том, чтобы удостовериться, что у Вас есть обширный контроль производительности, настроенный так, чтобы можно было измерить уровень дб как данные и загрузить увеличения. При нахождении значимого понижения производительности могло бы быть пора пересмотреть индексы!
Я задавал аналогичный вопрос об ASP.NET и получил первый ответ - этот инструмент и его рабочий процесс могут вам подойти - взгляните: Lingobit Localizer
Кажется, он может загрузить ваше приложение Winforms и позволяет вам начать переводить ваши ярлыки и т. Д. И видеть формы, пока вы это делаете. Множество других функций, таких как добавочный перевод и память переводов (если вы используете одни и те же термины снова и снова).
Выглядит довольно многообещающе (для Winforms) - хотя сам не использовал его.
Вот обширный список потенциальных инструментов локализации .NET - не уверен, насколько хорошо они работают и что они охватывают - посмотрите, может быть, вы найдете то, что ищете.
Marc
]Это огромная тема, и есть много способов добиться того, чего вы хотите. Фреймворк действительно обеспечивает основу, но для полного решения необходимо, чтобы вы реализовали определенные элементы самостоятельно.
Например, реализация фреймворка по умолчанию заключается в создании файла .resx для каждого ресурса. В ASP.Net это означает каждый пользовательский / серверный элемент управления или страницу. Это не поддается легкому обслуживанию, и если вы хотите переместить ресурсы в базу данных, вам необходимо реализовать своего собственного провайдера.
Мое знакомство с Winforms ограничено, но если вы используете Silverlight или WPF, прочтите Guy Смит-Феррье по этому вопросу см. По адресу: http://www.guysmithferrier.com/category/Internationalization.aspx . У него также есть несколько наборов инструментов, которые могут облегчить вам жизнь, по адресу: http://www.dotneti18n.com/Downloads.
У меня нет решения для вашего первого и второго требования, но имейте в виду, что локализовать форму не так просто, как перевести каждое слово. Вам необходимо убедиться, что каждый переведенный текст подходит для соответствующего элемента управления. Кроме того, возможно, у вас есть значок или изображение, которое нужно изменить в другой культуре.
Для третьего пункта вы можете изменить язык вручную с помощью следующих строк:
CultureInfo ci = new CultureInfo("fr");
Thread.CurrentThread.CurrentUICulture = ci;