Advertisement
dantpro

PowerShell Transliteration

Oct 9th, 2014
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # http://goo.gl/Zq9sOL
  2. # http://goo.gl/bv6JGT
  3.  
  4. [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
  5.  
  6. function TranslitRU2LAT{
  7.     param([string]$inString)
  8.     $Translit = @{
  9.     [char]'а' = "a";[char]'А' = "A";
  10.     [char]'б' = "b";[char]'Б' = "B";
  11.     [char]'в' = "v";[char]'В' = "V";
  12.     [char]'г' = "g";[char]'Г' = "G";
  13.     [char]'д' = "d";[char]'Д' = "D";
  14.     [char]'е' = "e";[char]'Е' = "E";
  15.     [char]'ё' = "ye";[char]'Ё' = "Ye";
  16.     [char]'ж' = "zh";[char]'Ж' = "Zh";
  17.     [char]'з' = "z";[char]'З' = "Z";
  18.     [char]'и' = "i";[char]'И' = "I";
  19.     [char]'й' = "y";[char]'Й' = "Y";
  20.     [char]'к' = "k";[char]'К' = "K";
  21.     [char]'л' = "l";[char]'Л' = "L";
  22.     [char]'м' = "m";[char]'М' = "M";
  23.     [char]'н' = "n";[char]'Н' = "N";
  24.     [char]'о' = "o";[char]'О' = "O";
  25.     [char]'п' = "p";[char]'П' = "P";
  26.     [char]'р' = "r";[char]'Р' = "R";
  27.     [char]'с' = "s";[char]'С' = "S";
  28.     [char]'т' = "t";[char]'Т' = "T";
  29.     [char]'у' = "u";[char]'У' = "U";
  30.     [char]'ф' = "f";[char]'Ф' = "F";
  31.     [char]'х' = "kh";[char]'Х' = "Kh";
  32.     [char]'ц' = "ts";[char]'Ц' = "Ts";
  33.     [char]'ч' = "ch";[char]'Ч' = "Ch";
  34.     [char]'ш' = "sh";[char]'Ш' = "Sh";
  35.     [char]'щ' = "sch";[char]'Щ' = "Sch";
  36.     [char]'ъ' = "";[char]'Ъ' = "";
  37.     [char]'ы' = "y";[char]'Ы' = "Y";
  38.     [char]'ь' = "";[char]'Ь' = "";
  39.     [char]'э' = "e";[char]'Э' = "E";
  40.     [char]'ю' = "yu";[char]'Ю' = "Yu";
  41.     [char]'я' = "ya";[char]'Я' = "Ya"
  42.     }
  43.     $outChars = ""
  44.     $Result.Text = ""
  45.     $inString = $InputName.Text +"."+ $InputSName.Text
  46.     foreach ($c in $inChars = $inString.ToCharArray())
  47.         {
  48.         if ($Translit[$c] -cne $Null )
  49.             {$outChars += $Translit[$c]}
  50.         else
  51.             {$outChars += $c}
  52.         }
  53.     $Result.Text = $outChars
  54.  }
  55. #
  56. #
  57. function SplitFName{
  58.     $inStr = $InputFName.Text -split " "
  59.     $InputSName.Text = $inStr[0]
  60.     $InputName.Text = $inStr[1]
  61.     $InputInitName.Text = $inStr[2]
  62.     TranslitRU2LAT
  63. }
  64. #
  65. function SetToClipboard{
  66.     param($cltext)
  67.     if($cltext){
  68.     [Windows.Forms.Clipboard]::SetText($cltext);
  69.     $Form.close()
  70.      }
  71. }
  72. #
  73. # Форма GUI
  74. #    
  75. $labFName = New-Object windows.Forms.Label
  76. $labFName.text = "Фамилия Имя Отчество полностью:"
  77. $labFName.left = "8"
  78. $labFName.top = "10"
  79. $labFName.Width = "300"
  80.  
  81. $labSName = New-Object windows.Forms.Label
  82. $labSName.text = "Фамилия:"
  83. $labSName.left = "8"
  84. $labSName.top = "65"
  85. $labSName.Width = "80"
  86.  
  87. $labName = New-Object windows.Forms.Label
  88. $labName.text = "Имя:"
  89. $labName.left = "113"
  90. $labName.top = "65"
  91. $labName.Width = "80"
  92.  
  93. $labInitName = New-Object windows.Forms.Label
  94. $labInitName.text = "Отчество:"
  95. $labInitName.left = "218"
  96. $labInitName.top = "65"
  97. $labInitName.Width = "80"
  98.  
  99. $InputFName = New-Object windows.Forms.TextBox
  100. $InputFName.Left ="10"
  101. $InputFName.Top = "34"
  102. $InputFName.Width = "310"
  103. $InputFName.add_TextChanged($Function:SplitFName)
  104.  
  105. $InputSName = New-Object windows.Forms.TextBox
  106. $InputSName.Left ="10"
  107. $InputSName.Top = "88"    
  108.        
  109. $InputName = New-Object windows.Forms.TextBox
  110. $InputName.Left ="115"
  111. $InputName.Top = "88"    
  112.  
  113. $InputInitName = New-Object windows.Forms.TextBox
  114. $InputInitName.Left ="220"
  115. $InputInitName.Top = "88"
  116.  
  117. $button1 = New-Object Windows.Forms.Button
  118. $button1.Text="Транслитерация : Загранпаспорт (1997—2010)"
  119. $button1.Left ="10"
  120. $button1.Top = "120"
  121. $button1.Width = "310"
  122. $button1.add_click($Function:TranslitRU2LAT)
  123.  
  124. $Result = New-Object windows.Forms.TextBox
  125. $Result.Left= "10"
  126. $Result.Top="154"
  127. $Result.Width = "200"
  128. $Result.Height = "200"
  129. $Result.ReadOnly = "true"
  130. $Result.Text = ""
  131.  
  132. $button2 = New-Object Windows.Forms.Button  
  133. $button2.Text = "В буфер обмена"
  134. $button2.Left ="212"
  135. $button2.Top = "153"
  136. $button2.Width = "108"
  137. $button2.Height = "22"
  138. $button2.add_click({SetToClipboard $Result.Text})
  139.  
  140. $Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($PSHOME + "\powershell.exe")
  141.  
  142. $Form = New-Object Windows.Forms.Form
  143. $Form.Height  = 220
  144. $Form.Width = 350
  145. $Form.Text = "Транслит ФИО для Email"
  146. $Form.Icon = $Icon
  147. $Form.AutoSize = $True
  148. $Form.AutoSizeMode = "GrowOnly"
  149. #$Form.StartPosition = "CenterScreen"
  150. $Form.controls.add($labFName)
  151. $Form.controls.add($labName)
  152. $Form.controls.add($labInitName)
  153. $Form.controls.add($labSName)
  154. $Form.controls.add($inputFName)
  155. $Form.controls.add($inputSName)
  156. $Form.controls.add($inputName)
  157. $Form.controls.add($inputInitName)
  158. $Form.controls.add($button1)
  159. $Form.controls.add($button2)
  160. $Form.controls.add($Result)
  161. $Form.Add_Shown({$Form.Activate()})
  162. $Form.ShowDialog()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement