⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 国际化讯息.htm

📁 java 技术参考汇集超值大礼包
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 1</title>
</head>

<body>

<p>国际化讯息</p>
<div id="PageContent">
	<table cellSpacing="0" cellPadding="0" width="100%" border="0" id="table3">
		<tr>
			<td class="pagebody" vAlign="top">
			<table style="CLEAR: both" cellSpacing="0" cellPadding="0" width="100%" border="0" id="table4">
				<tr>
					<td class="pagecontent" vAlign="top" width="100%">
					<div class="wiki-content">
						JSF的国际化(Internnationalization)讯息处理是基于Java对国际化的支持,您可以在一个讯息资源文件中统一管理讯息资源,资源文件的名称是.properties,而内容是名称与值的配对,例如:<ul>
							<li>messages.properties </li>
						</ul>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">titleText=JSF Demo
 hintText=Please input your name and password
 nameText=name
 passText=password
 commandText=Submit</pre>
							</div>
						</div>
						<p>  资源文件名称由basename加上语言与地区来组成,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">* basename.properties
    * basename_en.properties
    * basename_zh_cn.properties</pre>
							</div>
						</div>
						<p>
						  没有指定语言与地区的basename是预设的资源档名称,JSF会根据浏览器送来的Accept-Language
						header中的内容来决定该使用哪一个资源档名称,例如:</p>
						<p><br clear="all">
						<em><b>Accept-Language: zh_cn, en-US, en</b></em></p>
						<p><br clear="all">
						  如果浏览器送来这些header,则预设会使用繁体中文,接着是美式英文,再来是英文语系,如果找不到对应的讯息资源文件,则会使用预设的讯息资源文件。</p>
						<p>  由于讯息资源文件必须是ISO-8859-1编码,所以对于非西方语系的处理,必须先将之转换为Java
						Unicode Escape格式,例如您可以先在讯息资源文件中写下以下的内容:</p>
						<ul>
							<li>messages_zh_cn.txt </li>
						</ul>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">titleText=JSF示范
 hintText=请输入名称与密码
 nameText=名称
 passText=密码
 commandText=送出</pre>
							</div>
						</div>
						<p>  然后使用JDK的工具程序native2ascii来转换,例如:</p>
						<p><br clear="all">
						<em><b>native2ascii -encoding Big5 messages_zh_cn.txt
						messages_zh_cn.properties</b></em></p>
						<p><br clear="all">
						  转换后的内容会如下:</p>
						<ul>
							<li>messages_zh_cn.properties </li>
						</ul>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">titleText=JSF\u793a\u7bc4
 hintText=\u8acb\u8f38\u5165\u540d\u7a31\u8207\u5bc6\u78bc
 nameText=\u540d\u7a31
 passText=\u5bc6\u78bc
 commandText=\u9001\u51fa</pre>
							</div>
						</div>
						<p>  接下来您可以使用&lt;f:loadBundle&gt;卷标来指定加载讯息资源,一个例子如下:</p>
						<ul>
							<li>index.jsp </li>
						</ul>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>index.jsp</b></div>
							<div class="codeContent">
								<pre class="code-java">&lt;%@ taglib uri=<span class="code-quote">&quot;http:<span class="code-comment">//java.sun.com/jsf/core&quot;</span> prefix=&quot;f&quot; %&gt;
