2016-02-12 3 views
1

В моем офисе мы обсуждали, что будет лучшим способом обработки локализации наших настольных приложений.Должен ли я хранить данные локализации для настольных приложений в базе данных?

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

Приложения (созданные с использованием C#) развертываются в высоко контролируемой среде для внутреннего использования с помощью инструментов, которые обрабатывают сама публикация, а также текущие обновления. У нас есть один репозиторий для распространения файлов и один сервер базы данных для обработки нескольких спутниковых сайтов.

Будет ли база данных жизнеспособным решением для обработки пользовательских интерфейсов в настольном приложении?

+0

Звучит нормально, но это не лучший способ для всех. Это может быть лучше всего в вашем сценарии (сначала рассмотрите все). Вопрос в том, почему ресурс вреден для вас? Почему база данных? Уметь быстро обмениваться обновлениями локализации? Как часто это происходит? Являются ли преимущества недостатками? Только вы можете ответить на эти и другие вопросы. В настоящее время вопрос слишком широк (если мы попытаемся рассмотреть все) или основанное на мнениях (как все могут подумать о его сценарии). – Sinatr

+0

@Sinatr Ну, идея инициатора по использованию базы данных для хранения переводов - это позволить нам «централизовать локализацию» для повторного использования переводов между приложениями. Это, конечно, приводит к проблемам, в которых файлы ресурсов свободны - это зависит от сети и значительно медленнее. Мне было интересно, есть ли способ смягчить недостатки базы данных и по-прежнему сможет извлечь выгоду из остроконечных ошибок. –

+0

Вы можете создать собственную локализацию. Я использую txt-файлы, которые загружаются при запуске приложения и используются для обновления свойств статического класса с помощью отражения. Тогда все, что вам нужно, это простой механизм для получения версии и загрузки полных переводов (если версия более новая, чем клиент уже имеет). База данных должна делать. – Sinatr

ответ

0

Есть несколько моментов, вы должны рассмотреть

  • Применение, как ожидается, значительно возрастет
  • Применение может потребовать, чтобы иметь особые случаи (клиентские конкретные переводы)
  • То же translation_key имеет другое значение на различные экраны/окна/в другом контексте
  • Ручное управление в локальных файлах занимает много времени, а не просто/из коробки для обработки

Если один рудные больше очков от выше матча бизнес-планов для приложения (ы), то вы должны рассмотреть возможность использования базы данных и кэш сервера

Давайте предположим, что вы начинаете добавлять новый экран (форма) к заявке , В этой форме у вас есть 3 элемента интерфейса (element1, element2 и element3). Там должна быть централизованной локализации обслуживания (бизнес-объект), который выполняет следующие действия

  • Читать все формы
  • Прочитайте каждый элемент в виде (здесь вы можете фильтровать соответствующие элементы, которые могут содержать многоязычный текст, как этикетки, кнопки и т. д. и исключить панели)
  • Является ли приложение в режиме клиента? (предположим, что ваше приложение будет иметь при запуске/входе выбор для клиента - различный внешний вид, разные тексты и т. д.)
  • Попробуйте получить перевод Ключ от встроенного кеша сервера (основанная на словаре структура данных, содержащая applicationCode (или ключ), customerKey, переводKey и значение). Ключ перевода может быть formName.uiElementName
  • Если ключ не найден в кэше, попытайтесь получить его из базы данных
  • Если не найден в базе данных (вновь добавленной форме и с его элементами пользовательского интерфейса), то попробуйте добавить новую запись в БД (applicationKey, customerKey, translationKey, пустое значение)
  • Если найден в базе данных, то добавьте запись в кэше
  • Вы можете иметь меню администратора, чтобы очистить закэшированные

Теперь построить централизованное приложение для управлять базой данных локализации. Управляйте текстом здесь, и вы можете использовать его для текущих приложений, но также и будущих приложений.

+0

Вы поняли, что я думаю. Использование кеша для клиентского приложения действительно может устранить большинство проблем с хранилищем для преобразования баз данных. Мы могли бы создать триггер в базе данных, чтобы публиковать изменения в репозитории файлов, а затем использовать инструмент updater, который нам уже нужно, чтобы просто распространять новый файл перевода на рабочие станции. –

0

Крайне важно иметь централизованную службу локализации, но создание централизованного приложения для управления базами данных локализации может быть серьезным делом (временем и деньгами). Если вы ищете быстрое и простое решение и не против коммерческого продукта, вы можете изучить Passport. Он предоставляет функции управления пользователями, которые вам нужны (например, локализация), а также другие функции, которые вам, вероятно, нужны, но не имеют времени на запись. Они, как правило, включают:

  • Войти отслеживания
  • отчетности (, регистрации и входа в систему отчетов активных пользователей)
  • Emailing пользователей
  • разрешения на основе ролей
  • Единый вход в систему через OAuth
  • и А bunch more

Прост в установке и может успешно обрабатывать переводы пользовательского интерфейса в настольном приложении. Если вы ожидаете значительного роста и специфических для клиента переводов Passport может масштабироваться с вами.

Смежные вопросы