Локализация интерфейса
От: Аноним  
Дата: 30.05.05 06:36
Оценка:
здравствуйте,
несколько запутался вот с чем:
Дано: создаю приложение, которое должно работать на двух локалях:
ru-RU и en-US.
для сообщений и проч. создаю ресурсы и в зависимости от локали вытаскиваю нужные сообщения.
вопрос в другом — в точности локализации самого интерфейса.
всё сделал как в http://www.rsdn.ru/janus/article/tech/Localization/Localization.xml
то есть выставляя Localizable в true и формируя нужный интерфейс.
Встали вопросы:
1. что делать Defaultом? Eng, en-US, ru-RU? что лучше поставить?
2. как корректно удалить ненужную сателитную сборку (создал например RU, а потом ru-RU. RU — ведь уже не нужно)
3. и главное — я сделал по defaultу Eng, и задал две сателитные сборки ru-RU и en-US. Но переключая локали в виндовз — я всегда вижу по английски своё приложение, как мне вызвать теперь русскую версию=)?
буду признателен за помошь, спасибо.
Re: Локализация интерфейса
От: Golakoff Россия  
Дата: 30.05.05 07:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Встали вопросы:

А>1. что делать Defaultом? Eng, en-US, ru-RU? что лучше поставить?
imho лучше все-таки En, мало ли где будет запускаться...

А>2. как корректно удалить ненужную сателитную сборку (создал например RU, а потом ru-RU. RU — ведь уже не нужно)

Из SolutionExplorer'а удаляешь ненужный resx-файл

А>3. и главное — я сделал по defaultу Eng, и задал две сателитные сборки ru-RU и en-US. Но переключая локали в виндовз — я всегда вижу по английски своё приложение, как мне вызвать теперь русскую версию=)?

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main() 
{
    // здесь можно например читать файлик конфигурации и выставлять нужную CurrentCulture в зависимости от сохраненных настроек
    // правда, надо перезапускать прогу. у меня на лету не получилось... может кто подскажет
    // setting up current culture
    Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU", false);
    //Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("", false);
    Application.Run(new frmMain());
}

А>буду признателен за помошь, спасибо.
__________________________________
with respect, Andrew A. Golyakov
_____________________________
With respect, Andrew A. Golyakoff
Re: Локализация интерфейса
От: _FRED_ Черногория
Дата: 30.05.05 08:06
Оценка:
Здравствуйте, <Аноним>, Вы писали:

[...skipped...]

А>Встали вопросы:

А>1. что делать Defaultом? Eng, en-US, ru-RU? что лучше поставить?

Текущие установки виндов.
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CurrentCulture;

А>2. как корректно удалить ненужную сателитную сборку (создал например RU, а потом ru-RU. RU — ведь у
А>же не нужно)

Поудалять все ресурсные файлы с ненужной культурой (*.RU.*) и удалить сборки, относящиеся к ненужной культуре.

А>3. и главное — я сделал по defaultу Eng, и задал две сателитные сборки ru-RU и en-US. Но переключая локали в виндовз — я всегда вижу по английски своё приложение, как мне вызвать теперь русскую версию=)?


Надо переключать System.Threading.Thread.CurrentThread.CurrentUICulture. Для юникодных программ (а .НЕТовские программы именно такие) настройки виндов не так важны.
under «Space — Running In The City.»,
... << RSDN@Home 1.1.4 beta 7 rev. 461>>
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Локализация интерфейса
От: Hassin  
Дата: 30.05.05 08:06
Оценка:
Спасибо Вам огромное, всё заработало!!!

Здравствуйте, Golakoff, Вы писали:

G>Здравствуйте, Аноним, Вы писали:


А>>Встали вопросы:

А>>1. что делать Defaultом? Eng, en-US, ru-RU? что лучше поставить?
G>imho лучше все-таки En, мало ли где будет запускаться...

А>>2. как корректно удалить ненужную сателитную сборку (создал например RU, а потом ru-RU. RU — ведь уже не нужно)

G>Из SolutionExplorer'а удаляешь ненужный resx-файл

А>>3. и главное — я сделал по defaultу Eng, и задал две сателитные сборки ru-RU и en-US. Но переключая локали в виндовз — я всегда вижу по английски своё приложение, как мне вызвать теперь русскую версию=)?

