Private/Localization.ps1
|
# Cool localization helper function Initialize-Localization { $locale = if ($env:LANG) { $env:LANG } else { (Get-Culture).Name } $localizedRoot = Join-Path $PSScriptRoot "../Localized" $script:LocalizedMessages = try { Import-LocalizedData -FileName "Messages" -UICulture $locale -BaseDirectory $localizedRoot -ErrorAction Stop } catch { $base = $locale.Split('-')[0] $fallbackLocale = switch ($base) { 'zh' { 'zh-CN' } 'ja' { 'ja-JP' } 'ko' { 'ko-KR' } default { 'en-US' } } Import-LocalizedData -FileName "Messages" -UICulture $fallbackLocale -BaseDirectory $localizedRoot -ErrorAction SilentlyContinue } } Initialize-Localization function script:Get-LocalizedString { param( [Parameter(Mandatory = $true)][string]$Key, [Parameter(ValueFromRemainingArguments = $true)][object[]]$Args ) $msg = $script:LocalizedMessages[$Key] if ($null -eq $msg) { $msg = $Key } if ($Args) { return ($msg -f $Args) } return $msg } |