</span> &lt;%@ taglib uri=<span class="code-quote">&quot;http:<span class="code-comment">//java.sun.com/jsf/html&quot;</span> prefix=&quot;h&quot; %&gt;
</span> &lt;%@page contentType=<span class="code-quote">&quot;text/html;charset=UTF8&quot;</span>%&gt;

 &lt;f:view&gt;
 &lt;f:loadBundle basename=<span class="code-quote">&quot;messages&quot;</span> <span class="code-keyword">var</span>=<span class="code-quote">&quot;msgs&quot;</span>/&gt;

 &lt;html&gt;
 &lt;head&gt;
 &lt;title&gt;&lt;h:outputText value=<span class="code-quote">&quot;#{msgs.titleText}&quot;</span>/&gt;&lt;/title&gt;
 &lt;/head&gt;
 &lt;body&gt;

    &lt;h:form&gt;
        &lt;h3&gt;&lt;h:outputText value=<span class="code-quote">&quot;#{msgs.hintText}&quot;</span>/&gt;&lt;/h3&gt;
        &lt;h:outputText value=<span class="code-quote">&quot;#{msgs.nameText}&quot;</span>/&gt;:
                &lt;h:inputText value=<span class="code-quote">&quot;#{user.name}&quot;</span>/&gt;&lt;p&gt;
        &lt;h:outputText value=<span class="code-quote">&quot;#{msgs.passText}&quot;</span>/&gt;:
                &lt;h:inputSecret value=<span class="code-quote">&quot;#{user.password}&quot;</span>/&gt;&lt;p&gt;
        &lt;h:commandButton value=<span class="code-quote">&quot;#{msgs.commandText}&quot;</span>
                        actionListener=<span class="code-quote">&quot;#{user.verify}&quot;</span>
                        action=<span class="code-quote">&quot;#{user.outcome}&quot;</span>/&gt;
   &lt;/h:form&gt;

 &lt;/body&gt;
 &lt;/html&gt;
	
 &lt;/f:view&gt;</pre>
							</div>
						</div>
						<p>
						  如此一来,如果您的浏览器预设接受zh_cn语系的话,则页面上就可以显示中文,否则预设将以英文显示,也就是messages.properties的内容,为了能显示多国语系,我们设定网页编码为UTF8。</p>
						<p>  &lt;f:view&gt;可以设定locale属性,直接指定所要使用的语系,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">&lt;f:view locale=<span class="code-quote">&quot;zh_cn&quot;</span>&gt;
 &lt;f:loadBundle basename=<span class="code-quote">&quot;messages&quot;</span> <span class="code-keyword">var</span>=<span class="code-quote">&quot;msgs&quot;</span>/&gt;</pre>
							</div>
						</div>
						<p>
						  直接指定以上的话,则会使用繁体中文来显示,JSF会根据&lt;f:loadBundle&gt;的basename属性加上&lt;f:view&gt;的locale属性来决定要使用哪一个讯息资源文件,就上例而言,就是使用
						messages_zh_cn.properties,如果设定为以下的话,就会使用messages_en.properties:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">&lt;f:view locale=<span class="code-quote">&quot;en&quot;</span>&gt;
 &lt;f:loadBundle basename=<span class="code-quote">&quot;messages&quot;</span> <span class="code-keyword">var</span>=<span class="code-quote">&quot;msgs&quot;</span>/&gt;</pre>
							</div>
						</div>
						<p>  您也可以在faces-config.xml中设定语系,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">&lt;faces-config&gt;
    &lt;application&gt;
        &lt;local-config&gt;
            &lt;<span class="code-keyword">default</span>-locale&gt;en&lt;/<span class="code-keyword">default</span>-locale&gt;
            &lt;supported-locale&gt;zh_cn&lt;/supported-locale&gt;
        &lt;/local-config&gt;
    &lt;/application&gt;

 .....
 &lt;/faces-config&gt;</pre>
							</div>
						</div>
						<p>  在&lt;local-config&gt;一定有一个&lt;default-locale&gt;,而&lt;supported-locale&gt;可以有好几个,这告诉JSF您的应用程序支持哪些语系。</p>
						<p>
						  当然,如果您可以提供一个选项让使用者选择自己的语系会是更好的方式,例如根据user这个Bean的locale属性来决定页面语系:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">&lt;f:view locale=<span class="code-quote">&quot;#{user.locale}&quot;</span>&gt;
 &lt;f:loadBundle basename=<span class="code-quote">&quot;messages&quot;</span> <span class="code-keyword">var</span>=<span class="code-quote">&quot;msgs&quot;</span>/&gt;</pre>
							</div>
						</div>
						<p>  在页面中设定一个窗体,可以让使用者选择语系,例如设定单选钮:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">&lt;h:selectOneRadio value=<span class="code-quote">&quot;#{user.locale}&quot;</span>&gt;
     &lt;f:selectItem itemValue=<span class="code-quote">&quot;zh_cn&quot;</span>
                   itemLabel=<span class="code-quote">&quot;#{msgs.zh_cnText}&quot;</span>/&gt;
     &lt;f:selectItem itemValue=<span class="code-quote">&quot;en&quot;</span>
                   itemLabel=<span class="code-quote">&quot;#{msgs.enText}&quot;</span>/&gt;
 &lt;/h:selectOneRadio&gt;</pre>
							</div>
						</div>
					</div>
					</td>
				</tr>
			</table>
			</td>
		</tr>
	</table>
</div>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -