<# .SYNOPSIS Translates text into other languages .DESCRIPTION This script translates text into other languages. .PARAMETER Text Specifies the text to translate .PARAMETER SourceLang Specifies the source language .PARAMETER TargetLang Specifies the target language .EXAMPLE PS> ./translate-text "Hello World" de en .NOTES Author: Markus Fleschutz · License: CC0 .LINK https://github.com/fleschutz/PowerShell #> param([string]$Text = "", [string]$SourceLang = "en", [string]$TargetLang = "any") function Language2Code { param([string]$Language) $Code = switch($Language) { "Arabic" {"ar"} "Chinese" {"zh"} "French" {"fr"} "German" {"de"} "Hindi" {"hi"} "Irish" {"ga"} "Italian" {"it"} "Japanese"{"ja"} "Korean" {"ko"} "Portuguese"{"pt"} "Russian" {"ru"} "Spanish" {"es"} Default {$Language} } return $Code } function UseGoogleTranslate { param([string]$Text, [string]$SourceLang, [string]$TargetLang) $Result = Invoke-RestMethod "https://translate.googleapis.com/translate_a/single?client=gtx&sl=$($SourceLang)&tl=$($TargetLang)&dt=t&q=$($Text)" return $Result[0][0][0] } function UseLibreTranslate { param([string]$Text, [string]$SourceLang, [string]$TargetLang) $Parameters = @{"q"="$Text"; "source"="$SourceLang"; "target"="$TargetLang"; } $Result = (Invoke-WebRequest -Uri https://libretranslate.com/translate -Method POST -Body ($Parameters|ConvertTo-Json) -ContentType "application/json").content | ConvertFrom-Json return $Result.translatedText } function UseArgosTranslateCLI { param([string]$Text, [string]$SourceLang, [string]$TargetLang) $Result = (argos-translate.cli --from-lang $SourceLang --to-lang $TargetLang $Text) return $Result } try { if ($Text -eq "" ) { $Text = read-host "Enter text in English to translate" } if ($TargetLang -eq "any") { $TargetLanguages = "Arabic","Chinese","French","German","Hindi","Irish","Italian","Japanese","Korean","Portuguese","Russian","Spanish" foreach($TargetLang in $TargetLanguages) { $TargetLangCode = Language2Code $TargetLang $Result = UseLibreTranslate $Text $SourceLang $TargetLangCode write-output "$TargetLang : $Result" } } else { $TargetLangCode = Language2Code $TargetLang $Result = UseLibreTranslate $Text $SourceLang $TargetLangCode write-output "$Result" } exit 0 # success } catch { "⚠️ Error: $($Error[0]) ($($MyInvocation.MyCommand.Name):$($_.InvocationInfo.ScriptLineNumber))" exit 1 }