Ignore:
Timestamp:
2017-08-25T15:17:01+02:00 (7 years ago)
Author:
Don-vip
Message:

see #15182 - remove dependence of I18n on GUI

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java

    r12634 r12644  
    2626import java.awt.image.FilteredImageSource;
    2727import java.lang.reflect.InvocationTargetException;
     28import java.util.Arrays;
     29import java.util.Collection;
    2830import java.util.Enumeration;
    2931import java.util.EventObject;
     32import java.util.Locale;
    3033import java.util.concurrent.Callable;
    3134import java.util.concurrent.ExecutionException;
     
    3437import javax.swing.GrayFilter;
    3538import javax.swing.ImageIcon;
     39import javax.swing.JColorChooser;
    3640import javax.swing.JComponent;
     41import javax.swing.JFileChooser;
    3742import javax.swing.JLabel;
    3843import javax.swing.JOptionPane;
     
    5156import org.openstreetmap.josm.gui.ExtendedDialog;
    5257import org.openstreetmap.josm.gui.MainApplication;
     58import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
    5359import org.openstreetmap.josm.gui.widgets.HtmlPanel;
    5460import org.openstreetmap.josm.tools.CheckParameterUtil;
     
    6773 */
    6874public final class GuiHelper {
     75
     76    /* Localization keys for file chooser (and color chooser). */
     77    private static final String[] JAVA_INTERNAL_MESSAGE_KEYS = new String[] {
     78        /* JFileChooser windows laf */
     79        "FileChooser.detailsViewActionLabelText",
     80        "FileChooser.detailsViewButtonAccessibleName",
     81        "FileChooser.detailsViewButtonToolTipText",
     82        "FileChooser.fileAttrHeaderText",
     83        "FileChooser.fileDateHeaderText",
     84        "FileChooser.fileNameHeaderText",
     85        "FileChooser.fileNameLabelText",
     86        "FileChooser.fileSizeHeaderText",
     87        "FileChooser.fileTypeHeaderText",
     88        "FileChooser.filesOfTypeLabelText",
     89        "FileChooser.homeFolderAccessibleName",
     90        "FileChooser.homeFolderToolTipText",
     91        "FileChooser.listViewActionLabelText",
     92        "FileChooser.listViewButtonAccessibleName",
     93        "FileChooser.listViewButtonToolTipText",
     94        "FileChooser.lookInLabelText",
     95        "FileChooser.newFolderAccessibleName",
     96        "FileChooser.newFolderActionLabelText",
     97        "FileChooser.newFolderToolTipText",
     98        "FileChooser.refreshActionLabelText",
     99        "FileChooser.saveInLabelText",
     100        "FileChooser.upFolderAccessibleName",
     101        "FileChooser.upFolderToolTipText",
     102        "FileChooser.viewMenuLabelText",
     103
     104        /* JFileChooser gtk laf */
     105        "FileChooser.acceptAllFileFilterText",
     106        "FileChooser.cancelButtonText",
     107        "FileChooser.cancelButtonToolTipText",
     108        "FileChooser.deleteFileButtonText",
     109        "FileChooser.filesLabelText",
     110        "FileChooser.filterLabelText",
     111        "FileChooser.foldersLabelText",
     112        "FileChooser.newFolderButtonText",
     113        "FileChooser.newFolderDialogText",
     114        "FileChooser.openButtonText",
     115        "FileChooser.openButtonToolTipText",
     116        "FileChooser.openDialogTitleText",
     117        "FileChooser.pathLabelText",
     118        "FileChooser.renameFileButtonText",
     119        "FileChooser.renameFileDialogText",
     120        "FileChooser.renameFileErrorText",
     121        "FileChooser.renameFileErrorTitle",
     122        "FileChooser.saveButtonText",
     123        "FileChooser.saveButtonToolTipText",
     124        "FileChooser.saveDialogTitleText",
     125
     126        /* JFileChooser motif laf */
     127        //"FileChooser.cancelButtonText",
     128        //"FileChooser.cancelButtonToolTipText",
     129        "FileChooser.enterFileNameLabelText",
     130        //"FileChooser.filesLabelText",
     131        //"FileChooser.filterLabelText",
     132        //"FileChooser.foldersLabelText",
     133        "FileChooser.helpButtonText",
     134        "FileChooser.helpButtonToolTipText",
     135        //"FileChooser.openButtonText",
     136        //"FileChooser.openButtonToolTipText",
     137        //"FileChooser.openDialogTitleText",
     138        //"FileChooser.pathLabelText",
     139        //"FileChooser.saveButtonText",
     140        //"FileChooser.saveButtonToolTipText",
     141        //"FileChooser.saveDialogTitleText",
     142        "FileChooser.updateButtonText",
     143        "FileChooser.updateButtonToolTipText",
     144
     145        /* gtk color chooser */
     146        "GTKColorChooserPanel.blueText",
     147        "GTKColorChooserPanel.colorNameText",
     148        "GTKColorChooserPanel.greenText",
     149        "GTKColorChooserPanel.hueText",
     150        "GTKColorChooserPanel.nameText",
     151        "GTKColorChooserPanel.redText",
     152        "GTKColorChooserPanel.saturationText",
     153        "GTKColorChooserPanel.valueText",
     154
     155        /* JOptionPane */
     156        "OptionPane.okButtonText",
     157        "OptionPane.yesButtonText",
     158        "OptionPane.noButtonText",
     159        "OptionPane.cancelButtonText"
     160    };
    69161
    70162    private GuiHelper() {
     
    526618        }
    527619    }
     620
     621    /**
     622     * Localizations for file chooser dialog.
     623     * For some locales (e.g. de, fr) translations are provided
     624     * by Java, but not for others (e.g. ru, uk).
     625     * @since 12644 (moved from I18n)
     626     */
     627    public static void translateJavaInternalMessages() {
     628        Locale l = Locale.getDefault();
     629
     630        AbstractFileChooser.setDefaultLocale(l);
     631        JFileChooser.setDefaultLocale(l);
     632        JColorChooser.setDefaultLocale(l);
     633        for (String key : JAVA_INTERNAL_MESSAGE_KEYS) {
     634            String us = UIManager.getString(key, Locale.US);
     635            String loc = UIManager.getString(key, l);
     636            // only provide custom translation if it is not already localized by Java
     637            if (us != null && us.equals(loc)) {
     638                UIManager.put(key, tr(us));
     639            }
     640        }
     641    }
     642
     643    /**
     644     * Setup special font for Khmer script, as the default Java fonts do not display these characters.
     645     * @since 12644 (moved from I18n)
     646     * @since 8282
     647     */
     648    public static void setupLanguageFonts() {
     649        // Use special font for Khmer script, as the default Java font do not display these characters
     650        if ("km".equals(LanguageInfo.getJOSMLocaleCode())) {
     651            Collection<String> fonts = Arrays.asList(
     652                    GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames());
     653            for (String f : new String[]{"Khmer UI", "DaunPenh", "MoolBoran"}) {
     654                if (fonts.contains(f)) {
     655                    setUIFont(f);
     656                    break;
     657                }
     658            }
     659        }
     660    }
    528661}
Note: See TracChangeset for help on using the changeset viewer.