| # Get-Transaction という機械翻訳用のFunctionを定義しています。 # Function の中では、"http://api.microsofttranslator.com/V2/Http.svc/Translate" というメソッドを使用して、 # この Function に引数として渡されたテキスト文字列を翻訳しています function Get-Translation { param([parameter(ValueFromPipeline=$true)] [String] $text = "Group Policy") $w = new-object system.net.webclient $enc = [Text.Encoding]::GetEncoding("utf-8") # AppID を指定 $appid = "CExxxxxxxxxxxxxxxxxxxxxxxxxxxx0B19" # 翻訳もとは英語 $from = "en" # 翻訳先は日本語 $to = "ja" $contentType = "text/plain" $category = "general" # BING翻訳 Translate メソッドの uri $api = "http://api.microsofttranslator.com/V2/Http.svc/Translate" $url = "{0}?appID={1}&from={2}&to={3}&text={4}&contentType={5}&category={6}" -f $api, $appid, $from, $to, $text, $contentType, $category $h = $enc.GetString($w.DownloadData($url)) Write-Host "----" if ($h -ne $null) { ([xml]$h).string.get_Innertext() } else { # もし翻訳に失敗したら元の英文を返す $text } } cls $japaneseFile = '.\jpn-jpn-csv-Windows 7 (1).csv' $englishFile_Security = '.\WindowsServer2008R2andWindows7GroupPolicySettings_security.csv' $englishFile_adm = '.\WindowsServer2008R2andWindows7GroupPolicySettings_AdministrativeTemplate.csv' #日本語ファイルをCSVファイルとして読み込む。各列は a~k とする。 $jpnfile = Import-Csv $japaneseFile -Header "a","b","c","d","e","f","g","h","i","j","k" #ハッシュテーブルを作成し、a列をキーとして、c列を格納 $jpnfile_hash = @{} $jpnfile |foreach-object { if ($jpnfile_hash.ContainsKey($_.a) -eq $false ){ $jpnfile_hash.add($_.a,$_.c) } } # セキュリティポリシー一覧ファイルをCSVとして読み込む。各列は a~g とす��。 $enfile = Import-Csv $englishfile_Security -Header "a","b","c","d","e","f","g" # 読み込んだファイルから1行ずつ取り出し、日本語化したい列をハッシュテーブルのキーをベースに置換する # $japaneseFile とのマッチングに失敗した場合に Get-Translation を呼び出しています。以降も同様です。 # なお、あとから完成したCSVを見たときにカラムが機械翻訳を通ったことがわかるよう、[T] を頭に付けています。 ForEach($item in $enfile) { if ($jpnfile_hash.ContainsKey($item.b.replace("`n","\r\n")) ) { $item.b = $jpnfile_hash.Get_Item($item.b.replace("`n","\r\n")).Replace("\r\n"," ") } else { $item.b = Get-Translation ($item.b.replace("`n"," ")).toString() $item.b = "[T]" + $item.b } if ($jpnfile_hash.ContainsKey($item.e.replace("`n","\r\n")) ) { $item.e = $jpnfile_hash.Get_Item($item.e.replace("`n","\r\n")).Replace("\r\n"," ") } else { $item.e = Get-Translation ($item.e.replace("`n"," ")).ToString() $item.e = "[T]" + $item.e } if ($item.g -ne "") { if ($jpnfile_hash.ContainsKey($item.g.replace("`n","\r\n")) ) { $item.g = $jpnfile_hash.Get_Item($item.g.replace("`n","\r\n")).Replace("\r\n"," ") } else { $item.g = Get-Translation ($item.g.replace("`n"," ")).ToString() $item.g = "[T]" + $item.g } } } # 置換後のデータをCSVファイルに保存 $enfile | Export-Csv gplistjp_security.csv -encoding Default # # 管理ポリシーファイルも同様の処理 # $enfileadm = Import-Csv $englishfile_adm -Header "a","b","c","d","e","f","g","h","i","j" ForEach($item in $enfileadm) { if ($jpnfile_hash.ContainsKey($item.b.replace("`n","\r\n"))) { $item.b = $jpnfile_hash.Get_Item($item.b.replace("`n",".")) } else { $item.b = Get-Translation ($item.b.replace("`n",".")).ToString() $item.b = "[T]" + $item.b } if ($jpnfile_hash.ContainsKey($item.g.replace("`n","\r\n")) ) { $item.g = $jpnfile_hash.Get_Item($item.g.replace("`n",".")) } else { $item.g = Get-Translation ($item.g.replace("`n",".")).ToString() $item.g = "[T]" + $item.g } } $enfileadm | Export-Csv gplistjp_adm.csv -encoding Default
|