PowerShell/docs/translate-text.md
2024-11-20 11:52:20 +01:00

3.1 KiB

The translate-text.ps1 Script

This PowerShell script translates text into other languages.

Parameters

/home/markus/Repos/PowerShell/scripts/translate-text.ps1 [[-Text] <String>] [[-SourceLangCode] <String>] [[-TargetLangCode] <String>] [<CommonParameters>]

-Text <String>
    Specifies the text to translate
    
    Required?                    false
    Position?                    1
    Default value                
    Accept pipeline input?       false
    Accept wildcard characters?  false

-SourceLangCode <String>
    
    Required?                    false
    Position?                    2
    Default value                en
    Accept pipeline input?       false
    Accept wildcard characters?  false

-TargetLangCode <String>
    
    Required?                    false
    Position?                    3
    Default value                all
    Accept pipeline input?       false
    Accept wildcard characters?  false

[<CommonParameters>]
    This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, 
    WarningVariable, OutBuffer, PipelineVariable, and OutVariable.

Example

PS> ./translate-text "Hello World" en all

Notes

Author: Markus Fleschutz | License: CC0

https://github.com/fleschutz/PowerShell

Script Content

<#
.SYNOPSIS
	Translates text into other languages
.DESCRIPTION
	This PowerShell script translates text into other languages.
.PARAMETER Text
	Specifies the text to translate
.PARAMETER SourceLang
	Specifies the source language (English by default)
.PARAMETER TargetLang
	Specifies the target language (all by default)
.EXAMPLE
	PS> ./translate-text "Hello World" en all
.LINK
	https://github.com/fleschutz/PowerShell
.NOTES
	Author: Markus Fleschutz | License: CC0
#>

param([string]$Text = "", [string]$SourceLangCode = "en", [string]$TargetLangCode = "all")

function UseLibreTranslate { param([string]$Text, [string]$SourceLangCode, [string]$TargetLangCode)
	$Parameters = @{"q"="$Text"; "source"="$SourceLangCode"; "target"="$TargetLangCode"; }
	$Result = (Invoke-WebRequest -Uri https://libretranslate.de/translate -Method POST -Body ($Parameters|ConvertTo-Json) -ContentType "application/json" -useBasicParsing).content | ConvertFrom-Json
	return $Result.translatedText
}

try {
	if ($Text -eq "" ) { $Text = Read-Host "Enter the text to translate" }

	if ($TargetLangCode -eq "all") {
		$TargetLangCodes = "ar","de","es","fr","ga","hi","it","ja","ko","pt","ru","zh"
		foreach($TargetLangCode in $TargetLangCodes) {
			$Translation = UseLibreTranslate $Text $SourceLangCode $TargetLangCode
			Write-Output "$($TargetLangCode): $Translation"
			Start-Sleep -seconds 6 # 10 requests maximum per minute
		}
	} else {
		$Translation = UseLibreTranslate $Text $SourceLangCode $TargetLangCode
		Write-Output "$Translation"
	}
	exit 0 # success
} catch {
	"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
	exit 1
}

(generated by convert-ps2md.ps1 as of 11/20/2024 11:52:01)