1

我是巴西人,我正在开发一个使用 SWT 的应用程序。但我需要 SWT 中的元素始终以英语显示给用户。目前他们为我出现了葡萄牙语,因为我的操作系统是葡萄牙语。那么不管操作系统如何,是否有可能强制所有元素保持英文?

4

2 回答 2

2

大多数 SWTWidget依赖于操作系统,这意味着它们使用本机操作系统元素。所有非模拟小部件都是这种情况。您将无法更改这些语言(即选择与所选操作系统语言不同的语言)。

对于模拟小部件,链接说明了如何强制使用某种语言。

于 2013-04-18T19:39:56.773 回答
0

通常建议在一个应用程序中支持国际化和本地化。看看java.util.ResourceBundle它的支持类。

例如,我的操作系统上的默认语言是英语,但使用java.util.ResourceBundleAPI,我可以针对葡萄牙语或任何其他客户。

代码

消息类

package com.sample;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

public class Messages {
    private static final String BUNDLE_NAME = "com.sample.messages"; //$NON-NLS-1$
    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
            .getBundle(BUNDLE_NAME);
    private Messages() {
    }
    public static String getString(String key) {
        try {
            return RESOURCE_BUNDLE.getString(key);
        } catch (MissingResourceException e) {
            return '!' + key + '!';
        }
    }
}

测试班

package com.sample;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Test {
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display, SWT.CLOSE);
        shell.setLayout(new GridLayout(1, false));
        shell.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
        shell.setText(Messages.getString("Test.TITLE")); //$NON-NLS-1$
        Button button = new Button(shell, SWT.PUSH);
        button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
        button.setText(Messages.getString("Test.GREETINGS")); //$NON-NLS-1$

        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}

message.properties 文件

Test.GREETINGS=Olá Mundo \!\!
Test.TITLE=\u0644\u064A\u0644\u0629 \u0633\u0639\u064A\u062F\u0629

输出

在此处输入图像描述

注意 -标题为阿拉伯语,按钮文本为葡萄牙语。

于 2013-04-19T11:31:47.233 回答