Internacionalizace GUI – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Internacionalizace GUI – Java – Fórum – Programujte.comInternacionalizace GUI – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Bicek0
Newbie
11. 9. 2013   #1
-
0
-

Ahoj, 

 snažím se nějak účelně přeložit aplikaci za běhu např. z češtiny do angličtiny. Spustíte aplikaci a nerozumíte, tak si nakliknete v menu jazyk a změníte ho na např. angličtinu ... tak bych to chtěl    (Schválně pomíjím defaultní lokalizaci či změnu lokalizace při spuštění programu jako např. -Duser.language=cs -Duser.region=CZ. Jde mi o "runtime" změnu jazyka.)

 Např. tool tip tlačítka inicializuji takto:

jButton_Parameters.setToolTipText(bundle.getString("balicek.jButton_Parameters_ToolTipText"));

Pro návrh GUI používám netbeans - pro rozložení více prvků ideální, avšak některé části kódu jsou pro mne tím pádem needitovatelné (myslím hromadně).

Když změním lokalizaci za běhu aplikace, výpisy změní jazyk také, ale GUI ne. Asi nejblíže byl tento příklad:

https://www.java.net//node/694146

avšak při pokusu změnit zároveň i jazyk menu z vlastních resources žádná změna nenastala :-(

Chci se vyhnout zadávání textu jednotlivých tlačítek a popisku jeden po druhém, protože buď bych měl dvojí kód, nebo bych musel upravit automaticky generovaný kód od netbeans, což je otročina a navíc bych mohl zapomenout to samé provést u nových prvků apod. Zkrátka jde mi o co nejúčelnější změnu jazyka GUI za běhu aplikace.

Nějaké nápady?..

Nahlásit jako SPAM
IP: 89.190.73.–
Reklama
Reklama
goddard
~ Anonymní uživatel
41 příspěvků
12. 9. 2013   #2
-
0
-

nic moc jineho ti nezbyde nez si udelat soubor s lokalizaci:

Name=Jmeno

a ten pri zmene jazyka projit a pak aktualizovat cele GUI aby se zmena projevila.

tohle -Duser.language=cs -Duser.region=CZ by neslo nastavit za behu pomoci system / user properties a pak opet aktualizovat GUI?

Nahlásit jako SPAM
IP: 94.112.88.–
Bicek0
Newbie
12. 9. 2013   #3
-
0
-

#2 goddard
To v podstatě dělám, ale nefunguje to.. nebo spíš jen částečně (soubory s lokalizací samozřejmě používám):

        System.setProperty("user.language", locale.getLanguage());
        System.setProperty("user.country", locale.getCountry());
        System.setProperty("user.variant", locale.getVariant());
        ResourceBundle.clearCache();

...
...

                for (Component window : windows)
                    SwingUtilities.updateComponentTreeUI(window);

Po použití "updateComponentTreeUI" se mi okamžitě změní popisky ve výše zmiňovaném příkladu ve filechooseru, ale lokalizovaný text v menu který jsem tam dodělal už ne.

Myslel jsem si, že prostě změním lokalizaci a pak to překreslím,.. ale jak to překreslit aby si to samo nasálo všechny lokalizované texty?..

Nahlásit jako SPAM
IP: 89.190.73.–
Bicek0
Newbie
13. 9. 2013   #4
-
0
-

Ještě mě napadla další možnost:

kdybych byl schopen zjistit, jaký klíč z resources prvek (tlačítko, label,..) používá, mohl bych ho po změně jazyka automaticky změnit. Tak například text tlačítka mám inicializován takto:

JLabel_Mode.setText(bundle.getString("JFrame_Hlavni.JLabel_Mode.text"));

Kdybych zjistil jaký má text pro daný prvek klíč - tedy "JFrame_Hlavni.JLabel_Mode.text", mohl bych ho jednoduše změnit ve smyčce pro všechny prvky nějak takto:

for (Component polozka : jPanel_AplikacniPanel.getComponents())
	polozka.settext(bundle.getString("vyhledanyKlic"));

Tím bych si zajistil metodu "překresliCeléGUIvNovéLokalizaci" sám.

Problém je spíš v tom, že mě napadá řešení pouze pomocí procházení celé mapy klíčů, kterou bych si navíc musel uschovat ještě před změnou lokalizace abych mohl pomocí metody gettext() porovnat, zda text odpovídá klíči a nahradit jej tak novým.

Existuje něco, co mi vrátí jaký klíč z resources prvek obsahuje?

Nahlásit jako SPAM
IP: 89.190.73.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 50 hostů

Podobná vlákna

GUI — založil eximik

Gui — založil joudikkk

Primitivní GUI — založil Braba

GUI piškvorky — založil Luxfer

Ekiga GUI — založil xdazze

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý