Локализация арабского языка в настольном C # .net приложении на английском языке - PullRequest
2 голосов
/ 09 августа 2011

Я создаю корпоративное приложение на C # .net, требуется наличие версии на арабском и английском языках. Клиенту предоставляется 2 варианта: либо написать по-английски и по-арабски вместе для надписей и описаний, либо разместить в начале поле со списком, в котором можно выбрать английский и арабский и продолжить работу с этим языком. Я хочу сэкономить свое время и хочу, чтобы я просто создал английскую версию, а арабский должен быть переведен автоматически.

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 09 августа 2011

Прежде всего, вам не нужно ничего выбирать, это будет уже выбрано, если кто-то установит арабский язык в своей операционной системе.Чтобы определить, какой язык используется (если вам нужна эта информация, обычно нет), вы просто прочитали бы свойство System.Globalization.CultureInfo.CurrentUICulture.

Однако в WinForms вы могли бы использовать встроенную поддержку локализации.Для этого вам нужно переключить свойство Form Localizable на true.Предполагая, что у вас есть арабские строки, вам нужно будет поменять свойство Language формы с (по умолчанию) на арабский после , когда вы завершите английскую раскладку и разместите переводы в соответствующих местах.Это самый простой способ.Вам также необходимо переключить свойство RightToLeft формы на Да и RightToLeftLayout на Истину, если на арабском языке.
Если вы сделаете это правильно, вы увидите, что форма отражается.Это желаемая ситуация, не паникуйте.

Хуже всего то, что вам иногда придется отображать окна сообщений.Проблема здесь в том, что в зависимости от того, какой тип языка вы используете, вам на самом деле нужно будет сделать это по-другому, для арабского (и других языков RTL) необходимо использовать константу RTLReading:

if (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft)
{
    MessageBox.Show(text, caption, MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
}
else
{
    MessageBox.Show(text, caption, MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
}

Вот и все на высоком уровне ...

4 голосов
/ 09 августа 2011

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

...