<!DOCTYPE HTML>
<html lang="de">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span><a id="line.1">package org.apache.fulcrum.localization;</a>
<span class="sourceLineNo">002</span><a id="line.2"></a>
<span class="sourceLineNo">003</span><a id="line.3"></a>
<span class="sourceLineNo">004</span><a id="line.4">/*</a>
<span class="sourceLineNo">005</span><a id="line.5"> * Licensed to the Apache Software Foundation (ASF) under one</a>
<span class="sourceLineNo">006</span><a id="line.6"> * or more contributor license agreements.  See the NOTICE file</a>
<span class="sourceLineNo">007</span><a id="line.7"> * distributed with this work for additional information</a>
<span class="sourceLineNo">008</span><a id="line.8"> * regarding copyright ownership.  The ASF licenses this file</a>
<span class="sourceLineNo">009</span><a id="line.9"> * to you under the Apache License, Version 2.0 (the</a>
<span class="sourceLineNo">010</span><a id="line.10"> * "License"); you may not use this file except in compliance</a>
<span class="sourceLineNo">011</span><a id="line.11"> * with the License.  You may obtain a copy of the License at</a>
<span class="sourceLineNo">012</span><a id="line.12"> *</a>
<span class="sourceLineNo">013</span><a id="line.13"> *   http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">014</span><a id="line.14"> *</a>
<span class="sourceLineNo">015</span><a id="line.15"> * Unless required by applicable law or agreed to in writing,</a>
<span class="sourceLineNo">016</span><a id="line.16"> * software distributed under the License is distributed on an</a>
<span class="sourceLineNo">017</span><a id="line.17"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</a>
<span class="sourceLineNo">018</span><a id="line.18"> * KIND, either express or implied.  See the License for the</a>
<span class="sourceLineNo">019</span><a id="line.19"> * specific language governing permissions and limitations</a>
<span class="sourceLineNo">020</span><a id="line.20"> * under the License.</a>
<span class="sourceLineNo">021</span><a id="line.21"> */</a>
<span class="sourceLineNo">022</span><a id="line.22"></a>
<span class="sourceLineNo">023</span><a id="line.23"></a>
<span class="sourceLineNo">024</span><a id="line.24">import java.util.Locale;</a>
<span class="sourceLineNo">025</span><a id="line.25">import java.util.ResourceBundle;</a>
<span class="sourceLineNo">026</span><a id="line.26"></a>
<span class="sourceLineNo">027</span><a id="line.27">import javax.servlet.http.HttpServletRequest;</a>
<span class="sourceLineNo">028</span><a id="line.28"></a>
<span class="sourceLineNo">029</span><a id="line.29">/**</a>
<span class="sourceLineNo">030</span><a id="line.30"> * &lt;p&gt;</a>
<span class="sourceLineNo">031</span><a id="line.31"> * Provides localization functionality using the interface provided</a>
<span class="sourceLineNo">032</span><a id="line.32"> * by &lt;code&gt;ResourceBundle&lt;/code&gt;, plus leverages a "search path"</a>
<span class="sourceLineNo">033</span><a id="line.33"> * style traversal of the &lt;code&gt;ResourceBundle&lt;/code&gt; objects named by</a>
<span class="sourceLineNo">034</span><a id="line.34"> * the &lt;code&gt;locale.default.bundles&lt;/code&gt; to discover a value for a</a>
<span class="sourceLineNo">035</span><a id="line.35"> * given key.</a>
<span class="sourceLineNo">036</span><a id="line.36"> * &lt;/p&gt;</a>
<span class="sourceLineNo">037</span><a id="line.37"> *</a>
<span class="sourceLineNo">038</span><a id="line.38"> * &lt;p&gt;</a>
<span class="sourceLineNo">039</span><a id="line.39"> * It is suggested that one handle</a>
<span class="sourceLineNo">040</span><a id="line.40"> * &lt;a href="http://www.math.fu-berlin.de/~rene/www/java/tutorial/i18n/message/messageFormat.html"&gt;dealing with concatenated messages&lt;/a&gt;</a>
<span class="sourceLineNo">041</span><a id="line.41"> * using &lt;code&gt;MessageFormat&lt;/code&gt; and properties files.</a>
<span class="sourceLineNo">042</span><a id="line.42"> * &lt;/p&gt;</a>
<span class="sourceLineNo">043</span><a id="line.43"> *</a>
<span class="sourceLineNo">044</span><a id="line.44"> * @author &lt;a href="mailto:jon@latchkey.com"&gt;Jon S. Stevens&lt;/a&gt;</a>
<span class="sourceLineNo">045</span><a id="line.45"> * @author &lt;a href="mailto:dlr@finemaltcoding.com"&gt;Daniel Rall&lt;/a&gt;</a>
<span class="sourceLineNo">046</span><a id="line.46"> * @author &lt;a href="mailto:leonardr@collab.net"&gt;Leonard Richardson&lt;/a&gt;</a>
<span class="sourceLineNo">047</span><a id="line.47"> * @author &lt;a href="mailto:mcconnell@apache.org"&gt;Stephen McConnell&lt;/a&gt;</a>
<span class="sourceLineNo">048</span><a id="line.48"> * @author &lt;a href="mailto:tv@apache.org"&gt;Thomas Vandahl&lt;/a&gt;</a>
<span class="sourceLineNo">049</span><a id="line.49"> * @version $Id$</a>
<span class="sourceLineNo">050</span><a id="line.50"> */</a>
<span class="sourceLineNo">051</span><a id="line.51">public interface LocalizationService extends SimpleLocalizationService</a>
<span class="sourceLineNo">052</span><a id="line.52">{</a>
<span class="sourceLineNo">053</span><a id="line.53">    String ROLE = LocalizationService.class.getName();</a>
<span class="sourceLineNo">054</span><a id="line.54">    String SERVICE_NAME = ROLE;</a>
<span class="sourceLineNo">055</span><a id="line.55"></a>
<span class="sourceLineNo">056</span><a id="line.56">    /**</a>
<span class="sourceLineNo">057</span><a id="line.57">     * A constant for the HTTP &lt;code&gt;Accept-Language&lt;/code&gt; header.</a>
<span class="sourceLineNo">058</span><a id="line.58">     */</a>
<span class="sourceLineNo">059</span><a id="line.59">    String ACCEPT_LANGUAGE = "Accept-Language";</a>
<span class="sourceLineNo">060</span><a id="line.60"></a>
<span class="sourceLineNo">061</span><a id="line.61">    /**</a>
<span class="sourceLineNo">062</span><a id="line.62">     * Convenience method to get a ResourceBundle based on name and</a>
<span class="sourceLineNo">063</span><a id="line.63">     * HTTP &lt;code&gt;Accept-Language&lt;/code&gt; header.</a>
<span class="sourceLineNo">064</span><a id="line.64">     *</a>
<span class="sourceLineNo">065</span><a id="line.65">     * @param bundleName Name of bundle.</a>
<span class="sourceLineNo">066</span><a id="line.66">     * @param languageHeader A String with the language header.</a>
<span class="sourceLineNo">067</span><a id="line.67">     * @return A localized ResourceBundle.</a>
<span class="sourceLineNo">068</span><a id="line.68">     */</a>
<span class="sourceLineNo">069</span><a id="line.69">    ResourceBundle getBundle(String bundleName, String languageHeader);</a>
<span class="sourceLineNo">070</span><a id="line.70"></a>
<span class="sourceLineNo">071</span><a id="line.71">    /**</a>
<span class="sourceLineNo">072</span><a id="line.72">     * Convenience method to get a ResourceBundle based on HTTP</a>
<span class="sourceLineNo">073</span><a id="line.73">     * Accept-Language header in HttpServletRequest.</a>
<span class="sourceLineNo">074</span><a id="line.74">     *</a>
<span class="sourceLineNo">075</span><a id="line.75">     * @param req The HTTP request to parse the</a>
<span class="sourceLineNo">076</span><a id="line.76">     * &lt;code&gt;Accept-Language&lt;/code&gt; of.</a>
<span class="sourceLineNo">077</span><a id="line.77">     * @return A localized ResourceBundle.</a>
<span class="sourceLineNo">078</span><a id="line.78">     */</a>
<span class="sourceLineNo">079</span><a id="line.79">    ResourceBundle getBundle(HttpServletRequest req);</a>
<span class="sourceLineNo">080</span><a id="line.80"></a>
<span class="sourceLineNo">081</span><a id="line.81">    /**</a>
<span class="sourceLineNo">082</span><a id="line.82">     * Convenience method to get a &lt;code&gt;ResourceBundle&lt;/code&gt; based</a>
<span class="sourceLineNo">083</span><a id="line.83">     * on name and HTTP &lt;code&gt;Accept-Language&lt;/code&gt; header from a</a>
<span class="sourceLineNo">084</span><a id="line.84">     * &lt;code&gt;HttpServletRequest&lt;/code&gt;.</a>
<span class="sourceLineNo">085</span><a id="line.85">     *</a>
<span class="sourceLineNo">086</span><a id="line.86">     * @param bundleName Name of bundle.</a>
<span class="sourceLineNo">087</span><a id="line.87">     * @param req The HTTP request to parse the</a>
<span class="sourceLineNo">088</span><a id="line.88">     * &lt;code&gt;Accept-Language&lt;/code&gt; of.</a>
<span class="sourceLineNo">089</span><a id="line.89">     * @return A localized ResourceBundle.</a>
<span class="sourceLineNo">090</span><a id="line.90">     */</a>
<span class="sourceLineNo">091</span><a id="line.91">    ResourceBundle getBundle(String bundleName, HttpServletRequest req);</a>
<span class="sourceLineNo">092</span><a id="line.92"></a>
<span class="sourceLineNo">093</span><a id="line.93">    /**</a>
<span class="sourceLineNo">094</span><a id="line.94">     * Attempts to pull the &lt;code&gt;Accept-Language&lt;/code&gt; header out of</a>
<span class="sourceLineNo">095</span><a id="line.95">     * the &lt;code&gt;HttpServletRequest&lt;/code&gt; object and then parse it.</a>
<span class="sourceLineNo">096</span><a id="line.96">     * If the header is not present, it will return a</a>
<span class="sourceLineNo">097</span><a id="line.97">     * &lt;code&gt;null&lt;/code&gt; &lt;code&gt;Locale&lt;/code&gt;.</a>
<span class="sourceLineNo">098</span><a id="line.98">     *</a>
<span class="sourceLineNo">099</span><a id="line.99">     * @param req The HTTP request to parse the</a>
<span class="sourceLineNo">100</span><a id="line.100">     * &lt;code&gt;Accept-Language&lt;/code&gt; of.</a>
<span class="sourceLineNo">101</span><a id="line.101">     * @return The parsed locale.</a>
<span class="sourceLineNo">102</span><a id="line.102">     */</a>
<span class="sourceLineNo">103</span><a id="line.103">    Locale getLocale(HttpServletRequest req);</a>
<span class="sourceLineNo">104</span><a id="line.104"></a>
<span class="sourceLineNo">105</span><a id="line.105">    /**</a>
<span class="sourceLineNo">106</span><a id="line.106">     * Parses the &lt;code&gt;Accept-Language&lt;/code&gt; header and attempts to</a>
<span class="sourceLineNo">107</span><a id="line.107">     * create a &lt;code&gt;Locale&lt;/code&gt; from it.</a>
<span class="sourceLineNo">108</span><a id="line.108">     *</a>
<span class="sourceLineNo">109</span><a id="line.109">     * @param languageHeader The language header (i.e. &lt;code&gt;en, es;q=0.8,</a>
<span class="sourceLineNo">110</span><a id="line.110">     * zh-TW;q=0.1&lt;/code&gt;), or &lt;code&gt;null&lt;/code&gt; for the locale</a>
<span class="sourceLineNo">111</span><a id="line.111">     * corresponding to the default language and country.</a>
<span class="sourceLineNo">112</span><a id="line.112">     * @return The parsed locale, or a locale corresponding to the</a>
<span class="sourceLineNo">113</span><a id="line.113">     * language and country defaults.</a>
<span class="sourceLineNo">114</span><a id="line.114">     */</a>
<span class="sourceLineNo">115</span><a id="line.115">    Locale getLocale(String languageHeader);</a>
<span class="sourceLineNo">116</span><a id="line.116">}</a>




























































</pre>
</div>
</main>
</body>
</html>
