Установка языка при запуске J2SE приложения
От: Gog  
Дата: 30.10.07 08:44
Оценка:
Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык.
Возможно ли такое и как.
Re: Установка языка при запуске J2SE приложения
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 30.10.07 08:59
Оценка:
Здравствуйте, Gog, Вы писали:

Gog>Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык.

Gog>Возможно ли такое и как.

здесь
http://denis-zhdanov.blogspot.com
Re[2]: Установка языка при запуске J2SE приложения
От: Gog  
Дата: 30.10.07 09:20
Оценка:
Здравствуйте, denis.zhdanov, Вы писали:

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


Gog>>Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык.

Gog>>Возможно ли такое и как.

DZ>здесь


Я прочитал все эти топики, прежде чем создавать свой

Там дается ответ на немного другой вопрос — как изменить язык ввода у компонента.

Мне же надо изменить язык для всего приложения. Чтобы во всех компонентах по умолчанию был русский язык.
При создании приложения делал
JFrame.setLocale(RussianLocal)
JFrame.getContentPane().setLocale(RussianLocal)
MainPanel.setLocale(RussianLocal)
MainPanel.getInputContext().selectInputMethod(RussianLocal)

Не помогает

Есть ли какой-то другой способ.
Re[3]: Установка языка при запуске J2SE приложения
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 30.10.07 09:45
Оценка:
Здравствуйте, Gog, Вы писали:

Gog>Я прочитал все эти топики, прежде чем создавать свой


Gog>Там дается ответ на немного другой вопрос — как изменить язык ввода у компонента.


Gog>Мне же надо изменить язык для всего приложения. Чтобы во всех компонентах по умолчанию был русский язык.

Gog>...

Как-нить так?

    public static void main(String[] args) throws Exception {
        JFrame frame = new JFrame();
        ...
        iterate(frame);
    }

    private void iterate(Container root) {
        // Apply rules for current component.
        for (Component component : root.getComponents()) {
            if (component instanceof Container) {
                iterate((Container) component);
            }
        }
    }
http://denis-zhdanov.blogspot.com
Re[4]: Установка языка при запуске J2SE приложения
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 30.10.07 09:49
Оценка:
DZ>
       ...

    private void iterate(Container root) {
        // Apply rules for current component.
        for (Component component : root.getComponents()) {
            if (component instanceof Container) {
                iterate((Container) component);
            }
        }
    }

DZ>

Даже не совсем так. Надо применять и для дочерних компонентов — не контейнеров, т.е. так:

    private void iterate(Container root) {
        // Apply rules for current root.
        for (Component component : root.getComponents()) {
            if (component instanceof Container) {
                iterate((Container) component);
            } else {
                // Apply rules for current component.
            }
        }
http://denis-zhdanov.blogspot.com
Re[5]: Установка языка при запуске J2SE приложения
От: Gog  
Дата: 30.10.07 10:52
Оценка:
Здравствуйте, denis.zhdanov, Вы писали:

DZ>Даже не совсем так. Надо применять и для дочерних компонентов — не контейнеров, т.е. так:


DZ>
DZ>    private void iterate(Container root) {
DZ>        // Apply rules for current root.
DZ>        for (Component component : root.getComponents()) {
DZ>            if (component instanceof Container) {
DZ>                iterate((Container) component);
DZ>            } else {
DZ>                // Apply rules for current component.
DZ>            }
DZ>        }
DZ>


denis.zhdanov, спасибо.

Но тут два момента.
1. Но что если у нас очень большое приложение. Появляются очень много всяких формочек, таблиц. Нам придется вызывать прописывать эту функцию в каждом таком случае.
2. Что если пользователю надо написать что-то по английски, который является этот момент текущим языком в виндах. Тогда ему придется нажимать ctrl+shift 2 раза — путаница получится.

Неужели нету никакого метода Application.SetLanguage(Russian).
Ведь каждое Windows-приложение помнит свой язык.
Re[6]: Установка языка при запуске J2SE приложения
От: Blazkowicz Россия  
Дата: 30.10.07 11:17
Оценка:
Здравствуйте, Gog, Вы писали:

Gog>Ведь каждое Windows-приложение помнит свой язык.

Но не каждое Java-приложение — Windows-приложение.
Re[7]: Установка языка при запуске J2SE приложения
От: Gog  
Дата: 30.10.07 11:24
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

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


Gog>>Ведь каждое Windows-приложение помнит свой язык.

B>Но не каждое Java-приложение — Windows-приложение.

Знаю. Но мы же сами подключаем JDK и библиотеки.
Re: Установка языка при запуске J2SE приложения
От: 6lackbird Россия  
Дата: 31.10.07 08:36
Оценка:
Здравствуйте, Gog, Вы писали:

Gog>Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык.

Gog>Возможно ли такое и как.

Locale.setDefault(new Locale("ru", "RU"));
... << RSDN@Home 1.2.0 alpha rev. 780>>
"Мы будем уничтожать свое ядерное оружие вместе с Америкой" (c) Б. Ельцин
Re[2]: Установка языка при запуске J2SE приложения
От: Gog  
Дата: 20.02.08 12:34
Оценка:
Нашел где-то вот такое решение проблемы, сделал по аналогии, но не работает

There are two ways to change the default locale. The first is to set it on the command line:

> java -Duser.language=2-char-language-code -Duser.region=2-char-country-code MyApp


// Set only language code
> java -Duser.language=fr -Duser.region= MyApp
// Set language and country code
> java -Duser.language=fr -Duser.region=CA MyApp

The second way to change the default locale is to call Locale.setDefault():

// Get default locale
Locale locale = Locale.getDefault();

// Set the default locale to pre-defined locale
Locale.setDefault(Locale.FRENCH);

// Set the default locale to custom locale
locale = new Locale("fr", "CA");
Locale.setDefault(locale);


В общем не получается установить язык по-умолчанию при запуске J2SE приложения (нужен русский).
На какое-то время я пытался забить на это, но всплыла еще одна проблема. Хотелось бы решить хотя бы ее.

Суть вот в чем. Допустим к нас есть приложение, в котором по кнопочками открываются диалоговые окна.
Так вот
1. при запуске программы у нас язык EN
2. мы заходим в диалоговое окно, начинаем какую-то работу, меняем язык на RU.
3. закрываем это диалоговое окно и тут происзодит следущее — язык ввода автоматически возвращается обратно в EN
4. если мы хотим что-то еще подредактировать, то у нас большая проблема. Мы минуту назад переключали раскладку клавиатуры на русскую, а она у нас английская. И нам надо опять переключать.

2 вопроса.
1. Если вернуться к предыдущему обсуждению. Может кто-то точно знает, возможно ли установить язык по-умолчанию при запуске приложения.
2. Как быть с только что описанной проблемой. Я хочу, чтобы в каком бы диалоговом окне я бы ни менял раскладку, чтобы это было на всё приложение, а не только на текущее окно.
Re[3]: Установка языка при запуске J2SE приложения
От: berdachuk Беларусь http://bolsheprodag.ru/prodvizhenie-sajtov/prodvizhenie-sajta-skolko-stoit
Дата: 20.02.08 15:31
Оценка:
Gog>3. закрываем это диалоговое окно и тут происзодит следущее — язык ввода автоматически возвращается обратно в EN
Gog>4. если мы хотим что-то еще подредактировать, то у нас большая проблема. Мы минуту назад переключали раскладку клавиатуры на русскую, а она у нас английская. И нам надо опять переключать.
Использовал подобное в старых Delhi проектах.
Можно попробовать через jni воспользоваться Win API функцией для смены раскладки клавиатуры
Re[4]: Установка языка при запуске J2SE приложения
От: Gog  
Дата: 22.02.08 11:56
Оценка:
Есть еще варианты ?

Может я не совсем ясно описал проблему, попробую еще раз.
Суть вот в чем. Допустим в нашем приложении по кнопочкам открываются диалоговые окна.
Так вот
1. при запуске программы у нас язык EN
2. мы заходим в диалоговое окно, начинаем какую-то работу, меняем язык на RU.
3. закрываем это диалоговое окно и тут происходит следущее — язык ввода автоматически возвращается обратно в EN
4. если мы хотим что-то еще подредактировать, то у нас большая проблема. Мы минуту назад переключали раскладку клавиатуры на русскую, а она у нас английская. И нам надо опять переключать.

Можно ли как-то сделать так, чтобы смена языка в любом из дочерних окон приложения приводила к смене языка для всего приложения.
Re[5]: Установка языка при запуске J2SE приложения
От: Blazkowicz Россия  
Дата: 22.02.08 12:54
Оценка:
Здравствуйте, Gog, Вы писали:

Gog>1. при запуске программы у нас язык EN

Gog>2. мы заходим в диалоговое окно, начинаем какую-то работу, меняем язык на RU.
Gog>3. закрываем это диалоговое окно и тут происходит следущее — язык ввода автоматически возвращается обратно в EN
Gog>4. если мы хотим что-то еще подредактировать, то у нас большая проблема. Мы минуту назад переключали раскладку клавиатуры на русскую, а она у нас английская. И нам надо опять переключать.

По-моему это такая виндозная фича — привязывать раскладку к окнам. Чтобы забороть придется искать способы манипулировать переключателем из Java.
Re[6]: Установка языка при запуске J2SE приложения
От: Gog  
Дата: 26.02.08 08:42
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>По-моему это такая виндозная фича — привязывать раскладку к окнам. Чтобы забороть придется искать способы манипулировать переключателем из Java.


Все диалоги я сделал setModal(true) и присвоил им owner к родительскому окну.
Т. е. они всегда показываются поверх родительского окна, в диспетчере задач, на панели задачач, при нажатии Alt-Tab выглядит как одно приложение, но почему-то изменение языка в диалоговом окне не влечет изменение языка в родительском.
Re: Установка языка при запуске J2SE приложения
От: Eugeny__ Украина  
Дата: 28.02.08 11:02
Оценка:
Здравствуйте, Gog, Вы писали:

Gog>Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык.

Gog>Возможно ли такое и как.

Это, конечно, не мое дело, но, имхо, приложение, самопроизвольно пытающееся переключать раскладки, будет весьма нервировать пользователей.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[7]: Установка языка при запуске J2SE приложения
От: Blazkowicz Россия  
Дата: 28.02.08 11:46
Оценка:
Здравствуйте, Gog, Вы писали:

Gog>Все диалоги я сделал setModal(true) и присвоил им owner к родительскому окну.

Gog>Т. е. они всегда показываются поверх родительского окна, в диспетчере задач, на панели задачач, при нажатии Alt-Tab выглядит как одно приложение, но почему-то изменение языка в диалоговом окне не влечет изменение языка в родительском.
Сабмить багу на http://bugs.sun.com/
Подтверждаю у меня Java 6 и такая же фигня.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.