我正在使用Search页面作为我的应用程序起始页面在java中开发一个应用程序。我在搜索页面中有一个包含语言的下拉列表。如果我从下拉列表中选择任何一种语言,则需要将我的整个应用程序更改为相应的语言。如何更改它?是否有任何apl。
答案 0 :(得分:1)
我不知道任何API,但我使用JQuery来更改每种语言的文本,这里是一个简单网页的例子,可以用英语和德语翻译:
function lang_en(){
$(document).prop('title', 'Todo-List');
$("#autoremove_label").text("Remove immediately?");
$("#task").css('width', '142');
$("#h1_title").html("Todo-List");
$("#autoremove").prop('title', 'Remove immediately?');
$("#task").prop('title', 'Name of the enty.');
$('#autoremove_label').prop('title', 'With that checkbox you can toggle if an element you select will immediatly disappear or stay selected until you enable that checkbox again.');
saveLang("en");
}
function lang_de(){
$(document).prop('title', 'Merkliste');
$("#h1_title").html("Merkliste");
$("#autoremove_label").text("Sofort entfernen?");
$("#task").css('width', '175');
$("#autoremove").prop('title', 'Sofort entfernen?');
$("#task").prop('title', 'Name des Eintrags.');
$('#autoremove_label').prop('title', 'Wenn sie es anschließend wieder einschalten werden alle markierten Einträge auf einmal entfernt.');
saveLang("de");
}
function saveLang(input){
localStorage.setItem("lang", input);
}
然后恢复用户在重新加载后选择的语言,或者当他回到网站时我使用该语言:
$(document).ready(function() {
if(localStorage.getItem("lang") != null){
if(localStorage.getItem("lang") == "de"){
lang_de();
}
else if (localStorage.getItem("lang") == "en") {
lang_en();
}
}
我知道它不是一个完美的(对于包含大量文本的网页来说是一个非常耗费工作量的解决方案),但是它可以正常工作,而且如果不使用像翻译网站这样的服务,你可以获得最接近的解决方案。谷歌,在我看来翻译网站时非常糟糕。
编辑:根据您要更改的文本要素,您可能需要不同的JQuery代码: 例如标签:
$("#idOfLabel").text("Translated text");
或h1:
$("#h1_id").html("Translated text");
这是网站标题:
$(document).prop('title', 'Translated text');
关于这一点很酷的是你也可以改变按钮的宽度,所以它可以包含更长和更短的字符串,否则可能会弄乱你的网站。
答案 1 :(得分:1)
您可以使用Java的国际化(I18N),以允许应用程序支持多种语言的文本。这是通过使用Locale
和ResourceBundle
类添加特定语言的文本来完成的:
查看oracle文档教程here。
简单地说,您可以根据语言(作为2个字符的代码,例如Locale
)和国家/地区(另外2个字符代码,例如en
)创建US
。然后,您可以使用ResourceBundle
中的Locale
并使用属性文件来存储文本。
示例:
String language = "en";
String country = "US";
Locale currentLocale = new Locale(language, country);
ResourceBundle messages = ResourceBundle.getBundle("MessagesBundle", currentLocale);
System.out.println(messages.getString("your_string_here"));
然后你会有一个属性文件;在此示例中,MessagesBundle.properties
:
your_string_here = Hello world!
your_other_string = Something else
对于另一种语言,您将在正确的本地化下拥有另一个MessagesBundle文件。例如,对于法语,该文件将被称为MessagesBundle_fr_FR.properties
:
your_string_here = Bonjour!
your_other_string = Something else in French