Language.au3
Last modified: Sunday, 25 May 2008
;*******************************************************************************
;
; Function List
; _Lang_Ab()
; _SetLanguage()
;
;*******************************************************************************
#include-once
;===============================================================================
; Function Name: _SetLanguage()
; Description: Returns the long or abbreviated language name
; I use this primarily for auto-generating html file lang strings
;
; Syntax: _SetLanguage([$a_Lang, [$a_Form, [$a_Dialect [,$aD_Opt[,$as_Array]]]]])
; Parameter(s): $a_Lang (Optional) = the language code to be used (Default (-1) is @OSLang) --- See the AutoIt help file for codes
; $a_Form (Optional) - 1 = Full name of the langauge (Default), 2 = Abbreviated name
; $a_Dialect (Optional) - 1 = Include dialect in the string (Default), anything else = Do not include dialect
; $aD_Opt (Optional) - 1 = Return dialect in uppercase (default), anything else = Return dialect in lowercase
; $asArray (Optional - 1 = Return $a_Form as an array
; Requirements:
; Return Value(s): On Success - Returns a string containing the language and optionally the dialect (if $a_Form = 1 and $a_Dialect = 1)
; Author(s): George (GEOSoft) Gedye
; Notes: If either $a_Form or $a_Dialect are specified then the preceeding parameters must also be specified
; however blank strings can be used (the defaults will be chosen)
; The dialect will usually be returned using the ISO 3166 standard
; The abbreviated name follows the ISO 639 Standard
; If $a_form <> 1 and a long form is returned then it's because I have been unable to verify the language abbreviation
; If $as_Array = 1 then an array is returned. Any language
; Modifications:
; Example(s): _SetLanguage("1009") Returns English (CA)
; _SetLanguage(@OSLang,2,1,1,1) Returns an array containing abbreviations
;===============================================================================
Func _SetLanguage($a_Lang = -1, $a_Form = 1, $a_Dialect = 1, $aD_Opt = 1, $as_Array = 0)
If $a_Lang = -1 Then $a_Lang = @OSLang
$hDialect = ''
$hCde_Pge = ''
$hNative = ''
If $a_Form <> 1 Then $a_Dialect = 0
If StringLen ($a_Lang) = 3 Then $a_Lang = '0' & $a_Lang
$r_Lang = StringRight ($a_Lang, 2)
$l_Lang = StringLeft ($a_Lang, 2)
If $a_Form = 1 Then
$Form = StringSplit ('Afrikaans|Albanian|Arabic|Armenian|Azerbijani|Basque|Belarusian|Bulgarian|Catalan|Chinese|Croatian|Czech|Danish|' _
& 'Dutch|English|Estonian|Faeroese|Farsi|Finnish|French|Georgian|German|Greek|Hebrew|Hindi|Hungarian|Icelandic|Indonesian|Italian|' _
& 'Japanese|Kazakh|Konkani|Korean|Latvian|Lithuanian|Macedonian|Malay|Marathi|Norwegian|Polish|Portuguese|Romanian|Russian|' _
& 'Sanskrit|Serbian|Slovak|Slovenian|Spanish|Swahili|Swedish|Tamil|Tatar|Thai|Turkish|Ukrainian|Urdu|Uzbek|Vietnamese', '|')
ElseIf $a_Form = 2 Then
$Form = StringSplit ('AF|SQ|AR|HY|AZ|EU|BE|BG|CA|CH|HR|CZ|DA|NL|EN|ET|FO|Farsi|FI|FR|GE|DE|EL|HE|HI|HU|IS|IN|IT|JP|KK|KOK|KO|' _
& 'LV|LT|MK|MS|MR|NN|PL|PT|RO|RU|SA|SR|SK|SL|ES|SW|SE|TA|TT|TH|TR|UK|UR|UZ|VI', '|')
EndIf
If $as_Array = 1 Then Return $Form ;;<<========= Used for populating lists and comboboxes
Switch $r_Lang
Case '01', '2c', '04', '13', '09', '0c', '07', '10', '3e', '14', '16', '0a', '1d'
$a_Dialect = $a_Dialect
Case Else
$a_Dialect = 0
$hDialect = $hDialect
EndSwitch
Switch $r_Lang
Case '36'
$Lang = $Form[1]
Case '1c'
$Lang = $Form[2]
Case '01'
$Lang = $Form[3]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (SA)';;Saudi Arabia
Case '08'
$hDialect = ' (IQ)';;Iraq
Case '0c'
$hDialect = ' (EG)';;Egypt
Case '10'
$hDialect = ' (LY)';;Libya
Case '14'
$hDialect = ' (DZ)' ;;Algeria
Case '18'
$hDialect = ' (MA)';;Morocco
Case '1c'
$hDialect = ' (TN)';;Tunisia
Case '20'
$hDialect = ' (OM)';;Oman
Case '24'
$hDialect = ' (YE)';;Yemen
Case '28'
$hDialect = ' (SY)';;Syria
Case '2c'
$hDialect = ' (JO)';;Jordan
Case '30'
$hDialect = ' (LB)';;Lebanon
Case '34'
$hDialect = ' (KW)';;Kuwait
Case '38'
$hDialect = ' (AE)';;United Arab Emirates
Case '3c'
$hDialect = ' (BH)';;Bahrain
Case '40'
$hDialect = ' (QA)';;Qatar
EndSwitch
EndIf
Case '2b'
$Lang = $Form[4]
Case '2c'
$Lang = $Form[5]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Latin)';;Latin
Case '08'
$hDialect = ' (Cyrillic)';;Crylic
EndSwitch
EndIf
Case '2d'
$Lang = $Form[6]
Case '23'
$Lang = $Form[7]
Case '02'
$Lang = $Form[8]
Case '03'
$Lang = $Form[9]
Case '04'
$Lang = $Form[10]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (TH)';;Thailand
Case '08'
$hDialect = ' (PRC)'
Case '0c'
$hDialect = ' (HK)'
Case '10'
$hDialect = ' (SG)';;Singapore
Case '14'
$hDialect = ' (MO)';;Macao
Case '4c'
$hDialect = ' (MY)';;Malaysia
EndSwitch
EndIf
Case '1a'
$Lang = $Form[11]
Case '05'
$Lang = $Form[12]
Case '06'
$Lang = $Form[13]
Case '13'
$Lang = $Form[14]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Std)'
Case '08'
$hDialect = ' (Belg)'
EndSwitch
EndIf
Case '09' ;;<<==== English
$Lang = $Form[15]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (US)'
Case '08'
$hDialect = ' (UK)'
Case '0c'
$hDialect = ' (AU)'
Case '10'
$hDialect = ' (Can)'
Case '14'
$hDialect = ' (NZ)'
Case '1c'
$hDialect = ' (SA)'
Case '18'
$hDialect = ' (IE)';;Ireland
Case '20'
$hDialect = ' (JM)';;Jamaica
Case '24'
$hDialect = ' (Carib)';;
Case '28'
$hDialect = ' (BZ)';;Belize
Case '2c'
$hDialect = ' (TT)';;Trinidad & Tobago
Case '30'
$hDialect = ' (ZW)';;Zimbabwe
Case '34'
$hDialect = ' (PH)';;Philipines
EndSwitch
EndIf
Case '25'
$Lang = $Form[16]
Case '38'
$Lang = $Form[17]
Case '29'
$Lang = $Form[18]
Case '0b'
$Lang = $Form[19]
Case '0c' ;;<<==== French
$Lang = $Form[20]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Std)'
Case '08'
$hDialect = ' (Belg)'
Case '0c'
$hDialect = ' (Can)'
Case '10'
$hDialect = ' (Swiss)'
Case '14'
$hDialect = ' (Lux)'
Case '18'
$hDialect = ' (Monaco)'
EndSwitch
EndIf
Case '37'
$Lang = $Form[21]
Case '07' ;;<<==== German
$Lang = $Form[22]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Std)'
Case '08'
$hDialect = ' (Swiss)'
Case '0c'
$hDialect = ' (Aust)'
Case '10'
$hDialect = ' (Lux)'
Case '14'
$hDialect = ' (Liech)'
EndSwitch
EndIf
Case '08'
$Lang = $Form[23]
Case '0d'
$Lang = $Form[24]
Case '39'
$Lang = $Form[25]
Case '0e'
$Lang = $Form[26]
Case '0f'
$Lang = $Form[27]
Case '21'
$Lang = $Form[28]
Case '10'
$Lang = $Form[29]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Std)'
Case '08'
$hDialect = ' (Sw)'
EndSwitch
EndIf
Case '11'
$Lang = $Form[30]
Case '3f'
$Lang = $Form[31]
Case '57'
$Lang = $Form[32]
Case '12'
$Lang = $Form[33]
Case '26'
$Lang = $Form[34]
Case '27'
$Lang = $Form[35]
Case '2f'
$Lang = $Form[36]
Case '3e'
$Lang = $Form[37]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Malaysia)'
Case '08'
$hDialect = ' (BD)'
EndSwitch
EndIf
Case '4e'
$Lang = $Form[38]
Case '14'
$Lang = $Form[39]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Bokmal)'
Case '08'
$hDialect = ' (Nynorsk)'
EndSwitch
EndIf
Case '15'
$Lang = $Form[40]
Case '16'
$Lang = $Form[41]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Br)'
Case '08'
$hDialect = ' (Std)'
EndSwitch
EndIf
Case '18'
$Lang = $Form[42]
Case '19'
$Lang = $Form[43]
Case '4f'
$Lang = $Form[44]
Case '1a' ;;<<==== Spanish
$Lang = $Form[45]
If $a_Dialect = 1 Then
Switch $l_Lang
Case '04'
$hDialect = ' (Trad)'
Case '08'
$hDialect = ' (Mex)'
Case '0c'
$hDialect = ' (Mod)'
Case '10'
$hDialect = ' (Guat)'
Case '14'
$hDialect = ' (CR)'
Case '18'
$hDialect = ' (Pan)'
Case '1c'
$hDialect = ' (DR)'
Case '20'
$hDialect = ' (Venez)'
Case '24'
$hDialect = ' (Col)'
Case '28'
$hDialect = ' (Peru)'
Case '2c'
$hDialect = ' (Arg)'
Case '30'
$hDialect = ' (Ecuad)'
Case '34'
$hDialect = ' (Chile)'
Case '38'
$hDialect = ' (Urug)'
Case '3c'
$hDialect = ' (Parag)'
Case '40'
$hDialect = ' (Bol)'
Case '44'
$hDialect = ' (El_Sal)'
Case '48'
$hDialect = ' (Hond)'
Case '4c'
$hDialect = ' (Nic)'
Case '50'
$hDialect = ' (PR)'
EndSwitch
EndIf
Case '1b'
$Lang = $Form[46]
Case '24'
$Lang = $Form[47]
Case '0a'
$Lang = $Form[48]
Case '41'
$Lang = $Form[49]
Case '1d'
$Lang = $Form[50]
If $a_Dialect = 1 Then
If $l_Lang = '08' Then $hDialect = ' (Fin)'
EndIf
Case '49'
$Lang = $Form[51]
Case '44'
$Lang = $Form[52]
Case '1e'
$Lang = $Form[53]
Case '1f'
$Lang = $Form[54]
Case '22'
$Lang = $Form[55]
Case '20'
$Lang = $Form[56]
Case '43'
$Lang = $Form[57]
Case '2a'
$Lang = $Form[58]
Case Else
$Lang = $Form[15]
EndSwitch
If $aD_Opt <> 1 Then $hDialect = StringLower($hDialect)
Return $Lang & $hDialect
EndFunc ;<==> Language($a_Lang, $a_Form, $a_Dialect)
;===============================================================================
; Function Name: _Lang_Ab()
; Description: Returns the 2 letter abbreviation of a language
; Syntax: _SetLanguage([$sLang])
; Parameter(s): $sLang (Optional) = the language code to be used (Default is English)
; Requirements:
; Return Value(s): On Success - Returns a string containing the language abbreviation
; Author(s): George (GEOSoft) Gedye
; Notes: Unfinished
; Modifications:
; Example(s): _Lang_Ab("Dutch") Returns nl
;===============================================================================
Func _Lang_Ab($sLang = "English")
;Return "en|nl"
Local $rLang
Switch $sLang
Case "English"
$rLang = "en"
Case "Dutch"
$rLang = "nl"
Case "French"
$rLang = "fr"
Case "German"
$rLang = "de"
Case "Greek"
$rLang = "el"
Case "Italian"
$rLang = "it"
Case "Portuguese"
$rLang = "pt"
Case "Spanish"
$rLang = "es"
Case "Arabic"
$rLang = "ar"
Case "Japanese"
$rLang = "ja"
Case "Russian"
$rLang = "ru"
Case "Korean"
$rLang = "ko"
EndSwitch
Return $rLang
EndFunc