@@ -73,95 +73,68 @@ public class Preferences {
7373
7474 static final String PREFS_FILE = "preferences.txt" ;
7575
76- String [] languages = {
77- _ ("System Default" ),
78- "العربية" + " (" + _ ("Arabic" ) + ")" ,
79- "Aragonés" + " (" + _ ("Aragonese" ) + ")" ,
80- "български" + " (" + _ ("Bulgarian" ) + ")" ,
81- "Català" + " (" + _ ("Catalan" ) + ")" ,
82- "Hrvatski" + " (" + _ ("Croatian" ) + ")" ,
83- "český" + " (" + _ ("Czech" ) + ")" ,
84- "简体中文" + " (" + _ ("Chinese Simplified" ) + ")" ,
85- "繁體中文" + " (" + _ ("Chinese Traditional" ) + ")" ,
86- "Dansk" + " (" + _ ("Danish" ) + ")" ,
87- "Nederlands" + " (" + _ ("Dutch" ) + ")" ,
88- "English" + " (" + _ ("English" ) + ")" ,
89- "Eesti" + " (" + _ ("Estonian" ) + ")" ,
90- "Pilipino" + " (" + _ ("Filipino" ) + ")" ,
91- "Français" + " (" + _ ("French" ) + ")" ,
92- "Canadienne-français" + " (" + _ ("Canadian French" ) + ")" ,
93- "Galego" + " (" + _ ("Galician" ) + ")" ,
94- "საქართველოს" + " (" + _ ("Georgian" ) + ")" ,
95- "עברית" + " (" + _ ("Hebrew" ) + ")" ,
96- "Deutsch" + " (" + _ ("German" ) + ")" ,
97- "ελληνικά" + " (" + _ ("Greek" ) + ")" ,
98- "Magyar" + " (" + _ ("Hindi" ) + ")" ,
99- "Magyar" + " (" + _ ("Hungarian" ) + ")" ,
100- "Bahasa Indonesia" + " (" + _ ("Indonesian" ) + ")" ,
101- "Italiano" + " (" + _ ("Italian" ) + ")" ,
102- "日本語" + " (" + _ ("Japanese" ) + ")" ,
103- "한국어" + " (" + _ ("Korean" ) + ")" ,
104- "Latviešu" + " (" + _ ("Latvian" ) + ")" ,
105- "Lietuvių Kalba" + " (" + _ ("Lithuaninan" ) + ")" ,
106- "मराठी" + " (" + _ ("Marathi" ) + ")" ,
107- "Norsk" + " (" + _ ("Norwegian" ) + ")" ,
108- "Norsk bokmål" + " (" + _ ("Norwegian Bokmål" ) + ")" ,
109- "فارسی" + " (" + _ ("Persian" ) + ")" ,
110- "Język Polski" + " (" + _ ("Polish" ) + ")" ,
111- "Português" + " (" + _ ("Portuguese" ) + " - Brazil)" ,
112- "Português" + " (" + _ ("Portuguese" ) + " - Portugal)" ,
113- "Română" + " (" + _ ("Romanian" ) + ")" ,
114- "Русский" + " (" + _ ("Russian" ) + ")" ,
115- "Español" + " (" + _ ("Spanish" ) + ")" ,
116- "தமிழ்" + " (" + _ ("Tamil" ) + ")" ,
117- "Türk" + " (" + _ ("Turkish" ) + ")" ,
118- "Український" + " (" + _ ("Ukrainian" ) + ")"
119- };
120- String [] languagesISO = {
121- "" ,
122- "ar" ,
123- "an" ,
124- "bg" ,
125- "ca" ,
126- "hr_hr" ,
127- "cs_cz" ,
128- "zh_cn" ,
129- "zh_tw" ,
130- "da" ,
131- "nl" ,
132- "en" ,
133- "et" ,
134- "tl" ,
135- "fr" ,
136- "fr_ca" ,
137- "gl" ,
138- "ka_ge" ,
139- "he" ,
140- "de" ,
141- "el" ,
142- "hi" ,
143- "hu" ,
144- "id" ,
145- "it" ,
146- "ja" ,
147- "ko" ,
148- "lv" ,
149- "lt" ,
150- "mr" ,
151- "no_nb" ,
152- "nb_no" ,
153- "fa" ,
154- "pl" ,
155- "pt_br" ,
156- "pt_pt" ,
157- "ro" ,
158- "ru" ,
159- "es" ,
160- "ta" ,
161- "tr" ,
162- "uk"
163- };
164-
76+ class Language {
77+ Language (String _name , String _originalName , String _isoCode ) {
78+ name = _name ;
79+ originalName = _originalName ;
80+ isoCode = _isoCode ;
81+ }
82+
83+ public String toString () {
84+ if (originalName .length () == 0 )
85+ return name ;
86+ return originalName + " (" + name + ")" ;
87+ };
88+
89+ String name ;
90+ String originalName ;
91+ String isoCode ;
92+ }
93+
94+ Language languages [] = {
95+ new Language (_ ("System Default" ), "" , "" ),
96+ new Language (_ ("Arabic" ), "العربية" , "ar" ),
97+ new Language (_ ("Aragonese" ), "Aragonés" , "an" ),
98+ new Language (_ ("Bulgarian" ), "български" , "bg" ),
99+ new Language (_ ("Catalan" ), "Català" , "ca" ),
100+ new Language (_ ("Croatian" ), "Hrvatski" , "hr_hr" ),
101+ new Language (_ ("Czech" ), "český" , "cs_cz" ),
102+ new Language (_ ("Chinese Simplified" ), "简体中文" , "zh_cn" ),
103+ new Language (_ ("Chinese Traditional" ), "繁體中文" , "zh_tw" ),
104+ new Language (_ ("Danish" ), "Dansk" , "da" ),
105+ new Language (_ ("Dutch" ), "Nederlands" , "nl" ),
106+ new Language (_ ("English" ), "English" , "en" ),
107+ new Language (_ ("Estonian" ), "Eesti" , "et" ),
108+ new Language (_ ("Filipino" ), "Pilipino" , "tl" ),
109+ new Language (_ ("French" ), "Français" , "fr" ),
110+ new Language (_ ("Canadian French" ), "Canadienne-français" , "fr_ca" ),
111+ new Language (_ ("Galician" ), "Galego" , "gl" ),
112+ new Language (_ ("Georgian" ), "საქართველოს" , "ka_ge" ),
113+ new Language (_ ("German" ), "Deutsch" , "de" ),
114+ new Language (_ ("Greek" ), "ελληνικά" , "el" ),
115+ new Language (_ ("Hebrew" ), "עברית" , "he" ),
116+ new Language (_ ("Hindi" ), "हिंदी" , "hi" ),
117+ new Language (_ ("Hungarian" ), "Magyar" , "hu" ),
118+ new Language (_ ("Indonesian" ), "Bahasa Indonesia" , "id" ),
119+ new Language (_ ("Italian" ), "Italiano" , "it" ),
120+ new Language (_ ("Japanese" ), "日本語" , "ja" ),
121+ new Language (_ ("Korean" ), "한국어" , "ko" ),
122+ new Language (_ ("Latvian" ), "Latviešu" , "lv" ),
123+ new Language (_ ("Lithuaninan" ), "Lietuvių Kalba" , "lt" ),
124+ new Language (_ ("Marathi" ), "मराठी" , "mr" ),
125+ new Language (_ ("Norwegian" ), "Norsk" , "no_nb" ),
126+ new Language (_ ("Norwegian Bokmål" ), "Norsk bokmål" , "nb_no" ),
127+ new Language (_ ("Persian" ), "فارسی" , "fa" ),
128+ new Language (_ ("Polish" ), "Język Polski" , "pl" ),
129+ new Language (_ ("Portuguese (Brazil)" ), "Português (Brazil)" , "pt_br" ),
130+ new Language (_ ("Portuguese (Portugal)" ), "Português (Portugal)" , "pt_pt" ),
131+ new Language (_ ("Romanian" ), "Română" , "ro" ),
132+ new Language (_ ("Russian" ), "Русский" , "ru" ),
133+ new Language (_ ("Spanish" ), "Español" , "es" ),
134+ new Language (_ ("Tamil" ), "தமிழ்" , "ta" ),
135+ new Language (_ ("Turkish" ), "Türk" , "tr" ),
136+ new Language (_ ("Ukrainian" ), "Український" , "uk" ), };
137+
165138 /**
166139 * Standardized width for buttons. Mac OS X 10.3 wants 70 as its default,
167140 * Windows XP needs 66, and my Ubuntu machine needs 80+, so 80 seems proper.
@@ -217,7 +190,7 @@ public class Preferences {
217190
218191 // data model
219192
220- static Hashtable defaults ;
193+ static Hashtable < String , String > defaults ;
221194 static Hashtable <String , String > table = new Hashtable <String , String >();
222195 static File preferencesFile ;
223196
@@ -253,7 +226,7 @@ static protected void init(String commandLinePrefs) {
253226 }
254227
255228 // clone the hash table
256- defaults = ( Hashtable ) table . clone ( );
229+ defaults = new Hashtable < String , String >( table );
257230
258231 // Load a prefs file if specified on the command line
259232 if (commandLinePrefs != null ) {
@@ -294,7 +267,12 @@ static protected void init(String commandLinePrefs) {
294267 }
295268
296269 // load the I18n module for internationalization
297- I18n .init (Preferences .get ("editor.languages.current" ));
270+ try {
271+ I18n .init (Preferences .get ("editor.languages.current" ));
272+ } catch (MissingResourceException e ) {
273+ I18n .init ("" );
274+ Preferences .set ("editor.languages.current" , "" );
275+ }
298276
299277 // set some other runtime constants (not saved on preferences file)
300278 table .put ("runtime.os" , PConstants .platformNames [PApplet .platform ]);
@@ -386,7 +364,11 @@ public void actionPerformed(ActionEvent e) {
386364 label = new JLabel (_ ("Editor language: " ));
387365 box .add (label );
388366 comboLanguage = new JComboBox (languages );
389- comboLanguage .setSelectedIndex ((Arrays .asList (languagesISO )).indexOf (Preferences .get ("editor.languages.current" )));
367+ String currentLanguage = Preferences .get ("editor.languages.current" );
368+ for (Language language : languages ) {
369+ if (language .isoCode .equals (currentLanguage ))
370+ comboLanguage .setSelectedItem (language );
371+ }
390372 box .add (comboLanguage );
391373 label = new JLabel (_ (" (requires restart of Arduino)" ));
392374 box .add (label );
@@ -676,9 +658,8 @@ protected void applyFrame() {
676658 setBoolean ("editor.update_extension" , updateExtensionBox .isSelected ());
677659
678660 // adds the selected language to the preferences file
679- Object newItem = comboLanguage .getSelectedItem ();
680- int pos = (Arrays .asList (languages )).indexOf (newItem .toString ()); // position in the languages array
681- set ("editor.languages.current" ,(Arrays .asList (languagesISO )).get (pos ));
661+ Language newLanguage = (Language ) comboLanguage .getSelectedItem ();
662+ set ("editor.languages.current" , newLanguage .isoCode );
682663
683664 editor .applyPreferences ();
684665 }
@@ -725,7 +706,7 @@ static protected void load(InputStream input) throws IOException {
725706 load (input , table );
726707 }
727708
728- static public void load (InputStream input , Map table ) throws IOException {
709+ static public void load (InputStream input , Map < String , String > table ) throws IOException {
729710 String [] lines = loadStrings (input ); // Reads as UTF-8
730711 for (String line : lines ) {
731712 if ((line .length () == 0 ) ||
@@ -837,7 +818,7 @@ public static void remove(String key) {
837818 }
838819
839820 static public String getDefault (String attribute ) {
840- return ( String ) defaults .get (attribute );
821+ return defaults .get (attribute );
841822 }
842823
843824
0 commit comments