Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function Invoke-Translit {
- Param (
- [Parameter(Mandatory=$true,Position=0)]
- [string]$RussianFullName
- )
- $Local:NewFullName = $RussianFullName;
- $Local:TranslitTable = @{
- 'а' = @{'Translit' = 'a';};
- 'б' = @{'Translit' = 'b';};
- 'в' = @{'Translit' = 'v';};
- 'г' = @{'Translit' = 'g';};
- 'д' = @{'Translit' = 'd';};
- 'е' = @{'Translit' = 'e';};
- 'ё' = @{'Translit' = 'e';};
- 'ж' = @{'Translit' = 'zh';};
- 'з' = @{'Translit' = 'z';};
- 'и' = @{'Translit' = 'i';};
- 'й' = @{'Translit' = 'y';};
- 'к' = @{'Translit' = 'k';};
- 'л' = @{'Translit' = 'l';};
- 'м' = @{'Translit' = 'm';};
- 'н' = @{'Translit' = 'n';};
- 'о' = @{'Translit' = 'o';};
- 'п' = @{'Translit' = 'p';};
- 'р' = @{'Translit' = 'r';};
- 'с' = @{'Translit' = 's';};
- 'т' = @{'Translit' = 't';};
- 'у' = @{'Translit' = 'u';};
- 'ф' = @{'Translit' = 'f';};
- 'х' = @{'Translit' = 'kh';};
- 'ц' = @{'Translit' = 'ts';};
- 'ч' = @{'Translit' = 'ch';};
- 'ш' = @{'Translit' = 'sh';};
- 'щ' = @{'Translit' = 'sch';};
- 'ъ' = @{'Translit' = '';};
- 'ы' = @{'Translit' = 'y';};
- 'ь' = @{'Translit' = '';};
- 'э' = @{'Translit' = 'e';};
- 'ю' = @{'Translit' = 'yu';};
- 'я' = @{'Translit' = 'ya';};
- }
- $local:newCharArray = @();
- $local:charArray = $RussianFullName.ToCharArray()
- foreach ($local:char in $local:charArray) {
- $local:isUpperCase = [System.Char]::IsUpper($local:char)
- $local:original_char_lowercase = [System.Char]::ToLower($local:char)
- $local:new_char_lowercase_as_string = $local:original_char_lowercase.toString()
- $local:original_char_lowercase_as_string = $local:original_char_lowercase.toString()
- if ($Local:TranslitTable.ContainsKey($local:original_char_lowercase_as_string)) {
- $local:new_char_lowercase_as_string = $Local:TranslitTable[$local:original_char_lowercase_as_string].Translit
- }
- $local:new_chars = $local:new_char_lowercase_as_string.toCharArray()
- if ($local:isUpperCase) {
- $local:new_chars[0] = $local:new_chars[0].toString().toUpper().toCharArray()[0]
- }
- $local:newCharArray += @($local:new_chars);
- }
- $local:ret_data = [String]::Join('',$local:newCharArray)
- $local:non_ascii = @( $local:ret_data.ToCharArray() | Where-Object {
- (
- (
- ( [System.Int32]$_ ) -gt 126
- ) -or (
- ( ( [System.Int32]$_ ) -lt 32 )
- ) ) } )
- if ( $local:non_ascii.Count -gt 0 ) {
- throw "Error! Data contains non-ASCII symbols! : [$($local:non_ascii -join ',')]"
- return $null
- }
- return $local:ret_data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement