Должен ли я хранить контент локализации в состоянии приложения

StackOverflow https://stackoverflow.com/questions/1323409

Вопрос

Я разрабатываю свой первый многоязычный сайт C#, и все идет нормально, за исключением одного важного аспекта. Я не на 100% уверен, какой лучший вариант для хранения строк (обычно отдельных слов), который будет переведен кодом из моего кода за страницами.

На передней части сайта я собираюсь использовать файлы ресурсов ASP.NET для формулировки на страницах. Эта часть в порядке. Тем не менее, этот сайт будет делать вызовы XML, а ответы XML - только когда -либо на английском языке. Мне дали лист Excel со всеми словами, которые будут возвращены XML, разбитым на разные языки, но я не уверен, как лучше всего хранить/получить доступ к этой информации. Есть примерно 80 слов x 7 языков.

Я думаю о создании словарного объекта для каждого языка, который создается моим файлом Global.asax во время выполнения приложения, и просто сохранить его в памяти. Плюс сторона для этого заключается в том, что объект словаря должен быть создан только один раз (до перезапуска IIS) и может получить доступ к любому пользователю без необходимости восстановления, но недостатком является то, что у меня 7 словарных объектов, постоянно хранящихся в памяти. Сервер - это 64 -битная победа в 2008 году с 4 ГБ оперативной памяти, поэтому я должен быть вообще беспокоиться о памяти, используемой с помощью этого метода?

Как вы думаете, что, ребята, будет лучшим способом хранения/извлечения разных языковых слов, которые будут использоваться всеми пользователями?

Спасибо за ваш вклад.

Богатый

Это было полезно?

Решение

Из того, что вы говорите, вы смотрите на 560 слов, которые должны отличаться в зависимости от локали. Это капля в океане. Метод файла ресурсов, который вы предполагали, подходит для цели, и я бы порекомендовал использовать их. Они интегрируются с элементами управления, поэтому вы будете максимально использовать их.

Если бы вам было неприятно, вы могли бы иметь их в скользящем кеше, например, кеш скольжения 20 минут, но я не вижу ничего плохого в вашем выборе в этом решении.

Омо

Ваше здоровье,

Эндрю

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

http://msdn.microsoft.com/en-us/magazine/cc163566.aspx

Другие советы

Пока вы знаете о влиянии этого, то да, хранение этих данных в памяти было бы хорошо (если у вас достаточно, чтобы сделать это). Как только вы узнаете, что подходит для текущего пользователя, то бросить его в память будет хорошо. Вы можете взглянуть на что -то вроде Memcached Win32 или скорость, чтобы разгрузить хранилище на другой сервер приложений. Используйте это даже в своем локальном приложении в течение времени, когда пришло время подтолкнуть это к другому серверу или увеличить ваше приложение, у вас есть четкое разделение проблем, определенных на вашем уровне кэширования. И имейте в виду, что чем больше языков вы поддерживаете, тем больше вещей, которые вы храните в памяти. Следите за объемом данных, хранящиеся в памяти на вашем одиночном сервере приложений, так как это может быть ошеломляющим во времени. Кроме того, убедитесь, что используемые вами ключи специфичны для языка. В противном случае вы можете обнаружить, что храните меню на немецком языке для английского пользователя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top