我是巴西人,我正在开发一个使用 SWT 的应用程序。但我需要 SWT 中的元素始终以英语显示给用户。目前他们为我出现了葡萄牙语,因为我的操作系统是葡萄牙语。那么不管操作系统如何,是否有可能强制所有元素保持英文?
问问题
241 次
2 回答
2
大多数 SWTWidget
依赖于操作系统,这意味着它们使用本机操作系统元素。所有非模拟小部件都是这种情况。您将无法更改这些语言(即选择与所选操作系统语言不同的语言)。
对于模拟小部件,此链接说明了如何强制使用某种语言。
于 2013-04-18T19:39:56.773 回答
0
通常建议在一个应用程序中支持国际化和本地化。看看java.util.ResourceBundle
它的支持类。
例如,我的操作系统上的默认语言是英语,但使用java.util.ResourceBundle
API,我可以针对葡萄牙语或任何其他客户。
代码
消息类
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 回答