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; 32*852d2129SAndre Fischeruse Digest::MD5; 33*852d2129SAndre Fischer 34*852d2129SAndre Fischeruse strict; 35*852d2129SAndre 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 77*852d2129SAndre Fischer=head2 get_language_directory_name ($language_string) 78*852d2129SAndre Fischer 79*852d2129SAndre Fischer Create a directory name that contains the given set of languages. 80*852d2129SAndre Fischer When $language_string exceeds a certain length then it is shortened. 81*852d2129SAndre Fischer 82*852d2129SAndre Fischer=cut 83*852d2129SAndre Fischersub get_language_directory_name ($) 84*852d2129SAndre Fischer{ 85*852d2129SAndre Fischer my ($language_string) = @_; 86*852d2129SAndre Fischer 87*852d2129SAndre Fischer if (length($language_string) > $installer::globals::max_lang_length) 88*852d2129SAndre Fischer { 89*852d2129SAndre Fischer my $number_of_languages = ($language_string =~ tr/_//); 90*852d2129SAndre Fischer my $digest = new Digest::MD5(); 91*852d2129SAndre Fischer $digest->add($language_string); 92*852d2129SAndre Fischer my $short_digest = substr($digest->hexdigest(), 0, 8); 93*852d2129SAndre Fischer return "lang_" . $number_of_languages . "_id_" . $short_digest; 94*852d2129SAndre Fischer } 95*852d2129SAndre Fischer else 96*852d2129SAndre Fischer { 97*852d2129SAndre Fischer return $language_string; 98*852d2129SAndre Fischer } 99*852d2129SAndre Fischer} 100*852d2129SAndre Fischer 101*852d2129SAndre Fischer 102*852d2129SAndre Fischer 103*852d2129SAndre 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############################################# 156*852d2129SAndre Fischer 157*852d2129SAndre Fischer=head2 get_all_languages_for_one_product($languagestring, $allvariables) 158*852d2129SAndre Fischer 159*852d2129SAndre Fischer $languagestring can be one or more language names, separated by ','. 160*852d2129SAndre Fischer 161*852d2129SAndre Fischer $installer::globals::ismultilingual is set to 1 when $languagestring contains more than one languages. 162*852d2129SAndre Fischer 163*852d2129SAndre Fischer=cut 164*852d2129SAndre Fischersub get_all_languages_for_one_product ($$) 165cdf0e10cSrcweir{ 166cdf0e10cSrcweir my ( $languagestring, $allvariables ) = @_; 167cdf0e10cSrcweir 168cdf0e10cSrcweir 169*852d2129SAndre Fischer $installer::globals::ismultilingual = ($languagestring =~ /\,/ ) ? 1 : 0; 170cdf0e10cSrcweir 171*852d2129SAndre Fischer my $languages = $languagestring; 172*852d2129SAndre Fischer $languages =~ s/\s+//g; 173*852d2129SAndre 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 411*852d2129SAndre Fischer my $javalanguage = $language; 412cdf0e10cSrcweir $javalanguage =~ s/\-/\_/; 413cdf0e10cSrcweir 414cdf0e10cSrcweir return $javalanguage; 415cdf0e10cSrcweir} 416cdf0e10cSrcweir 417*852d2129SAndre Fischer 418*852d2129SAndre Fischer 419*852d2129SAndre Fischer=head2 get_key_language ($languages) 420*852d2129SAndre Fischer 421*852d2129SAndre Fischer Determine the key language from the array of @$languages. 422*852d2129SAndre Fischer 423*852d2129SAndre Fischer If there is only one language then that is the key language. 424*852d2129SAndre Fischer 425*852d2129SAndre Fischer If there are two languages and one is en-US and was automatically 426*852d2129SAndre Fischer added, then the other language is the key language. 427*852d2129SAndre Fischer 428*852d2129SAndre Fischer When there is more than one language and the case above does not 429*852d2129SAndre Fischer apply then return either 'multiasia' or 'multiwestern' as key 430*852d2129SAndre Fischer language, depending on whether one of the asian language parts 431*852d2129SAndre Fischer 'jp', 'ko', 'zh' appear. 432*852d2129SAndre Fischer 433*852d2129SAndre Fischer=cut 434*852d2129SAndre Fischersub get_key_language ($) 435*852d2129SAndre Fischer{ 436*852d2129SAndre Fischer my ($languages) = @_; 437*852d2129SAndre Fischer 438*852d2129SAndre Fischer my $language_count = scalar @$languages; 439*852d2129SAndre Fischer 440*852d2129SAndre Fischer if ($language_count == 1) 441*852d2129SAndre Fischer { 442*852d2129SAndre Fischer return $languages->[0]; 443*852d2129SAndre Fischer } 444*852d2129SAndre Fischer else 445*852d2129SAndre Fischer { 446*852d2129SAndre Fischer if ($installer::globals::added_english && $language_count==1) 447*852d2129SAndre Fischer { 448*852d2129SAndre Fischer # Only multilingual because of added English. 449*852d2129SAndre Fischer return $languages->[1]; 450*852d2129SAndre Fischer } 451*852d2129SAndre Fischer else 452*852d2129SAndre Fischer { 453*852d2129SAndre Fischer if ($languages->[1] =~ /(jp|ko|zh)/) 454*852d2129SAndre Fischer { 455*852d2129SAndre Fischer return "multiasia"; 456*852d2129SAndre Fischer } 457*852d2129SAndre Fischer else 458*852d2129SAndre Fischer { 459*852d2129SAndre Fischer return "multiwestern"; 460*852d2129SAndre Fischer } 461*852d2129SAndre Fischer } 462*852d2129SAndre Fischer } 463*852d2129SAndre Fischer} 464*852d2129SAndre Fischer 465cdf0e10cSrcweir1; 466