From 0180b2402dae6d31628c390701098f4964533b33 Mon Sep 17 00:00:00 2001 From: Claire Davis Date: Wed, 5 Jan 2022 20:17:20 -0800 Subject: [PATCH] added comments to ps1 --- translator.ps1 | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/translator.ps1 b/translator.ps1 index 167f245..a342397 100644 --- a/translator.ps1 +++ b/translator.ps1 @@ -1,22 +1,36 @@ +# read in the xib, original encoding is utf8 $lines = Get-Content .\MainMenu.xib -Encoding UTF8 +# set new variable for output +# this is where we make our translation edits $output = $lines +# pull out every line with a string keyed "NSDev" $regex = '(?.+?)<\/string>' +# regex results $strings = [regex]::Matches($lines,$regex) +# public translation API - no key required! +# throttled to 40 requests per 60 seconds +# one request per 1.5 seconds $url = 'https://translate.mentality.rip/translate' +# log errors $errors = @() +# create a CSV of translated values, to make corrections easier +# this is because the final XIB still has base64-encoded strings $csv = 'Base64JP,UTF8JP,Base64EN,UTF8EN' +# process every regex match foreach($string in $strings) { - # get the value + # get the base64 value + # uses named regex key $txt = $string.Groups["txt"].Value # append appropriate padding + # sauce: https://gist.github.com/obscuresec/82775093ad892ef5fd00 $mod = ($txt.length % 4) switch ($mod) { '0' {$txtp = $txt} @@ -29,19 +43,19 @@ foreach($string in $strings) { # convert the base64 to UTF8 text $utf = [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($txtp)) - # get current array index + # get current array index (for progress bar) $idx = [array]::IndexOf($strings,$string) - # get percent complete + # get percent complete (for progress bar) $pct = (($idx + 1) / $strings.Count) * 100 - # round the percent + # round the percent to one decimal $pcn = [math]::Round($pct,2) # update the status bar Write-Progress -Activity ("Translating <<" + $utf + ">>") -Status "$pcn% Complete:" -PercentComplete $pct - # create the json request + # create the json request using Japanese string $json = '{"q":"' + $utf + '","source":"ja","target":"en"}' # add delay due to api throttle @@ -66,10 +80,14 @@ foreach($string in $strings) { # add to the csv $csv += "`n""$txt"",""$utf"",""$txt64clean"",""$ttxt""" } catch { + # couldn't translate, probably because it's already English Write-Host ("Couldn't translate <<" + $utf + ">>") $errors += $utf } } +# save the xib $output | Out-File Output.xib -Encoding utf8 + +# save the csv $csv | Out-File output.csv -Encoding utf8 \ No newline at end of file