spark 에서 언어 플러그 인 에 문제 가 있 습 니 다.

5503 단어 자바.netswing
spark 의 언어 플러그 인 은 중국어 옵션 을 표시 하지 않 습 니 다. 그것 은 두 글자 의 언어 파일 만 식별 할 수 있 기 때 문 입 니 다. 예: "en", 중국 어 는 "zh" 입 니 다.CN "이 라 며 국명 을 달 면 인식 이 안 되 지만, 여전히 중국 어 를 정확하게 표시 할 수 있 지만, 언어 옵션 에는 간 체 중국어 가 없다.
이 파일 수정: LanguagePlugin. java

package org.jivesoftware.sparkimpl.plugin.language;

import java.awt.event.ActionEvent;
import java.io.File;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Enumeration;
import java.util.Locale;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.zip.ZipFile;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JMenu;
import javax.swing.JOptionPane;

import org.jivesoftware.resource.Res;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.plugin.Plugin;
import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;

/**
 * Allows for changing of default languages within Spark.
 *
 * @author Derek DeMoro
 */
public class LanguagePlugin implements Plugin {

    private Locale[] locales;
    private JMenu languageMenu;

    public void initialize() {
        // Register with action menu
        final JMenu actionsMenu = SparkManager.getMainWindow().getMenuByName(Res.getString("menuitem.actions"));

        languageMenu = new JMenu(Res.getString("menuitem.languages"));

        locales = Locale.getAvailableLocales();
        
        // Load files
        URL sparkJar = getClass().getClassLoader().getResource("spark.jar");
        if (sparkJar == null) {
            // Do not initialize
            return;
        }

        String url = URLDecoder.decode(sparkJar.getPath());

        try {
            ZipFile zipFile = new JarFile(new File(url));
            for (Enumeration e = zipFile.entries(); e.hasMoreElements();) {
                JarEntry entry = (JarEntry)e.nextElement();
                String propertiesName = entry.getName();
                // Ignore any manifest.mf entries.
                if (propertiesName.endsWith(".properties")) {
                    int lastIndex = propertiesName.lastIndexOf("i18n_");
                    int period = propertiesName.lastIndexOf(".");
                    if (lastIndex == -1 && propertiesName.contains("spark_i18n")) {
                        addLanguage("en");
                    }
                    else {
                        String language = propertiesName.substring(lastIndex + 5, period);
                        addLanguage(language);
//                        Log.error("propertiesName:"+propertiesName+" language:"+language);
                    }
                }
            }
            zipFile.close();
            zipFile = null;
        }
        catch (Throwable e) {
            Log.error("Error unzipping plugin", e);
        }

        actionsMenu.add(languageMenu);
    }

    private void addLanguage(String language) {
    	int ind=language.indexOf("_");
    	String country=null;
    	if(ind>=0) {
    		country=language.substring(ind+1,language.length());
    		language=language.substring(0,ind);
    	}
        for (int i = 0; i < locales.length; i++) {
            final Locale locale = locales[i];
            if (locale.getLanguage().equals(language) && (country==null || locale.getCountry().equals(country))) {
                Action action = new AbstractAction() {
                    public void actionPerformed(ActionEvent e) {
                        final LocalPreferences preferences = SettingsManager.getLocalPreferences();
                        preferences.setLanguage(locale.getLanguage());
                        preferences.setCountry(locale.getCountry());

                        int ok = JOptionPane.showConfirmDialog(SparkManager.getMainWindow(), Res.getString("message.restart.required"), Res.getString("title.confirmation"), JOptionPane.YES_NO_OPTION);
                        if (ok == JOptionPane.YES_OPTION) {
                            SparkManager.getMainWindow().shutdown();
                        }
                    }
                };

                String displayCountry = locale.getDisplayCountry(locale);
				action.putValue(Action.NAME, locale.getDisplayLanguage(locale)+ ( displayCountry==null || displayCountry.length()<=0 ? "" : " - "+displayCountry ));
                languageMenu.add(action);
                break;
            }
        }
    }

    public void shutdown() {
    }

    public boolean canShutDown() {
        return false;
    }


    public void uninstall() {
    }
}

정말 무엇 을 고 쳤 는 지 잊 어 버 려 서 모든 내용 을 보 냈 습 니 다. 원래 의 것 으로 바 꾸 면 됩 니 다. 버 전 은 2.5.8 입 니 다.

좋은 웹페이지 즐겨찾기