2014-10-16 31 views

回答

0

我們這樣做是這樣的:

IPreferenceStore preferenceStore = new ScopedPreferenceStore(new InstanceScope(),getBundle().getSymbolicName()); 
preferenceStore.setValue("language", locale.toString()); //$NON-NLS-1$ 
getWorkbench().restart(); 

雖然你可能從綁定到一個處理一個參數化的Command獲得區域,如:

public class ChangeLanguageHandler extends AbstractHandler implements IElementUpdater { 

    private static final String PARAM = "lang"; //$NON-NLS-1$ 

    @Override 
    public Object execute(final ExecutionEvent event) throws ExecutionException { 
    // Consider to supress deselection event: 
    if (event.getTrigger() instanceof Event) { 
     final Widget widget = ((Event) event.getTrigger()).widget; 
     if (widget instanceof MenuItem) { 
     if (!((MenuItem) widget).getSelection()) { 
      return null; 
     } 
     } 
    } 
    final Shell shell = HandlerUtil.getActiveShell(event); 
    final String lang = event.getParameter(PARAM); 
    if (openDialogAndAskIfUserIsSureAboutThis_BecauseItRequiresARestart) { 
     invokeCodeAboveWithTheNewLocale(new Locale(lang)); 
    } 
    return null; 
    } 

    // Update the Checked State... 
    @SuppressWarnings("rawtypes") 
    @Override 
    public void updateElement(final UIElement element, final Map parameters) { 
    final Object param = parameters.get(PARAM); 
    element.setChecked(Locale.getDefault().getLanguage().equals(param)); 
    } 
+0

哇,謝謝。 – user2405469 2014-10-17 08:47:07

1

你應該看看這個博客文章:

http://blog.vogella.com/2013/05/03/eclipse-internationalization-part-14-current-situation-by-dirk-fauth/

有一個org.eclipse.e4.core.services.nls.ILocaleChangeService在e4環境中,但您需要爲它準備應用程序。

源和看看

最佳下載:如果你不使用E4 https://github.com/fipro78/e4translationexample

或不介意的話,你可以使用此代碼(未測試)重新啓動:

// set the eclipse relaunch property 
    StringBuffer arguments = new StringBuffer(); 
    arguments.append("${eclipse.vm}\n"); //$NON-NLS-1$ 
    arguments.append("-nl\n").append("de").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 

    arguments.append("-vmargs\n"); //$NON-NLS-1$ 
    arguments.append(System.getProperty("eclipse.vmargs")); //$NON-NLS-1$ 

    System.setProperty("eclipse.exitcode", Integer.toString(IApplication.EXIT_RELAUNCH)); //$NON-NLS-1$ 
    System.getProperties().setProperty(IApplicationContext.EXIT_DATA_PROPERTY, arguments.toString()); 
    PlatformUI.getWorkbench().restart(); 

保持請記住,在開發環境中這不起作用,因爲不支持重新啓動。

+0

重新啓動方法不適用於我 – lolung 2014-12-16 10:48:58

+0

你是從eclipse還是一款產品運行? – 2014-12-16 13:32:45

+0

嘗試了兩種方法。沒有succsess。唯一能爲我工作的是操縱產品中的config.ini。但是,這將有點hacky,這就是爲什麼我正在尋找更好的解決方案 – lolung 2014-12-18 09:52:25

相關問題