Monday, December 3, 2018

add custom language via powershell



function Unregister-CustomLanguage {
param($CustomCultureCode)

    try{
       
        [System.Globalization.CultureAndRegionInfoBuilder]::Unregister($CustomCultureCode)   

    }catch{
   
    }
}

function Register-CustomLanguage {

param($CustomCultureCode, $BaseCultureCode, [hashtable]$Changes)


    $BaseCulture = [cultureinfo]::GetCultureInfo($BaseCultureCode)

    $BaseRegion = New-Object System.Globalization.RegionInfo $BaseCultureCode.substring(3)

    $registered = $true

    $clMessage = "Registering custom culture '$CustomCultureCode':"

    try {
        # Set up CultureAndRegionInfoBuilder

        Add-Type -AssemblyName sysglobl
       
        $CultureBuilder = New-Object System.Globalization.CultureAndRegionInfoBuilder @($CustomCultureCode,[System.Globalization.CultureAndRegionModifiers]::None)
       
        $CultureBuilder.LoadDataFromCultureInfo($BaseCulture)

        $CultureBuilder.LoadDataFromRegionInfo($BaseRegion)

        # Make appropriate changes
        foreach($Property in $Changes.Keys) {
            $CultureBuilder.$Property = $Changes[$Property]
        }

        $CultureBuilder.Register()

    } catch [System.InvalidOperationException]{
     
      $registered = $false

    }
   
    if(-not $registered){   

        Write-Host "$clMessage Culture exists."

    }else{
   
        Write-Host "$clMessage Culture registered."
    }

    return $registered

}

function Install-CustomLanguages {
param($CustomLanguages)

$resetIIS = $false

$CustomLanguages | % {
   
    $reg = Register-CustomLanguage @_
    if($reg -eq $true){

        $resetIIS = $true
    }

}
    if($resetIIS){
        Write-Output "performing iis reset"
        Invoke-Command -ScriptBlock {iisreset}
    }
}


$VNLangArgs = @(

    @{
        BaseCultureCode = "ja-JP"   
        CustomCultureCode = "en-JP"
        Changes = @{
       
            CultureEnglishName = "English (Japan)"

            CultureNativeName = "English (Japan)"
       
            RegionNativeName = "English (Japan)"
       
            KeyboardLayoutId = 1033
        }
    }
)

$VNLangArgs | % {Unregister-CustomLanguage $_.CustomCultureCode}

Install-CustomLanguages $VNLangArgs

No comments:

Post a Comment