spark 에서 언어 플러그 인 에 문제 가 있 습 니 다.
이 파일 수정: 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 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.