<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright 2006 The Apache Software Foundation Licensed under the Apache 
	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://www.apache.org/licenses/LICENSE-2.0 
	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. -->
<document>

	<properties>
		<title>Upgrade</title>
		<author email="sebawagner@apache.org">
			OpenMeetings Team
		</author>
	</properties>

	<body>

		<section name="Where to find language files">

			<p>You can find all current language files here: </p>
			<p>
				<a
					href="https://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/WebContent/languages/"
					rel="nofollow">https://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/WebContent/languages/
				</a>
			</p>
			<p>Just take one file and translate it to your language. </p>
		</section>

		<section name="Import and export of Language Files">

			<ul>
				<li>
					Use the
					<a href="LanguageEditor.html">LanguageEditor</a>
					for translation
				</li>
				<li>
					with the
					<a href="LanguageEditor.html">LanguageEditor</a>
					you can import and export Language Files
				</li>
			</ul>
		</section>

		<section name="How to add it as installation option">
			<p>
				Once you have finished the translation you can add a new node to:
				<a
					href="https://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/WebContent/languages/languages.xml"
					rel="nofollow">https://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/WebContent/languages/languages.xml
				</a>
			</p>
			<p>the name of the language should match the name of the file. Once
				this is done the Language file will automatically be imported during
				installation and will be an option at login.
			</p>
		</section>

	</body>

</document>