我正在使用JSP编写网站。我想以多种语言提供网站,所以我HashMap为计划支持的每种语言创建了一个,并通过map.get("identifier")(当然还有其他一些代码)查找文本。
HashMap
map.get("identifier")
我遇到的问题是我以前通过使用一个format函数解决的(类似于printf许多语言),但这是另一种语言。
format
printf
具体的问题是,类似的文本User performed action可能会Action was performed by user以另一种语言出现(即,术语可能会出现混乱)。
User performed action
Action was performed by user
过去,我做过类似的事情#translate("Welcome to the site, %s!", {"Username"}),然后使用语言的format功能替换%s用户名。我可以简单地使用,String#replace但是那样我就无法做自己想做的事#translate("Welcome to the site, %s! You last visited on %s!", {"username", "last visit"})。
#translate("Welcome to the site, %s!", {"Username"})
%s
String#replace
#translate("Welcome to the site, %s! You last visited on %s!", {"username", "last visit"})
抱歉,如果这是一个错误的解释,请查找printf类似PHP的内容。
在Java中复制类似内容的最佳方法是什么?谢谢您的帮助。
不要重新发明。使用JSTL fmttaglib。它也支持参数化消息。
fmt
<fmt:message key="identifier"> <fmt:param value="${username}" /> </fmt:message>