【Management】日本語版のグループポリシー設定リストを"作ってみる"(番外)~ すべて機械翻訳で


日本語版グループポリシー設定リストを作ろう!シリーズの番外編です。ここまでの投稿は以下の通りです。

できるだけ品質の良い日本語版を作成するため、Translation Glossary と機械翻訳を併用してきましたが、Translation Glossary はTechNet/MSDNサブスクリプション保持者に限られています。

そこで、全てを機械翻訳で作成する PowerShell スクリプトも作成してみました。たいしたスクリプトじゃありませんが。

ご参考ということで。

#BING翻訳で機械翻訳
function Get-Translation
{
  param([parameter(ValueFromPipeline=$true)]
   [String] $text = "At least Windows Vista")

  $w = new-object system.net.webclient
  $enc = [Text.Encoding]::GetEncoding("utf-8")
  $appid = "CEE3EAA3CB489C1794960D1D310BB094B4A50B19"
  $from = "en"
  $to = "ja"
  $contentType = "text/plain"
  $category = "general"
  $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))
  if ($h -ne $null)
  {
      Write-Host ([xml]$h).string.get_Innertext()
      return ([xml]$h).string.get_Innertext()
      } else {
      Write-Host $text
      return $text
   }
}

# 一度翻訳したものは再利用できるようハッシュテーブルに格納
function KeepInTable
{
    param([String] $enKey, [String] $jaValue)

    if ($jpnfile_hash.ContainsKey($enKey) -eq $false )
    {
        $jpnfile_hash.add($enKey,$jaValue)
     }
}

cls
$jpnfile_hash = @{}

# Group Policy Settings Reference for Windows and Windows Server の各タブをCSVで保存したファイルを入力とする
$englishFile_Security = ‘.\WindowsServer2008R2andWindows7GroupPolicySettings_security.csv’
$englishFile_adm = ‘.\WindowsServer2008R2andWindows7GroupPolicySettings_AdministrativeTemplate.csv’

#
#Securityタブの変換
#

# セキュリティポリシー一覧ファイルをCSVとして読み込む。各列は a~g とする。
$enfile = Import-Csv $englishfile_Security -Header "a","b","c","d","e","f","g"

# 読み込んだファイルから1行ずつ取り出し、日本語化したい列をBING翻訳のTranslateメソッドで翻訳する
ForEach($item in $enfile)
{
    #改行コードをピリオドに置換
    $enItem_b = $item.b.replace("`n",".")
    $enItem_e = $item.e.replace("`n",".")
    $enItem_g = $item.g.replace("`n",".")
   
  if ($jpnfile_hash.ContainsKey($enItem_b) )
  {
        $item.b = $jpnfile_hash.Get_Item($enItem_b)
       } else {
        $item.b = Get-Translation ($enItem_b).toString()
        KeepInTable $enItem_b $Item.b
  }
   
  if ($jpnfile_hash.ContainsKey($enItem_e) )
  {
        $item.e = $jpnfile_hash.Get_Item($enItem_e)
         } else {
        $item.e = Get-Translation ($enItem_e).toString()
        KeepInTable $enItem_e $Item.e
  }
 
  if ($enItem_g -ne "")
  {
      if ($jpnfile_hash.ContainsKey($enItem_g))
        {
            $item.g = $jpnfile_hash.Get_Item($enItem_g)
            } else {
            $item.g = Get-Translation ($enItem_g).toString()
            KeepInTable $enItem_e $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)
{
  $enItem_b = $item.b.replace("`n",".")
  $enItem_g = $item.g.replace("`n",".")

  if ($jpnfile_hash.ContainsKey($enItem_b))
   {
        $item.b = $jpnfile_hash.Get_Item($enItem_b)
        } else {
        $item.b = Get-Translation ($enItem_b).ToString()
        KeepInTable $enItem_b $Item.b
    }

  if ($jpnfile_hash.ContainsKey($enItem_g))
   {
        $item.g = $jpnfile_hash.Get_Item($enItem_g)
        } else {
        $item.g = Get-Translation ($enItem_g).ToString()
        KeepInTable $enItem_g $Item.g
    }

}

$enfileadm | Export-Csv gplistjp_adm.csv -encoding Default

機械翻訳で実行した場合の感想ですが、元の英語に影響されることが多いようですね。英語の Typo が存在すると、それで一気に品質が落ちます。当然といえば当然ですが…。

Comments (0)

Skip to main content