Hallo zusammen,
ich habe versucht mit hilfe von einem Snippet
Einen LanguageSwitcher in meiner Applikation zu bauen. Hab da die passenden Commands und MenuItems in die Plugin.xml eingetragen.
So mein Problem grad ist, mein RCP wechselt die Sprache nicht beim umschalten.
Achja natürlich habe ich davor schon externalize Strings gemacht für die passenden Sprachen.
Beim debuggen macht der sogar beim changeLocale(locale) (siehe oben), sogar das richtig gesetzte "Parameter" von dem Plugin gesetzten Extension ein.
Woran kann es wohl liegen dass es nicht funktioniert?
Gruss Lam
ich habe versucht mit hilfe von einem Snippet
Java:
package de.dc.language.switcher;
/*******************************************************************************
* Copyright (c) 2009 Siemens AG
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* [url=http://www.eclipse.org/legal/epl-v10.html]Eclipse Public License - Version 1.0[/url]
*
* Contributors:
* Kai Toedter - initial API and implementation
*******************************************************************************/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.Platform;
import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.ui.PlatformUI;
/**
* Switches the language in RCP based products. Works only if the product is
* deployed to the local file system since the <product>.ini file is altered.
*
* @see org.eclipse.core.commands.IHandler
* @see org.eclipse.core.commands.AbstractHandler
*/
public class LanguageSwitchHandler extends AbstractHandler {
/**
* The constructor.
*/
public LanguageSwitchHandler() {
}
/**
* the command has been executed, so extract extract the needed information
* from the application context.
*/
public Object execute(ExecutionEvent event) throws ExecutionException {
String locale = event
.getParameter("language.locale");
// Does not work:
System.getProperties().setProperty("eclipse.exitdata", "-nl " +
locale);
changeLocale(locale);
PlatformUI.getWorkbench().restart();
return null;
}
private static void changeLocale(String locale) {
Location configArea = Platform.getInstallLocation();
String product = Platform.getProduct().getName();
if (configArea == null) {
return;
}
URL location = null;
try {
location = new URL(configArea.getURL().toExternalForm() + product
+ ".ini");
} catch (MalformedURLException e) {
// This should never happen
}
System.out.println("LanguageSwitchHandler.loadConfigurationInfo(): "
+ location);
try {
String fileName = location.getFile();
File file = new File(fileName);
fileName += ".bak";
file.renameTo(new File(fileName));
BufferedReader in = new BufferedReader(new FileReader(fileName));
BufferedWriter out = new BufferedWriter(new FileWriter(location
.getFile()));
try {
boolean isNl = false;
boolean isNlWiritten = false;
String line = in.readLine();
while (line != null) {
if (!isNl) {
out.write(line);
} else {
out.write(locale);
isNl = false;
isNlWiritten = true;
}
out.newLine();
if (line.equals("-nl")) {
isNl = true;
}
line = in.readLine();
}
if (!isNlWiritten) {
out.write("-nl");
out.newLine();
out.write(locale);
out.newLine();
}
out.flush();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Einen LanguageSwitcher in meiner Applikation zu bauen. Hab da die passenden Commands und MenuItems in die Plugin.xml eingetragen.
So mein Problem grad ist, mein RCP wechselt die Sprache nicht beim umschalten.
Achja natürlich habe ich davor schon externalize Strings gemacht für die passenden Sprachen.
Beim debuggen macht der sogar beim changeLocale(locale) (siehe oben), sogar das richtig gesetzte "Parameter" von dem Plugin gesetzten Extension ein.
Woran kann es wohl liegen dass es nicht funktioniert?
Gruss Lam