Eclipse - Plug-in componenten vernieuwen

Ik werkte rond de manier om de locale van de plug-in te veranderen zoals ik hier heb genoemd: http://jaider.net/12-06-2011/how-to-internationalize-your-eclipse-plug-in/ Maar er zijn een aantal componenten die moeten worden vernieuwd (als ze zichtbaar zijn), zoals aangepaste weergaven (org.eclipse.ui.views) of Menu, om te voorkomen dat Eclipse opnieuw wordt opgestart. Alsjeblieft ik heb je hulp nodig.

0
Ik probeer niet de taal van de hele app te updaten, alleen mijn aangepaste plug-in componenten. 2 Referentie die me veel heeft geholpen: MENU -> stackoverflow.com/questions/1202197/… VIEW -> eclipsezone.com/eclipse/forums/t60857.html
toegevoegd de auteur Jaider, de bron

2 antwoord

Het platform heeft geen manier om van locatie te wisselen tijdens het hardlopen. De IExtensionRegistry koos een locale bij het laden van de extensies voor de views, en de enige algemene manier om ze bij te werken, is opnieuw opstarten.

De org.eclipse.core.runtime.IExtensionRegistry heeft nieuwe ondersteuning voor meerdere talen toegevoegd (misschien in 3.7.0?), Maar het framework gebruikt het op dit moment niet.

EDIT: herstarten

Om uw eclipse opnieuw te starten met een nieuwe locale, moet u de opdrachtregel wijzigen (de vlag -nl bijwerken), deze opslaan in de systeemeigenschap eclipse.exitdata en uw IApplication met org.eclipse.equinox.app.IApplication.EXIT_RELAUNCH . Zie org.eclipse.ui.internal.ide.actions.OpenWorkspaceAction voor een voorbeeld van hoe dit wordt gebruikt.

3
toegevoegd
Kun je me vertellen hoe de taal moet worden ingesteld (locale) en de eclips automatisch opnieuw moet worden gestart?
toegevoegd de auteur Jaider, de bron
je kunt de IDE niet opnieuw opstarten totdat deze klaar is. Het is geen RCP-app.
toegevoegd de auteur Paul Webster, de bron

Bedankt Paul. Hier de code om opnieuw te starten met een nieuwe taal:

private static final String PROP_VM = "eclipse.vm"; //$NON-NLS-1$
private static final String PROP_VMARGS = "eclipse.vmargs"; //$NON-NLS-1$
private static final String PROP_COMMANDS = "eclipse.commands"; //$NON-NLS-1$
private static final String PROP_EXIT_CODE = "eclipse.exitcode"; //$NON-NLS-1$
private static final String PROP_EXIT_DATA = "eclipse.exitdata"; //$NON-NLS-1$
private static final String CMD_NL = "-nl"; //$NON-NLS-1$
private static final String CMD_VMARGS = "-vmargs"; //$NON-NLS-1$
private static final String NEW_LINE = "\n"; //$NON-NLS-1$

private static void restart(String nl) {
    String command_line = buildCommandLine(nl);
    if (command_line == null) {
        return;
    }
    System.setProperty(PROP_EXIT_CODE, org.eclipse.equinox.app.IApplication.EXIT_RELAUNCH.toString());//Integer.toString(24)
    System.setProperty(PROP_EXIT_DATA, command_line);
    Workbench.getInstance().restart();
}

private static String buildCommandLine(String nl) {
    String property = System.getProperty(PROP_VM);  

    StringBuffer result = new StringBuffer();
    if (property != null) {
        result.append(property);
    }
    result.append(NEW_LINE);

   //append the vmargs and commands. Assume that these already end in \n
    String vmargs = System.getProperty(PROP_VMARGS);
    if (vmargs != null) {
        result.append(vmargs);
    }

   //append the rest of the args, replacing or adding -data as required
    property = System.getProperty(PROP_COMMANDS);
    if (property != null) {// find the index of the arg to replace its value
        int cmd_nl_pos = property.lastIndexOf(CMD_NL);
        if (cmd_nl_pos != -1) {
            cmd_nl_pos += CMD_NL.length() + 1;
            result.append(property.substring(0, cmd_nl_pos));
            result.append(nl);
            result.append(property.substring(property.indexOf('\n',
                    cmd_nl_pos)));
        } else {
            result.append(NEW_LINE);
            result.append(property);
            result.append(NEW_LINE);
            result.append(CMD_NL);
            result.append(NEW_LINE);
            result.append(nl);
        }
    }

   //put the vmargs back at the very end (the eclipse.commands property
   //already contains the -vm arg)
    if (vmargs != null) {
        result.append(CMD_VMARGS);
        result.append(NEW_LINE);
        result.append(vmargs);
    }


    return result.toString();
}
1
toegevoegd