You can probably increase the maximum number of characters if you really use POST instead of a disguised GET.
The return limit here seems to be 65,535 characters.
As an example:
#include "Json.au3"
#include <String.au3>
; build long string
$sText = _StringRepeat("Wie geht`s? ", 2^16 / 12)
ConsoleWrite("string length: " & StringLen($sText) & @CRLF)
; translate the string
$sTranslated = _GoogleAPITranslate($sText , "de", "en")
ConsoleWrite("return length: " & StringLen($sTranslated) & @CRLF & @CRLF)
ConsoleWrite($sTranslated & @CRLF)
Func _GoogleAPITranslate($sMytext, $sFrom, $sTo)
; format and send request
Local $sResponse
With ObjCreate("winhttp.winhttprequest.5.1")
.Open("POST", "https://translate.googleapis.com/translate_a/single", False)
.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
.Send(StringFormat("client=gtx&sl=%s&tl=%s&dt=t&q=%s", $sFrom, $sTo, _URIEncode($sText)))
$sResponse = .ResponseText
EndWith
Local $vResponse = _JSON_Parse($sResponse)
; process return
Local $aData, $sOutput = ""
If VarGetType($vResponse) = 'Array' Then
$aData = $vResponse[0]
If VarGetType($aData) = 'Array' Then
For $i = 0 To UBound($aData) -1
$sOutput &= ($aData[$i])[0]
Next
EndIf
EndIf
Return $sOutput
EndFunc
Func _URIEncode($sData)
; Prog@ndy
Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "")
Local $nChar
$sData = ""
For $i = 1 To $aData[0]
$nChar = Asc($aData[$i])
Switch $nChar
Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
$sData &= $aData[$i]
Case 32
$sData &= "+"
Case Else
$sData &= "%" & Hex($nChar, 2)
EndSwitch
Next
Return $sData
EndFunc ;==>_URIEncode