From: Daniel L. <dan...@gm...> - 2005-08-11 13:06:25
|
Hello all, (bcc to Egon) I have a little problem, I hope you can solve. Following the *.properties files in Jmol, the menu includes mnemonics. Now the problem is, I would like to have them inside the translatable string, e.g.: _File &File where the "_" or "&" marks the mnemonic-char. This is because e.g. "File" is translated, but the mnemonic is "F". But in the German translation "File"="Datei" and the "F" cannot be the mnemonic. An example on how to extract the mnemonic can be found at http://www.koders.com/java/fid4286AE64065F639100053D2AF7BD618E87A0DAD4.aspx in line 225. My idea: Instead of reading the mnemonic from the .properties file(s), src/org/openscience/jmol/app/GuiMap.java should contain the functions to a) find the mnemonic in a string and add it to a menu item b) remove the mnemonic-char (& or _) from the string for the menu entry E.g. GT._("&File") should return a string "&Datei". Then this string should be examined. IMHO it affects src/org/openscience/jmol/app/GuiMap.java and src/org/openscience/jmol/app/Jmol.java (protected JMenuItem createMenuItem()). It should not affect any other fle/function. What do you think about this? Is it possible? If yes, could you implement it (my Java knowledge was not good enough to implement it). BTW: I cannot access the IRC channel at the moment (moved to a new apartment and my online account is limited in several functions), so please write back or use ICQ (ICQ #148295333) for a direct discussion. Regards, Daniel |
From: Nicolas V. <nve...@cl...> - 2005-08-12 18:55:42
|
Hi again Daniel, I took the time to implement a few methods that should help you. First, you can add the two following functions to GuiMap : public String getLabelWithoutMnemonic(String label) { if (label == null) { return null; } int index = label.indexOf('&'); if (index == -1) { return label; } return label.substring(0, index) + ((index < label.length() - 1) ? label.substring(index + 1) : ""); } public char getMnemonic(String label) { if (label == null) { return ' '; } int index = label.indexOf('&'); if ((index == -1) || (index == label.length() - 1)){ return ' '; } return label.charAt(index + 1); } You can then modify the newXXX() methods of GuiMap. For example, for newJMenuItem(): JMenuItem newJMenuItem(String key) { String label = getLabel(key); return new KeyJMenuItem(key, getLabelWithoutMnemonic(label), getMnemonic(label)); } And also modify the corresponding KeyJMenuItem constructor: KeyJMenuItem(String key, String label, char mnemonic) { super(label); if (mnemonic != ' ') { setMnemonic(mnemonic); } this.key = key; map.put(key, this); } After this, you may have to do some cleaning in Jmol.java. I haven't tested the code, I hope it works. I can answer questions until tomorrow in the beginning of the afternoon (French time), I am leaving on holidays afterwards :) Regards, Nicolas Daniel Leidert wrote: >Hello all, > >(bcc to Egon) > >I have a little problem, I hope you can solve. Following the >*.properties files in Jmol, the menu includes mnemonics. Now the problem >is, I would like to have them inside the translatable string, e.g.: > >_File >&File > >where the "_" or "&" marks the mnemonic-char. This is because e.g. >"File" is translated, but the mnemonic is "F". But in the German >translation "File"="Datei" and the "F" cannot be the mnemonic. An >example on how to extract the mnemonic can be found at >http://www.koders.com/java/fid4286AE64065F639100053D2AF7BD618E87A0DAD4.aspx in line 225. > >My idea: Instead of reading the mnemonic from the .properties file(s), >src/org/openscience/jmol/app/GuiMap.java should contain the functions >to > >a) find the mnemonic in a string and add it to a menu item >b) remove the mnemonic-char (& or _) from the string for the menu entry > >E.g. GT._("&File") should return a string "&Datei". Then this string >should be examined. > >IMHO it affects src/org/openscience/jmol/app/GuiMap.java and >src/org/openscience/jmol/app/Jmol.java (protected JMenuItem >createMenuItem()). It should not affect any other fle/function. > >What do you think about this? Is it possible? If yes, could you >implement it (my Java knowledge was not good enough to implement it). > |
From: Egon W. <eg...@us...> - 2005-08-14 14:58:23
|
On Friday 12 August 2005 20:47, Nicolas Vervelle wrote: > I took the time to implement a few methods that should help you. Ok, applied to CVS. Seems to be working properly. Thanx, Nicolas. Egon -- eg...@us... GPG: 1024D/D6336BA6 |
From: Daniel L. <dan...@gm...> - 2005-08-17 14:01:09
|
Am Sonntag, den 14.08.2005, 16:57 +0200 schrieb Egon Willighagen: > On Friday 12 August 2005 20:47, Nicolas Vervelle wrote: > > I took the time to implement a few methods that should help you. > > Ok, applied to CVS. Seems to be working properly. Thanx, Nicolas. ACK. Works nice. One thing. I looked through the Jmol.properties file and the result is, that IMO only About.aboutURL=org/openscience/jmol/app/About.html WhatsNew.changeLogURL=org/openscience/jmol/Data/ChangeLog.html Help.helpURL=org/openscience/jmol/Data/guide/index.html need to be kept. The strings are all moved to the new system, except [1]. The fooAccelerator keys are IMO obsolet too. I can't find a place where they are used. [1] I can't find them in the source. I guess the following list of strings show obsolete ones, because I don't see them used. Is that right? Measurement_List=Measurement List Apply=Apply OK=OK Cancel=Cancel Dismiss=Dismiss Representation=Representation Cartesian=Cartesian Crystallographic=Crystallographic Read_current_frame=Read current frame You_must_define_the_primitive_vectors_to_use_lattice_coordinates=You must define the primitive vectors to use lattice coordinates Minimum_atom_box_coordinate=Minimum atom box coordinate Maximum_atom_box_coordinate=Maximum atom box coordinate Minimum_bond_box_coordinate=Minimum bond box coordinate Maximum_bond_box_coordinate=Maximum bond box coordinate Lattice=Lattice Apply_to_all_frames=Apply to all frames Apply_to_current_frame=Apply to current frame Atom_Number=Atom Number Atom_Type=Atom Type Ooups!_The_value_you_entered_in_the_field_is_not_a_valid_number.=Ooups! The value you entered in the field is not a valid number. Preferences=Preferences Pick_a_Color=Pick a Color Delete=Delete DeleteAll=Delete all Clear=Clear Atom=Atom Symbol=Symbol Value=Value Base_Atom_Type=Base\nAtom Type Atomic_Number=Atomic\nNumber Atomic_Mass=Atomic\nMass Van_derWaals_Radius=Van derWaals\nRadius Covalent_Radius=Covalent\nRadius Color=Color You_must_have=You must have unique_atoms_for_this_measurement.=unique atoms for this measurement. Invalid_Input=Invalid Input No_matching_Angle_was_found=No matching Angle was found No_matching_Dihedral_was_found=No matching Dihedral was found No_matching_Distance_was_found=No matching Distance was found Regards, Daniel |
From: Nicolas V. <nve...@cl...> - 2005-08-21 20:03:24
|
Hi, Daniel Leidert wrote: >Am Sonntag, den 14.08.2005, 16:57 +0200 schrieb Egon Willighagen: > > >>On Friday 12 August 2005 20:47, Nicolas Vervelle wrote: >> >> >>>I took the time to implement a few methods that should help you. >>> >>> >>Ok, applied to CVS. Seems to be working properly. Thanx, Nicolas. >> >> > >ACK. Works nice. One thing. I looked through the Jmol.properties file >and the result is, that IMO only > >About.aboutURL=org/openscience/jmol/app/About.html >WhatsNew.changeLogURL=org/openscience/jmol/Data/ChangeLog.html >Help.helpURL=org/openscience/jmol/Data/guide/index.html > >need to be kept. The strings are all moved to the new system, except >[1]. > I would also remove them from the .properties file and use the GT._() mechanism instead. They can also be localized when the documentation has been translated. For example, for french : About.aboutURL=org/openscience/jmol/app/About_fr.html WhatsNew.changeLogURL=org/openscience/jmol/Data/ChangeLog_fr.html Help.helpURL=org/openscience/jmol/Data/guide_fr/index.html So, there would be no more need for Jmol.properties. >The fooAccelerator keys are IMO obsolet too. I can't find a place >where they are used. > >[1] I can't find them in the source. I guess the following list of >strings show obsolete ones, because I don't see them used. Is that >right? > > I would say so also. Miguel, Egon, do you know ? Nicolas |