Get-Translit.psm1
#test push to master one file commit <# .Synopsis Transliterate russian words to latin .example Get-Translit Иванов Иван Иванович ivanov ivan ivanovich .Example Get-Translit съешь же ещё этих мягких французских булок, да выпей чаю sesh zhe eschyo etih myagkih francuzskih bulok da vypey chayu #> function Get-Translit { param( [Parameter(ValueFromRemainingArguments=$true,Mandatory=$true)] [string]$inString ) $Translit = @{ [char]'а' = "a" [char]'А' = "a" [char]'б' = "b" [char]'Б' = "b" [char]'в' = "v" [char]'В' = "v" [char]'г' = "g" [char]'Г' = "g" [char]'д' = "d" [char]'Д' = "d" [char]'е' = "e" [char]'Е' = "e" [char]'ё' = "yo" [char]'Ё' = "yo" [char]'ж' = "zh" [char]'Ж' = "zh" [char]'з' = "z" [char]'З' = "z" [char]'и' = "i" [char]'И' = "i" [char]'й' = "y" [char]'Й' = "y" [char]'к' = "k" [char]'К' = "k" [char]'л' = "l" [char]'Л' = "l" [char]'м' = "m" [char]'М' = "m" [char]'н' = "n" [char]'Н' = "n" [char]'о' = "o" [char]'О' = "o" [char]'п' = "p" [char]'П' = "p" [char]'р' = "r" [char]'Р' = "r" [char]'с' = "s" [char]'С' = "s" [char]'т' = "t" [char]'Т' = "t" [char]'у' = "u" [char]'У' = "u" [char]'ф' = "f" [char]'Ф' = "f" [char]'х' = "h" [char]'Х' = "h" [char]'ц' = "c" [char]'Ц' = "c" [char]'ч' = "ch" [char]'Ч' = "ch" [char]'ш' = "sh" [char]'Ш' = "sh" [char]'щ' = "sch" [char]'Щ' = "sch" [char]'ъ' = "" [char]'Ъ' = "" [char]'ы' = "y" [char]'Ы' = "y" [char]'ь' = "" [char]'Ь' = "" [char]'э' = "e" [char]'Э' = "e" [char]'ю' = "yu" [char]'Ю' = "yu" [char]'я' = "ya" [char]'Я' = "ya" } $outCHR = "" foreach ($CHR in $inCHR = $inString.ToCharArray()) { if ($Null -cne $Translit[$CHR] ){ $outCHR += $Translit[$CHR] } else{ $outCHR += $CHR } } Write-Output $outCHR } #Export-ModuleMember -Function Get-Translit <#function ConvertTo-Encoding ([string]$From, [string]$To){ <# function ConvertTo-Encoding ([string]$From, [string]$To){ Begin{ $encFrom = [System.Text.Encoding]::GetEncoding($from) $encTo = [System.Text.Encoding]::GetEncoding($to) } Process{ $bytes = $encTo.GetBytes($_) $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes) $encTo.GetString($bytes) } } $args[0].ToString() | ConvertTo-Encoding($OutputEncoding.HeaderName,"windows-1251") | Get-Translit($_) #> |