здравствуйте,
несколько запутался вот с чем:
Дано: создаю приложение, которое должно работать на двух локалях:
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. Но переключая локали в виндовз — я всегда вижу по английски своё приложение, как мне вызвать теперь русскую версию=)?
буду признателен за помошь, спасибо.
Здравствуйте, Аноним, Вы писали:
А>Встали вопросы: А>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
А>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.
Здравствуйте, 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
Локализация интерфейса
От:
Аноним
Дата:
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]
Здравствуйте, 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: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]
Вот у меня та же проблема, не могу сменить локаль на лету... Создал различные локали приложения 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>>