Подтвердить что ты не робот

Как вы локализуете веб-сайт, основанный на базе данных

Я играл с .NET, встроенными в функции локализации, и они, похоже, все полагаются на размещение данных в файлах resx.

Но большинство систем не могут полагаться на это, потому что они управляются базой данных. Итак, как вы решаете эту проблему? Есть ли встроенный способ .NET, или вы создаете таблицу переводов в SQL и выполняете все это вручную? И если вам нужно сделать это на большинстве ваших сайтов, есть ли какая-либо причина даже использовать способ локализации resx?

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

4b9b3361

Ответ 1

По-моему, локализация динамического контента (например, ваших часто задаваемых вопросов) должна выполняться вами в вашей базе данных. В зависимости от того, как хранятся ваши вопросы, я бы, вероятно, создал столбец "locale" и использовал это при выборе вопросов из базы данных. Я не уверен, что это будет очень хорошо масштабироваться, когда вы начнете локализовать множество таблиц.

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

Вот некоторые ссылки:

Ответ 2

Для данного элемента в вашей модели данных разделите часть описания на локализованную таблицу с столбцом идентификатора локали (LCID).

Таким образом, таблица Product не будет содержать описания или имя продукта, а только его жесткие и быстрые значения (ProductId, EAN, NumberInStock, NextStockData, IsActive, IsPublished) и т.д.

ProductDescription затем содержит  ProductId, Name, Description, LCID

Ответ 3

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

Вариант A

Item (ItemID, ...)
ItemLocal (ItemID,LocaleID,....)

Вариант B

Item (ItemID, ...)
Item_ENUS (ItemID,....)
Item_ENGB (ItemID,....)
Item_FR (ItemID,....)

Третий вариант, который я подумал о недавнем, что было бы очень приятно, если бы база данных поддерживала его, это было бы сохранение значений для всех локальных пользователей в одном поле. И если поле было настроено как varchar-multilocal, тогда вам придется получить к нему доступ, передав параметр для указания языка. Ничего подобного не существует, поскольку я знаю это, но это то, что, я думаю, действительно облегчило бы вещи, и было бы намного более жидким.

Ответ 4

В настоящее время перевод не является чем-то, что можно сделать автоматически. Лучший способ - заставить человека перевести и использовать методы Ника, чтобы показать правильный язык.