G>
G>/// <summary>
G>/// The main entry point for the application.
G>/// </summary>
G>[STAThread]
G>static void Main() 
G>{
G>    // здесь можно например читать файлик конфигурации и выставлять нужную CurrentCulture в зависимости от сохраненных настроек
G>    // правда, надо перезапускать прогу. у меня на лету не получилось... может кто подскажет
G>    // setting up current culture
G>    Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU", false);
G>    //Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("", false);
G>    Application.Run(new frmMain());
G>}
G>

А>>буду признателен за помошь, спасибо.
G>__________________________________
G>with respect, Andrew A. Golyakov
Re[2]: Локализация интерфейса
От: _FRED_ Черногория
Дата: 30.05.05 08:08
Оценка:
Здравствуйте, Golakoff, Вы писали:
А>>2. как корректно удалить ненужную сателитную сборку (создал например RU, а потом ru-RU. RU — ведь уже не нужно)
G>Из SolutionExplorer'а удаляешь ненужный resx-файл

Могут быть ресурсы и с другими расширениями — картинки, тексты...
under «Space — Save Your Love For Me.»,
... << RSDN@Home 1.1.4 beta 7 rev. 461>>
Help will always be given at Hogwarts to those who ask for it.
Локализация интерфейса
От: Аноним  
Дата: 30.05.05 08:07
Оценка:
1) Default — по умолчанию инвариантная культура. Это что-то особое в системе, и прдеставить его приблизительно можно как "En".
Так что думаю вопрос исчерпан.
2) Поудалять все файлы с расширением культуры
мyResources.[culture].txt
3) Провертье, есть ли соответствующие директории со сборками в корне апликейшена.
Если есть, следующий шаг. Попробуйте указать культуру явно:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("[you culture]");

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

И всегда можно помсотреть, какая сейчас активная культура приложения.(Thread.CurrentThread.CurrentUICulture)
---------------------------
[url=http://uneta.org/]Uneta.org[/url] :: [url=http://kyiv.gotdotnet.ru/]Kiev UG[/url]
Оценить/прокомментировать представленную мной
работу на конкурс можно здесь : [url=http://contest2005.gotdotnet.ru/Request/Tools/ControlsLib/160983.aspx]FlowChartDiagram[/url]


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Локализация интерфейса
От: Аноним  
Дата: 30.05.05 08:11
Оценка:
Блин, нада было обновить перед написанием ответа .
---------------------------
[url=http://uneta.org/]Uneta.org[/url] :: [url=http://kyiv.gotdotnet.ru/]Kiev UG[/url]
Оценить/прокомментировать представленную мной
работу на конкурс можно здесь : [url=http://contest2005.gotdotnet.ru/Request/Tools/ControlsLib/160983.aspx]FlowChartDiagram[/url]


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: Локализация интерфейса
От: JP_Amber Россия  
Дата: 01.08.06 03:59
Оценка:
Вот у меня та же проблема, не могу сменить локаль на лету... Создал различные локали приложения Form1.resx/Form1.ru-RU.resx/Form1.en-GB.resx. По нажатию Button выставляю Culture и UICulture.



private void btnRussian_Click(object sender, EventArgs e){
            Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU", false);
            //Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("", false);
            Application.Run(new Form1());  //и вот эта строчка тоже не выполняется... ошибка однако.
        }

Но ничего не меняется, интерфейс остаётся в дефолтной локали. Пишу на C# в MS VS 2005. Может быть кто-то сталкивался с подобным.
G>>/// <summary>
G>>/// The main entry point for the application.
G>>/// </summary>
G>>[STAThread]
G>>static void Main() 
G>>{
G>>    // здесь можно например читать файлик конфигурации и выставлять нужную CurrentCulture в зависимости от сохраненных настроек
G>>    // правда, надо перезапускать прогу. у меня на лету не получилось... может кто подскажет
G>>    // setting up current culture
G>>    Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU", false);
G>>    //Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("", false);
G>>    Application.Run(new frmMain());
G>>}
G>>
Re[4]: Локализация интерфейса
От: Spender Канада http://rybkov.livejournal.com
Дата: 01.08.06 06:04
Оценка:
Здравствуйте, JP_Amber, Вы писали:

JP_>Вот у меня та же проблема, не могу сменить локаль на лету... Создал различные локали приложения


...

JP_>Но ничего не меняется, интерфейс остаётся в дефолтной локали. Пишу на C# в MS VS 2005. Может быть кто-то сталкивался с подобным.


Ну вот мы и вернулись к теме динамической смены UI-GUI, а кто-то говорил, ненужная тема

Вот тут мы её долго обсуждали и пришли к какому-то выводы.

Динамическая смена GUI и UI
Автор: Spender
Дата: 26.07.06
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.