19780544fSAndrew Rist#**************************************************************
29780544fSAndrew Rist#
39780544fSAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
49780544fSAndrew Rist#  or more contributor license agreements.  See the NOTICE file
59780544fSAndrew Rist#  distributed with this work for additional information
69780544fSAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
79780544fSAndrew Rist#  to you under the Apache License, Version 2.0 (the
89780544fSAndrew Rist#  "License"); you may not use this file except in compliance
99780544fSAndrew Rist#  with the License.  You may obtain a copy of the License at
109780544fSAndrew Rist#
119780544fSAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
129780544fSAndrew Rist#
139780544fSAndrew Rist#  Unless required by applicable law or agreed to in writing,
149780544fSAndrew Rist#  software distributed under the License is distributed on an
159780544fSAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
169780544fSAndrew Rist#  KIND, either express or implied.  See the License for the
179780544fSAndrew Rist#  specific language governing permissions and limitations
189780544fSAndrew Rist#  under the License.
199780544fSAndrew Rist#
209780544fSAndrew Rist#**************************************************************
219780544fSAndrew Rist
229780544fSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweirpackage installer::languages;
25cdf0e10cSrcweir
26cdf0e10cSrcweiruse installer::converter;
27cdf0e10cSrcweiruse installer::existence;
28cdf0e10cSrcweiruse installer::exiter;
29cdf0e10cSrcweiruse installer::globals;
30cdf0e10cSrcweiruse installer::remover;
31cdf0e10cSrcweiruse installer::ziplist;
32852d2129SAndre Fischeruse Digest::MD5;
33852d2129SAndre Fischer
34852d2129SAndre Fischeruse strict;
35852d2129SAndre Fischer
36cdf0e10cSrcweir
3701a01bd6SAndre Fischer=head2 analyze_languagelist()
3801a01bd6SAndre Fischer
3901a01bd6SAndre Fischer    Convert $installer::globals::languagelist into $installer::globals::languageproduct.
4001a01bd6SAndre Fischer
4101a01bd6SAndre Fischer    That is now just a replacement of '_' with ','.
4201a01bd6SAndre Fischer
4301a01bd6SAndre Fischer    $installer::globals::languageproduct (specified by the -l option
4401a01bd6SAndre Fischer    on the command line) can contain multiple languages separated by
4501a01bd6SAndre Fischer    '_' to specify multilingual builds.
4601a01bd6SAndre Fischer
4701a01bd6SAndre Fischer    Separation by '#' to build multiple languages (single or
4801a01bd6SAndre Fischer    multilingual) in one make_installer.pl run is not supported
4901a01bd6SAndre Fischer    anymore.  Call make_installer.pl with all languages separately instead:
5001a01bd6SAndre Fischer    make_installer.pl -l L1#L2
5101a01bd6SAndre Fischer    ->
5201a01bd6SAndre Fischer    make_installer.pl -l L1
5301a01bd6SAndre Fischer    make_installer.pl -l L2
5401a01bd6SAndre Fischer
5501a01bd6SAndre Fischer=cut
5601a01bd6SAndre Fischersub analyze_languagelist()
5701a01bd6SAndre Fischer{
5801a01bd6SAndre Fischer    my $languageproduct = $installer::globals::languagelist;
5901a01bd6SAndre Fischer
6001a01bd6SAndre Fischer    $languageproduct =~ s/\_/\,/g;  # substituting "_" by ",", in case of dmake definition 01_49
6101a01bd6SAndre Fischer
6201a01bd6SAndre Fischer    if ($languageproduct =~ /\#/)
6301a01bd6SAndre Fischer    {
6401a01bd6SAndre Fischer        installer::exiter::exit_program(
6501a01bd6SAndre Fischer            "building more than one language (or language set) is not supported anymore\n"
6601a01bd6SAndre Fischer            ."please replace one call of 'make_installer.pl -l language1#language2'\n"
6701a01bd6SAndre Fischer            ."with two calls 'make_installer.pl -l language1' and 'make_installer.pl -l language2'",
6801a01bd6SAndre Fischer            "installer::language::analyze_languagelist");
6901a01bd6SAndre Fischer    }
7001a01bd6SAndre Fischer
7101a01bd6SAndre Fischer    $installer::globals::languageproduct = $languageproduct;
72cdf0e10cSrcweir}
73cdf0e10cSrcweir
7401a01bd6SAndre Fischer
7501a01bd6SAndre Fischer
7601a01bd6SAndre Fischer
77852d2129SAndre Fischer=head2 get_language_directory_name ($language_string)
78852d2129SAndre Fischer
79852d2129SAndre Fischer    Create a directory name that contains the given set of languages.
80852d2129SAndre Fischer    When $language_string exceeds a certain length then it is shortened.
81852d2129SAndre Fischer
82852d2129SAndre Fischer=cut
83852d2129SAndre Fischersub get_language_directory_name ($)
84852d2129SAndre Fischer{
85852d2129SAndre Fischer    my ($language_string) = @_;
86852d2129SAndre Fischer
87852d2129SAndre Fischer    if (length($language_string) > $installer::globals::max_lang_length)
88852d2129SAndre Fischer	{
89852d2129SAndre Fischer		my $number_of_languages = ($language_string =~ tr/_//);
90852d2129SAndre Fischer        my $digest = new Digest::MD5();
91852d2129SAndre Fischer        $digest->add($language_string);
92852d2129SAndre Fischer        my $short_digest = substr($digest->hexdigest(), 0, 8);
93852d2129SAndre Fischer		return "lang_" . $number_of_languages . "_id_" . $short_digest;
94852d2129SAndre Fischer	}
95852d2129SAndre Fischer    else
96852d2129SAndre Fischer    {
97852d2129SAndre Fischer        return $language_string;
98852d2129SAndre Fischer    }
99852d2129SAndre Fischer}
100852d2129SAndre Fischer
101852d2129SAndre Fischer
102852d2129SAndre Fischer
103852d2129SAndre Fischer
104cdf0e10cSrcweir####################################################
105cdf0e10cSrcweir# Reading languages from zip list file
106cdf0e10cSrcweir####################################################
107cdf0e10cSrcweir
108cdf0e10cSrcweirsub get_info_about_languages
109cdf0e10cSrcweir{
110cdf0e10cSrcweir	my ( $allsettingsarrayref ) = @_;
111cdf0e10cSrcweir
112cdf0e10cSrcweir	my $languagelistref;
113cdf0e10cSrcweir
114cdf0e10cSrcweir	$languagelistref = installer::ziplist::getinfofromziplist($allsettingsarrayref, "languages");
115cdf0e10cSrcweir	$installer::globals::languagelist = $$languagelistref;
116cdf0e10cSrcweir
117cdf0e10cSrcweir	if ( $installer::globals::languagelist eq "" )	# not defined on command line and not in product list
118cdf0e10cSrcweir	{
119cdf0e10cSrcweir		installer::exiter::exit_program("ERROR: Languages not defined on command line (-l) and not in product list!", "get_info_about_languages");
120cdf0e10cSrcweir	}
121cdf0e10cSrcweir
122cdf0e10cSrcweir	# Adapting the separator format from zip list.
123cdf0e10cSrcweir	# | means new product, , (comma) means more than one language in one product
124cdf0e10cSrcweir	# On the command line, | is difficult to use. Therefore this script uses hashes
125cdf0e10cSrcweir
126cdf0e10cSrcweir	$installer::globals::languagelist =~ s/\|/\#/g;
127cdf0e10cSrcweir
128cdf0e10cSrcweir	analyze_languagelist();
129cdf0e10cSrcweir}
130cdf0e10cSrcweir
131cdf0e10cSrcweir#############################################################################
132cdf0e10cSrcweir# Checking whether all elements of an array A are also member of array B
133cdf0e10cSrcweir#############################################################################
134cdf0e10cSrcweir
135cdf0e10cSrcweirsub all_elements_of_array1_in_array2
136cdf0e10cSrcweir{
137cdf0e10cSrcweir	my ($array1, $array2) = @_;
138cdf0e10cSrcweir
139cdf0e10cSrcweir	my $array2_contains_all_elements_of_array1 = 1;
140cdf0e10cSrcweir
141cdf0e10cSrcweir	for ( my $i = 0; $i <= $#{$array1}; $i++ )
142cdf0e10cSrcweir	{
143cdf0e10cSrcweir		if (! installer::existence::exists_in_array(${$array1}[$i], $array2))
144cdf0e10cSrcweir		{
145cdf0e10cSrcweir			$array2_contains_all_elements_of_array1 = 0;
146cdf0e10cSrcweir			last;
147cdf0e10cSrcweir		}
148cdf0e10cSrcweir	}
149cdf0e10cSrcweir
150cdf0e10cSrcweir	return $array2_contains_all_elements_of_array1;
151cdf0e10cSrcweir}
152cdf0e10cSrcweir
153cdf0e10cSrcweir#############################################
154cdf0e10cSrcweir# All languages defined for one product
155cdf0e10cSrcweir#############################################
156852d2129SAndre Fischer
157852d2129SAndre Fischer=head2 get_all_languages_for_one_product($languagestring, $allvariables)
158852d2129SAndre Fischer
159852d2129SAndre Fischer    $languagestring can be one or more language names, separated by ','.
160852d2129SAndre Fischer
161852d2129SAndre Fischer    $installer::globals::ismultilingual is set to 1 when $languagestring contains more than one languages.
162852d2129SAndre Fischer
163852d2129SAndre Fischer=cut
164852d2129SAndre Fischersub get_all_languages_for_one_product ($$)
165cdf0e10cSrcweir{
166cdf0e10cSrcweir	my ( $languagestring, $allvariables ) = @_;
167cdf0e10cSrcweir
168cdf0e10cSrcweir
169852d2129SAndre Fischer	$installer::globals::ismultilingual = ($languagestring =~ /\,/ ) ? 1 : 0;
170cdf0e10cSrcweir
171852d2129SAndre Fischer	my $languages = $languagestring;
172852d2129SAndre Fischer    $languages =~ s/\s+//g;
173852d2129SAndre Fischer	my @languagearray = split(/,/, $languages);
174cdf0e10cSrcweir
175cdf0e10cSrcweir	if ( $installer::globals::iswindowsbuild )
176cdf0e10cSrcweir	{
177cdf0e10cSrcweir		my $furthercheck = 1;
178cdf0e10cSrcweir
179cdf0e10cSrcweir		# For some languages (that are not supported by Windows, english needs to be added to the installation set
180cdf0e10cSrcweir		# Languages saved in "@installer::globals::noMSLocaleLangs"
181cdf0e10cSrcweir
182cdf0e10cSrcweir		if ( all_elements_of_array1_in_array2(\@languagearray, \@installer::globals::noMSLocaleLangs) )
183cdf0e10cSrcweir		{
184cdf0e10cSrcweir			my $officestartlanguage = $languagearray[0];
185cdf0e10cSrcweir			unshift(@languagearray, "en-US");	# am Anfang einf�gen!
186cdf0e10cSrcweir			$installer::globals::ismultilingual = 1;
187cdf0e10cSrcweir			$installer::globals::added_english  = 1;
188cdf0e10cSrcweir			$installer::globals::set_office_start_language  = 1;
189cdf0e10cSrcweir			# setting the variable PRODUCTLANGUAGE, needed for Linguistic-ForceDefaultLanguage.xcu
190cdf0e10cSrcweir			$allvariables->{'PRODUCTLANGUAGE'} = $officestartlanguage;
191cdf0e10cSrcweir			$furthercheck = 0;
192cdf0e10cSrcweir		}
193cdf0e10cSrcweir
194cdf0e10cSrcweir		# In bilingual installation sets, in which english is the first language,
195cdf0e10cSrcweir		# the Office start language shall be the second language.
196cdf0e10cSrcweir
197cdf0e10cSrcweir		if ( $furthercheck )
198cdf0e10cSrcweir		{
199cdf0e10cSrcweir			if (( $#languagearray == 1 ) && ( $languagearray[0] eq "en-US" ))
200cdf0e10cSrcweir			{
201cdf0e10cSrcweir				my $officestartlanguage = $languagearray[1];
202cdf0e10cSrcweir				$installer::globals::set_office_start_language  = 1;
203cdf0e10cSrcweir				# setting the variable PRODUCTLANGUAGE, needed for Linguistic-ForceDefaultLanguage.xcu
204cdf0e10cSrcweir				$allvariables->{'PRODUCTLANGUAGE'} = $officestartlanguage;
205cdf0e10cSrcweir			}
206cdf0e10cSrcweir		}
207cdf0e10cSrcweir	}
208cdf0e10cSrcweir
209cdf0e10cSrcweir	return \@languagearray;
210cdf0e10cSrcweir}
211cdf0e10cSrcweir
212cdf0e10cSrcweir####################################################################################
213cdf0e10cSrcweir# FAKE: The languages string may contain only "de", "en-US", instead of "01", ...
214cdf0e10cSrcweir# But this has to be removed as soon as possible.
215cdf0e10cSrcweir# In the future the languages are determined with "en-US" instead "01"
216cdf0e10cSrcweir# already on the command line and in the zip list file.
217cdf0e10cSrcweir####################################################################################
218cdf0e10cSrcweir
219cdf0e10cSrcweirsub fake_languagesstring
220cdf0e10cSrcweir{
221cdf0e10cSrcweir	my ($stringref) = @_;
222cdf0e10cSrcweir
223cdf0e10cSrcweir	# ATTENTION: This function has to be removed as soon as possible!
224cdf0e10cSrcweir
225cdf0e10cSrcweir	$$stringref =~ s/01/en-US/;
226cdf0e10cSrcweir	$$stringref =~ s/03/pt/;
227cdf0e10cSrcweir	$$stringref =~ s/07/ru/;
228cdf0e10cSrcweir	$$stringref =~ s/30/el/;
229cdf0e10cSrcweir	$$stringref =~ s/31/nl/;
230cdf0e10cSrcweir	$$stringref =~ s/33/fr/;
231cdf0e10cSrcweir	$$stringref =~ s/34/es/;
232cdf0e10cSrcweir	$$stringref =~ s/35/fi/;
233cdf0e10cSrcweir	$$stringref =~ s/36/hu/;
234cdf0e10cSrcweir	$$stringref =~ s/37/ca/;
235cdf0e10cSrcweir	$$stringref =~ s/39/it/;
236cdf0e10cSrcweir	$$stringref =~ s/42/cs/;
237cdf0e10cSrcweir	$$stringref =~ s/43/sk/;
238cdf0e10cSrcweir	$$stringref =~ s/44/en-GB/;
239cdf0e10cSrcweir	$$stringref =~ s/45/da/;
240cdf0e10cSrcweir	$$stringref =~ s/46/sv/;
241cdf0e10cSrcweir	$$stringref =~ s/47/no/;
242cdf0e10cSrcweir	$$stringref =~ s/48/pl/;
243cdf0e10cSrcweir	$$stringref =~ s/49/de/;
244cdf0e10cSrcweir	$$stringref =~ s/55/pt-BR/;
245cdf0e10cSrcweir	$$stringref =~ s/66/th/;
246cdf0e10cSrcweir	$$stringref =~ s/77/et/;
247cdf0e10cSrcweir	$$stringref =~ s/81/ja/;
248cdf0e10cSrcweir	$$stringref =~ s/82/ko/;
249cdf0e10cSrcweir	$$stringref =~ s/86/zh-CN/;
250cdf0e10cSrcweir	$$stringref =~ s/88/zh-TW/;
251cdf0e10cSrcweir	$$stringref =~ s/90/tr/;
252cdf0e10cSrcweir	$$stringref =~ s/91/hi-IN/;
253cdf0e10cSrcweir	$$stringref =~ s/96/ar/;
254cdf0e10cSrcweir	$$stringref =~ s/97/he/;
255cdf0e10cSrcweir}
256cdf0e10cSrcweir
257cdf0e10cSrcweir##########################################################
258cdf0e10cSrcweir# Converting the language array into a string for output
259cdf0e10cSrcweir##########################################################
260cdf0e10cSrcweir
261cdf0e10cSrcweirsub get_language_string
262cdf0e10cSrcweir{
263cdf0e10cSrcweir	my ($languagesref) = @_;
264cdf0e10cSrcweir
265cdf0e10cSrcweir	my $newstring = "";
266cdf0e10cSrcweir
267cdf0e10cSrcweir	for ( my $i = 0; $i <= $#{$languagesref}; $i++ )
268cdf0e10cSrcweir	{
269cdf0e10cSrcweir		$newstring = $newstring . ${$languagesref}[$i] . "_";
270cdf0e10cSrcweir	}
271cdf0e10cSrcweir
272cdf0e10cSrcweir	# remove ending underline
273cdf0e10cSrcweir
274cdf0e10cSrcweir	$newstring =~ s/\_\s*$//;
275cdf0e10cSrcweir
276cdf0e10cSrcweir	return \$newstring;
277cdf0e10cSrcweir}
278cdf0e10cSrcweir
279cdf0e10cSrcweir##########################################################
280cdf0e10cSrcweir# Analyzing the languages in the languages array and
281cdf0e10cSrcweir# returning the most important language
282cdf0e10cSrcweir##########################################################
283cdf0e10cSrcweir
284cdf0e10cSrcweirsub get_default_language
285cdf0e10cSrcweir{
286cdf0e10cSrcweir	my ($languagesref) = @_;
287cdf0e10cSrcweir
288cdf0e10cSrcweir	return ${$languagesref}[0];		# ToDo, only returning the first language
289cdf0e10cSrcweir}
290cdf0e10cSrcweir
291cdf0e10cSrcweir#############################################################
292cdf0e10cSrcweir# Contains the installation set one of the asian languages?
293cdf0e10cSrcweir#############################################################
294cdf0e10cSrcweir
295cdf0e10cSrcweirsub detect_asian_language
296cdf0e10cSrcweir{
297cdf0e10cSrcweir	my ($languagesref) = @_;
298cdf0e10cSrcweir
299cdf0e10cSrcweir	my $containsasia = 0;
300cdf0e10cSrcweir
301cdf0e10cSrcweir	for ( my $i = 0; $i <= $#{$languagesref}; $i++ )
302cdf0e10cSrcweir	{
303cdf0e10cSrcweir		my $onelang = ${$languagesref}[$i];
304cdf0e10cSrcweir		$onelang =~ s/\s*$//;
305cdf0e10cSrcweir
306cdf0e10cSrcweir		for ( my $j = 0; $j <= $#installer::globals::asianlanguages; $j++ )
307cdf0e10cSrcweir		{
308cdf0e10cSrcweir			my $asialang = $installer::globals::asianlanguages[$j];
309cdf0e10cSrcweir			$asialang =~ s/\s*$//;
310cdf0e10cSrcweir
311cdf0e10cSrcweir			if ( $onelang eq $asialang )
312cdf0e10cSrcweir			{
313cdf0e10cSrcweir				$containsasia = 1;
314cdf0e10cSrcweir				last;
315cdf0e10cSrcweir			}
316cdf0e10cSrcweir		}
317cdf0e10cSrcweir
318cdf0e10cSrcweir		if ( $containsasia ) { last; }
319cdf0e10cSrcweir	}
320cdf0e10cSrcweir
321cdf0e10cSrcweir	return $containsasia;
322cdf0e10cSrcweir}
323cdf0e10cSrcweir
324cdf0e10cSrcweir#############################################################
325cdf0e10cSrcweir# Contains the installation set only asian languages?
326cdf0e10cSrcweir#############################################################
327cdf0e10cSrcweir
328cdf0e10cSrcweirsub contains_only_asian_languages
329cdf0e10cSrcweir{
330cdf0e10cSrcweir	my ($languagesref) = @_;
331cdf0e10cSrcweir
332cdf0e10cSrcweir	my $onlyasian = 1;
333cdf0e10cSrcweir
334cdf0e10cSrcweir	for ( my $i = 0; $i <= $#{$languagesref}; $i++ )
335cdf0e10cSrcweir	{
336cdf0e10cSrcweir		my $onelang = ${$languagesref}[$i];
337cdf0e10cSrcweir		$onelang =~ s/\s*$//;
338cdf0e10cSrcweir
339cdf0e10cSrcweir		if (! installer::existence::exists_in_array($onelang, \@installer::globals::asianlanguages))
340cdf0e10cSrcweir		{
341cdf0e10cSrcweir			$onlyasian = 0;
342cdf0e10cSrcweir			last;
343cdf0e10cSrcweir		}
344cdf0e10cSrcweir	}
345cdf0e10cSrcweir
346cdf0e10cSrcweir	return $onlyasian;
347cdf0e10cSrcweir}
348cdf0e10cSrcweir
349cdf0e10cSrcweir################################################################
350cdf0e10cSrcweir# Contains the installation set one of the western languages
351cdf0e10cSrcweir################################################################
352cdf0e10cSrcweir
353cdf0e10cSrcweirsub detect_western_language
354cdf0e10cSrcweir{
355cdf0e10cSrcweir	my ($languagesref) = @_;
356cdf0e10cSrcweir
357cdf0e10cSrcweir	my $containswestern = 1;
358cdf0e10cSrcweir
359cdf0e10cSrcweir	if ( contains_only_asian_languages($languagesref) ) { $containswestern = 0; }
360cdf0e10cSrcweir
361cdf0e10cSrcweir	return $containswestern;
362cdf0e10cSrcweir}
363cdf0e10cSrcweir
364cdf0e10cSrcweir################################################################
365cdf0e10cSrcweir# Determining the language used by the Java installer
366cdf0e10cSrcweir################################################################
367cdf0e10cSrcweir
368cdf0e10cSrcweirsub get_java_language
369cdf0e10cSrcweir{
370cdf0e10cSrcweir	my ( $language ) = @_;
371cdf0e10cSrcweir
372cdf0e10cSrcweir	# my $javalanguage = "";
373cdf0e10cSrcweir
374cdf0e10cSrcweir	# if ( $language eq "en-US" ) { $javalanguage = "en_US"; }
375cdf0e10cSrcweir	# elsif ( $language eq "ar" ) { $javalanguage = "ar_AR"; }
376cdf0e10cSrcweir	# elsif ( $language eq "bg" ) { $javalanguage = "bg_BG"; }
377cdf0e10cSrcweir	# elsif ( $language eq "ca" ) { $javalanguage = "ca_CA"; }
378cdf0e10cSrcweir	# elsif ( $language eq "cs" ) { $javalanguage = "cs_CS"; }
379cdf0e10cSrcweir	# elsif ( $language eq "da" ) { $javalanguage = "da_DA"; }
380cdf0e10cSrcweir	# elsif ( $language eq "de" ) { $javalanguage = "de"; }
381cdf0e10cSrcweir	# elsif ( $language eq "de" ) { $javalanguage = "de_DE"; }
382cdf0e10cSrcweir	# elsif ( $language eq "et" ) { $javalanguage = "et_ET"; }
383cdf0e10cSrcweir	# elsif ( $language eq "el" ) { $javalanguage = "el_EL"; }
384cdf0e10cSrcweir	# elsif ( $language eq "fi" ) { $javalanguage = "fi_FI"; }
385cdf0e10cSrcweir	# elsif ( $language eq "fr" ) { $javalanguage = "fr_FR"; }
386cdf0e10cSrcweir	# elsif ( $language eq "hu" ) { $javalanguage = "hu_HU"; }
387cdf0e10cSrcweir	# elsif ( $language eq "he" ) { $javalanguage = "he_HE"; }
388cdf0e10cSrcweir	# elsif ( $language eq "it" ) { $javalanguage = "it_IT"; }
389cdf0e10cSrcweir	# elsif ( $language eq "nl" ) { $javalanguage = "nl_NL"; }
390cdf0e10cSrcweir	# elsif ( $language eq "es" ) { $javalanguage = "es_ES"; }
391cdf0e10cSrcweir	# elsif ( $language eq "sv" ) { $javalanguage = "sv_SV"; }
392cdf0e10cSrcweir	# elsif ( $language eq "sk" ) { $javalanguage = "sk_SK"; }
393cdf0e10cSrcweir	# elsif ( $language eq "pl" ) { $javalanguage = "pl_PL"; }
394cdf0e10cSrcweir	# elsif ( $language eq "pt-BR" ) { $javalanguage = "pt_BR"; }
395cdf0e10cSrcweir	# elsif ( $language eq "ru" ) { $javalanguage = "ru_RU"; }
396cdf0e10cSrcweir	# elsif ( $language eq "tr" ) { $javalanguage = "tr_TR"; }
397cdf0e10cSrcweir	# elsif ( $language eq "ja" ) { $javalanguage = "ja"; }
398cdf0e10cSrcweir	# elsif ( $language eq "ja" ) { $javalanguage = "ja_JP"; }
399cdf0e10cSrcweir	# elsif ( $language eq "ko" ) { $javalanguage = "ko_KR"; }
400cdf0e10cSrcweir	# elsif ( $language eq "th" ) { $javalanguage = "th_TH"; }
401cdf0e10cSrcweir	# elsif ( $language eq "zh-CN" ) { $javalanguage = "zh_CN"; }
402cdf0e10cSrcweir	# elsif ( $language eq "zh-TW" ) { $javalanguage = "zh_TW"; }
403cdf0e10cSrcweir
404cdf0e10cSrcweir	# languages not defined yet
405cdf0e10cSrcweir	# if ( $javalanguage eq "" )
406cdf0e10cSrcweir	# {
407cdf0e10cSrcweir	# 	$javalanguage = $language;
408cdf0e10cSrcweir	#	$javalanguage =~ s/\-/\_/;
409cdf0e10cSrcweir	# }
410cdf0e10cSrcweir
411852d2129SAndre Fischer	my $javalanguage = $language;
412cdf0e10cSrcweir	$javalanguage =~ s/\-/\_/;
413cdf0e10cSrcweir
414cdf0e10cSrcweir	return $javalanguage;
415cdf0e10cSrcweir}
416cdf0e10cSrcweir
417852d2129SAndre Fischer
418852d2129SAndre Fischer
419852d2129SAndre Fischer=head2 get_key_language ($languages)
420852d2129SAndre Fischer
421852d2129SAndre Fischer    Determine the key language from the array of @$languages.
422852d2129SAndre Fischer
423852d2129SAndre Fischer    If there is only one language then that is the key language.
424852d2129SAndre Fischer
425852d2129SAndre Fischer    If there are two languages and one is en-US and was automatically
426852d2129SAndre Fischer    added, then the other language is the key language.
427852d2129SAndre Fischer
428852d2129SAndre Fischer    When there is more than one language and the case above does not
429852d2129SAndre Fischer    apply then return either 'multiasia' or 'multiwestern' as key
430852d2129SAndre Fischer    language, depending on whether one of the asian language parts
431852d2129SAndre Fischer    'jp', 'ko', 'zh' appear.
432852d2129SAndre Fischer
433852d2129SAndre Fischer=cut
434852d2129SAndre Fischersub get_key_language ($)
435852d2129SAndre Fischer{
436852d2129SAndre Fischer    my ($languages) = @_;
437852d2129SAndre Fischer
438852d2129SAndre Fischer    my $language_count = scalar @$languages;
439852d2129SAndre Fischer
440852d2129SAndre Fischer    if ($language_count == 1)
441852d2129SAndre Fischer    {
442852d2129SAndre Fischer        return $languages->[0];
443852d2129SAndre Fischer    }
444852d2129SAndre Fischer    else
445852d2129SAndre Fischer    {
446852d2129SAndre Fischer		if ($installer::globals::added_english && $language_count==1)
447852d2129SAndre Fischer		{
448852d2129SAndre Fischer            # Only multilingual because of added English.
449852d2129SAndre Fischer			return $languages->[1];
450852d2129SAndre Fischer		}
451852d2129SAndre Fischer		else
452852d2129SAndre Fischer		{
453852d2129SAndre Fischer			if ($languages->[1] =~ /(jp|ko|zh)/)
454852d2129SAndre Fischer			{
455852d2129SAndre Fischer				return "multiasia";
456852d2129SAndre Fischer			}
457852d2129SAndre Fischer			else
458852d2129SAndre Fischer			{
459852d2129SAndre Fischer				return "multiwestern";
460852d2129SAndre Fischer			}
461852d2129SAndre Fischer		}
462852d2129SAndre Fischer	}
463852d2129SAndre Fischer}
464852d2129SAndre Fischer
46560b96b8dSAndre Fischer
46660b96b8dSAndre Fischer
46760b96b8dSAndre Fischer
46860b96b8dSAndre Fischer=head2 get_normalized_language ($language)
46960b96b8dSAndre Fischer
47060b96b8dSAndre Fischer    Transform "..._<language>" into "<language>".
47160b96b8dSAndre Fischer    The ... part, if it exists, is typically en-US.
47260b96b8dSAndre Fischer
47360b96b8dSAndre Fischer    If $language does not contain a '_' then $language is returned unmodified.
47460b96b8dSAndre Fischer
47560b96b8dSAndre Fischer=cut
47660b96b8dSAndre Fischersub get_normalized_language ($)
47760b96b8dSAndre Fischer{
47860b96b8dSAndre Fischer    my ($language) = @_;
479f5a0c083SAndre Fischer
480f5a0c083SAndre Fischer    if (ref($language) eq "ARRAY")
481f5a0c083SAndre Fischer    {
482*677600b0SAndre Fischer        if (scalar @$language > 1)
483f5a0c083SAndre Fischer        {
484*677600b0SAndre Fischer            if ($language->[0] eq "en-US")
485*677600b0SAndre Fischer            {
486*677600b0SAndre Fischer                return $language->[1];
487*677600b0SAndre Fischer            }
488*677600b0SAndre Fischer            else
489*677600b0SAndre Fischer            {
490*677600b0SAndre Fischer                return $language->[0];
491*677600b0SAndre Fischer            }
492f5a0c083SAndre Fischer        }
493f5a0c083SAndre Fischer        else
494f5a0c083SAndre Fischer        {
495*677600b0SAndre Fischer            return join("_", @$language);
496f5a0c083SAndre Fischer        }
497f5a0c083SAndre Fischer    }
498f5a0c083SAndre Fischer    elsif ($language =~ /^.*?_(.*)$/)
49960b96b8dSAndre Fischer    {
50060b96b8dSAndre Fischer        return $1;
50160b96b8dSAndre Fischer    }
50260b96b8dSAndre Fischer    else
50360b96b8dSAndre Fischer    {
50460b96b8dSAndre Fischer        return $language;
50560b96b8dSAndre Fischer    }
50660b96b8dSAndre Fischer}
50760b96b8dSAndre Fischer
508cdf0e10cSrcweir1;
509