/**
* Licensed to The Apereo Foundation under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
*
* The Apereo Foundation licenses this file to you under the Educational
* Community License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License
* at:
*
* http://opensource.org/licenses/ecl2.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*
*/
package org.opencastproject.matterhorn.search;
import java.io.Serializable;
import java.util.Locale;
/**
* A <code>Language</code> consists of a language identifier, e.g. <code>de</code> to identify the German language, and
* of the language description in the various supported languages. There is also a connection to the associate
* <code>Locale</code>.
*
* @see Locale
*/
public interface Language extends Serializable, Comparable<Language> {
/**
* Returns the locale that is associated with the language.
*
* @return the locale
*/
Locale getLocale();
/**
* Returns the name of this language in its own language, e.g
* <ul>
* <li><code>English</code> for English</li>
* <li><code>Deutsch</code> for German</li>
* <li><code>Français</code> for French</li>
* </ul>
*
* @return the language name in its own language
*/
String getDescription();
/**
* Returns the name of this language in the specified language, e.g given that <code>language</code> was
* <code>German</code>, this method would return:
* <ul>
* <li><code>Englisch</code> for English</li>
* <li><code>Deutsch</code> for German</li>
* <li><code>Französisch</code> for French</li>
* </ul>
*
* @param language
* the language version of this language
* @return the language name in the specified language
*/
String getDescription(Language language);
/**
* Returns the language's identifier, which corresponds to the locales name for this language.
*
* @return the language identifier
*/
String getIdentifier();
}