2012-04-04 4 views
2

У меня есть сценарий в веб-приложении, где пользователь выбирает страну из выпадающего списка. Как только страна будет выбрана, локализованные поля под списком стран также будут соответствовать этой стране. Здесь мне также нужно, чтобы эта страна была предварительно отобранной и выпадающей список, предварительно заполненный на основе языка этой страны.Как создать пользовательский интерфейс на основе объекта локализации в ASP.Net?

Позвольте мне проиллюстрировать это примерами:

Примеры:

Country: United States 

Corresponding Fields: 
State: 
Zip Code: 
Time: 
Currency: 
Date: 



Country: United Kingdom 

Corresponding Fields: 
County: 
Postal Code: 
Time: 
Currency: 
Date: 



Country: India 

Corresponding Fields: 
Province: 
District: 
PO Box: 
Currency: 
Date: 
Time: 

Как я могу добиться этого в ASP.Net динамически (3.5 или 4.0)?

Удивительно, можем ли мы использовать API веб-сервиса Google для этого требования? С нетерпением ждем ответов с проверенным опытом. Спасибо

+1

Привет, что вы имеете в виду, заявив: «Ищете ответ из надежных и/или официальных источников»? Это заставляет меня сомневаться, что я должен написать ответ на ваш вопрос, так как я не могу быть официальным или заслуживающим доверия к вам. – Dima

ответ

1

Я вижу, что количество полей для страны «Индия» - это больше, чем остальные. Это предназначено? Если да, вы можете настроить поля, относящиеся к стране в базе данных, и их локализованный текст будет храниться в другой «связанной» таблице. Количество полей может отличаться по количеству для каждой страны.

Если поля будут одинаковыми, вы можете создавать файлы ресурсов, специфичные для локалей, и добавлять к нему другой текст. Когда вы изменяете выделение в раскрывающемся списке, просто установите System.Threading.Thread.CurrentThread.CurrentUICulture в соответствующий код языкового стандарта.

1

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

Do проверить следующие ссылки о том, как использовать файлы ресурсов:

http://www.codeproject.com/Articles/334820/Using-Globalization-and-Localization-in-ASP-NET

http://www.codeproject.com/Articles/14818/ASP-NET-2-0-Globalization-Localization-solution

1

Это не столько о локализации, но о рынке конкретных стандартов. В частности, международные форматы адресов. Я не знаю о готовом для этого решении, но вы можете найти существующие ресурсы, которые определяют эти форматы (например, на MSDN здесь: http://msdn.microsoft.com/en-us/library/cc195167.aspx).

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

Edit:

Что касается даты, времени и валюты, вы можете использовать определений культуры в .NET Framework, который можно получить доступ через DateTimeFormat и NumberFormat свойства CultureInfo в (MSDN link). Я не уверен, хотите ли вы отображать дату, время и валюту с помощью примера (например, сегодняшней даты или текущего времени) или самого формата (например, mm/dd/yy и hh: mm: ss). Для первого вы создаете экземпляр CultureInfo и передаете его переопределениям ToString, которые принимают IFormatProvider. Хороший пример для даты и времени показан на this MSDN page. То же самое относится к форматированию валют (MSDN link).Вот как это работает:

CultureInfo cultureInfo = new CultureInfo("en-GB"); // Change en-GB to the desired culture name 
DateTime now = DateTime.Now; 
string sampleTime = now.ToString("T", cultureInfo); // Result: 5:04:32 PM 
string sampleDate = now.ToString("d", cultureInfo); // Result: 13/3/2012 
double value = 16325.62901; 
string sampleCurrency = value.ToString("C", cultureInfo); // Result: £16,325.63 

Если с другой стороны, вы хотите, чтобы показать формат, вы можете получить эти данные, принимая соответствующие свойства DateTimeFormatInfo и NumberFormatInfo. Например:

CultureInfo cultureInfo = new CultureInfo("en-GB"); 
string shortDatePattern = cultureInfo.DateTimeFormat.ShortDatePattern; // Result: d/M/yyyy 
string shortTimePattern = cultureInfo.DateTimeFormat.ShortTimePattern; // Result: h:mm tt 
string currencySymbol = cultureInfo.NumberFormat.CurrencySymbol; // Result: £ 
+0

Как насчет даты, времени и валюты? –

+1

См. Мое редактирование. – Clafou

+0

Это действительно ценная информация. Также вы можете обсудить сценарий почтового индекса/почтового индекса/почтового ящика. Например, для Канады у нас есть отдельное правило (FYI: http://en.wikipedia.org/wiki/Postal_codes_in_Canada), а для Великобритании (http://en.wikipedia.org/wiki/UK_postal_code) у нас есть отдельное правило , благодаря –

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