<# .SYNOPSIS Translates a text file into another language .DESCRIPTION This PowerShell script translates the given text file into another language and writes the output on the console. .PARAMETER File Specifies the path to the file to be translated .PARAMETER SourceLang Specifies the source language .PARAMETER TargetLang Specifies the target language .EXAMPLE PS> ./translate-file C:\Memo.txt en de .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> param([string]$File = "", [string]$SourceLang = "", [string]$TargetLang = "") function UseLibreTranslate { param([string]$Text, [string]$SourceLang, [string]$TargetLang) $Parameters = @{"q"="$Text"; "source"="$SourceLang"; "target"="$TargetLang"; } $Result = (Invoke-WebRequest -Uri https://libretranslate.de/translate -Method POST -Body ($Parameters|ConvertTo-Json) -ContentType "application/json" -useBasicParsing).content | ConvertFrom-Json Start-Sleep -seconds 6 # 10 requests per minute maximum return $Result.translatedText } try { if ($File -eq "" ) { $File = Read-Host "Enter the file path" } if ($SourceLang -eq "" ) { $SourceLang = Read-Host "Enter the source language" } if ($TargetLang -eq "" ) { $TargetLang = Read-Host "Enter the target language" } $Lines = Get-Content -path $File foreach($Line in $Lines) { if ("$Line" -eq "") { Write-Output "$Line"; continue } if ("$Line" -eq " ") { Write-Output "$Line"; continue } if ("$Line" -like "===*") { Write-Output "$Line"; continue } if ("$Line" -like "---*") { Write-Output "$Line"; continue } if ("$Line" -like "!*(/*)") { Write-Output "$Line"; continue } $Result = UseLibreTranslate $Line $SourceLang $TargetLang Write-Output $Result } exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 }