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

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

08.02.2011, 10:43. Показов 5385. Ответов 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
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru