Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/27: Рейтинг темы: голосов - 27, средняя оценка - 4.85
3 / 3 / 7
Регистрация: 19.10.2009
Сообщений: 225

Шаблоны проектирования для смены языка программы.

08.02.2011, 10:43. Показов 5251. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется создать библиотеку для смены языка пользовательского интерфейса программ.
В принципе, решается это логко - берется интерфейс Observer и класс Observable и на их основе делается смена языка. Только вот слишком уж геморройно для каждого визуального компонента создавать наследника, реализующего интерфейс Observer. Хотя это наиболее гибкое и универсальное решение.
Можно пойти по другому пути, и вместо реализации интерфейса сделать отдельный класс, который по типу изменяемого обьекта (и, возможно, передаваемым параметрам) будет определять, что именно в обьекте изменить. Однако такой подход требует серьезного обдумывания, поскольку библиотека должна быть стандартной.
Кто сталкивался с проблемой изменения языка программы и имеет готовое и удобное решение?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2011, 10:43
Ответы с готовыми решениями:

Шаблоны проектирования
Мне нужно разработать в Java консольное приложение, которое считывает из файла (или файлов, по решению разработчика) список платежей...

Шаблоны проектирования
Задача Разработать программу, языком программирования JAVA, моделирующий систему указанную в варианте задачи, с использованием шаблонов...

Шаблоны проектирования (литература для изучения)
подскажите литературу для изучения . спасибо.

22
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
15.02.2011, 08:14
Студворк — интернет-сервис помощи студентам
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package ru.podolsk.pryadm.localization;
 
import java.util.ResourceBundle;
import java.util.Locale;
 
/**
 */
public class ResourceBundleTranslator implements Translator {
 
    private ResourceBundle res;
    private Locale locale;
    private String resourceBundleName;
 
    public void initialize() {}
 
    public String translate(String key) {
        return res.getString(key);
    }
 
    public synchronized void setLocale(Locale locale) {
        this.locale = locale;
        if (resourceBundleName != null) {
            res = ResourceBundle.getBundle(resourceBundleName, locale);
        }
    }
 
    public Locale getLocale() {
        return locale;
    }
 
    public String getResourceBundleName() {
        return resourceBundleName;
    }
 
    public void setResourceBundleName(String resourceBundleName) {
        this.resourceBundleName = resourceBundleName;
        if (locale != null) {
            res = ResourceBundle.getBundle(resourceBundleName, locale);
        }
    }
}
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
15.02.2011, 08:14
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package ru.podolsk.pryadm.localization;
 
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.Locale;
 
/**
 */
public class LocalizationTest extends JFrame {
    private static final String mac      =
            'com.sun.java.swing.plaf.mac.MacLookAndFeel';
    private static final String metal    =
            'javax.swing.plaf.metal.MetalLookAndFeel';
    private static final String motif    =
            'com.sun.java.swing.plaf.motif.MotifLookAndFeel';
    private static final String windows  =
            'com.sun.java.swing.plaf.windows.WindowsLookAndFeel';
    private static final String gtk  =
            'com.sun.java.swing.plaf.gtk.GTKLookAndFeel';
 
    public static void main(String argv[]) throws Exception {
        LocalizationTest t = new LocalizationTest();
        t.pack();
        t.show();
    }
 
    public LocalizationTest() throws Exception {
        //
        createLayout();
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        TranslatingLookAndFeel.setUnderlyingLookAndFeel(motif);
        TranslatingLookAndFeel.addFrame(this);
        UIManager.setLookAndFeel(TranslatingLookAndFeel.class.getName());
        SwingUtilities.updateComponentTreeUI(this);
    }
 
    private void createLayout() {
        JPanel pane = (JPanel) getContentPane();
        pane.setLayout(new BorderLayout());
        JButton b = new JButton('English');
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                TranslatingLookAndFeel.setLocale(Locale.ENGLISH);
            }
        });
        pane.add(b, BorderLayout.SOUTH);
        //
        b = new JButton('Russian');
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                TranslatingLookAndFeel.setLocale(new Locale('ru'));
            }
        });
        pane.add(b, BorderLayout.NORTH);
        //
        b = new JButton('Metal');
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    TranslatingLookAndFeel.setUnderlyingLookAndFeel(metal);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        });
        pane.add(b, BorderLayout.WEST);
        //
        b = new JButton('Win');
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    TranslatingLookAndFeel.setUnderlyingLookAndFeel(windows);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        });
        pane.add(b, BorderLayout.EAST);
        //
        JLabel label = new JLabel('__some_label');
        label.setBorder(new EmptyBorder(4, 4, 4, 4));
        pane.add(label, BorderLayout.CENTER);
    }
 
}
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
15.02.2011, 08:18
Ресурсы:
translations_en.properties:
Code
1
2
__some_label = This is some label
__another_label = This is another label
translations_ru.cp1251:
Code
1
2
__some_label = Какой-то текст
__another_label = А вот - еще один текст
translations_ru.properties:
Code
1
2
__some_label = u041au0430u043au043eu0439-u0442u043e u0442u0435u043au0441u0442
__another_label = u0410 u0432u043eu0442 - u0435u0449u0435 u043eu0434u0438u043d u0442u0435u043au0441u0442
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2011, 08:18
Помогаю со студенческими работами здесь

Подскажите необходимы паттерны (Шаблоны проектирования) необходимые для решения задачи
Добрый день дорогие знатоки) Выдали экзаменационное задание по паттернам: Спроектируйте систему профессий для RPG игры. Профессия в...

После смены языка программ не поддерживающих юникод на японский некоторые программы стали на японском
после того как я поменял язык программ не поддерживающих юникод на японский некоторые проги и инсталляторы которые были на русском стали на...

Шаблоны проектирования
Шаблоны проектирования, их реализация на С++. Кто знает какие-то хорошие книги, поделитесь :)

Шаблоны проектирования
Разработайте программу для представления структуры объектов подписки на журналы. Один человек может быть подписан на несколько журналов. На...

Шаблоны проектирования
Подскажите пожалуйста. Есть 2 задачи. На шаблон "Абстрактная фабрика" и шаблон "Команда". 1. #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru