Многоязычность (английский, голландский, финский, французский, венгерский, бангла, итальянский) в ASP.NET с SQL сервером! - PullRequest
0 голосов
/ 11 мая 2010

Я занимаюсь разработкой веб-приложения в ASP.NET 3.5 с использованием SQL Server 2008. Мне требуется несколько языков, например английский, голландский, финский и т. Д. Я могу сделать это с помощью System.Resources и System.Globalization. но я не могу преобразовать язык, данные которого поступают из базы данных. Как я могу решить это ???

Ответы [ 2 ]

3 голосов
/ 12 мая 2010

Я бы рекомендовал использовать две таблицы для таблицы, которую нужно локализовать.
Пример:

Product
-------------------------------
ProductID  |  Price   |  Stock 
-------------------------------
10         |   10     |   15


ProductLoc
-----------------------------------------------
ProductID  | Lang   | Name      |  Description
-----------------------------------------------
 10        |  EN    | Bike      |  Excellent Bike 
 10        |  ES    | Bicicleta |  Excelente bici 

Таким образом, вы можете использовать:

SELECT * FROM 
Product LEFT JOIN ProductLoc ON Product.ProductID = ProductLoc.ProductID 
                               AND ProductLoc.Lang = @CurrentLang

(Соединение влево на случай, если в таблице ProductLoc нет записи для текущего языка)

Отказ от ответственности: Текст взят из другого моего ответа

1 голос
/ 12 мая 2010

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

Вы даже можете написать сами параметризованные скалярные функции, которые будут выполнять правильный запрос для вас, поэтому вместо:

select LabelText
    from LabelTexts
    where LanguageId = 1
        and FormName LIKE N'frmMain'
        and LabelName LIKE N'label1'

Вам потребуется только создатьи вызовите его так:

select dbo.GetLabelText(N'frmMain', N'label1', 1)

И тело функции закодировано так же, как в вышеупомянутом операторе SELECT.Не забудьте создать индексы для соответствующих полей для повышения производительности ваших запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...