Skip to content

Instantly share code, notes, and snippets.

@PrateekKumarSingh
Last active April 13, 2018 11:25
Show Gist options
  • Save PrateekKumarSingh/8d9cd3c721bc01462f8a to your computer and use it in GitHub Desktop.
Save PrateekKumarSingh/8d9cd3c721bc01462f8a to your computer and use it in GitHub Desktop.
Function Start-Translation()
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=0,ValueFromPipeline=$True)]
[String] $Text,
[String] [validateSet('Arabic','Hindi','Japanese','Russian','Spanish','French',`
'English','Korean','Urdu','Italian','Portuguese','German','Chinese Simplified')
]$From,
[String] [validateSet('Arabic','Hindi','Japanese','Russian','Spanish','French',`
'English','Korean','Urdu','Italian','Portuguese','German','Chinese Simplified')
]$To
)
Begin{
# Language codes hastable
$LangCodes = @{'Arabic'='ar'
'Chinese Simplified'='zh-CHS'
'English'='en'
'French'='fr'
'German'='de'
'Hindi'='hi'
'Italian'='it'
'Japanese'='ja'
'Korean'='ko'
'Portuguese'='pt'
'Russian'='ru'
'Spanish'='es'
'Urdu'='ur'
}
# Secret Client ID and Key you get after Subscription
$ClientID = 'OCR-BingTranslation'
# Secret API Subscription Key
$client_Secret = ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
# If ClientId or Client_Secret has special characters, UrlEncode before sending request
$clientIDEncoded = [System.Web.HttpUtility]::UrlEncode($ClientID)
$client_SecretEncoded = [System.Web.HttpUtility]::UrlEncode($client_Secret)
}
Process{
ForEach($T in $Text)
{
Try{
# Azure Data Market URL which provide access tokens
$URI = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13"
# Body and Content Type of the request
$Body = "grant_type=client_credentials&client_id=$clientIDEncoded&client_secret=$client_SecretEncoded&scope=http://api.microsofttranslator.com"
$ContentType = "application/x-www-form-urlencoded"
# Invoke REST method to Azure URI
$Access_Token=Invoke-RestMethod -Uri $Uri -Body $Body -ContentType $ContentType -Method Post
# Header value with the access_token just recieved
$Header = "Bearer " + $Access_Token.access_token
# Invoke REST request to Microsoft Translator Service
[string] $EncodedText = [System.Web.HttpUtility]::UrlEncode($T)
[string] $uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + $EncodedText + "&from=" + $LangCodes.Item($From) + "&to=" + $LangCodes.Item($To);
$Result = Invoke-RestMethod -Uri $URI -Headers @{Authorization = $Header} -ErrorVariable Error
Return $Result.string.'#text'
}
catch
{
"Something went wrong While Translating Text, please try running the script again`nError Message : "+$Error.Message
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment