Advertisement
Thunder-Menu

ThunderTranslate.ps1

Apr 6th, 2023 (edited)
671
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PowerShell 6.29 KB | Source Code | 0 0
  1. Add-Type -AssemblyName System.Web
  2. # Vérifier si l'exécution se fait en tant qu'administrateur
  3. if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
  4.   Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
  5.   Exit
  6. }
  7.  
  8. Add-Type -AssemblyName System.Windows.Forms
  9. Add-Type -AssemblyName System.Drawing
  10. # Définir le dictionnaire de langues supportées
  11.  
  12. $languages = @{
  13.     'af' = 'Afrikaans';
  14.     'sq' = 'Albanian';
  15.     'am' = 'Amharic';
  16.     'ar' = 'Arabic';
  17.     'hy' = 'Armenian';
  18.     'az' = 'Azerbaijani';
  19.     'eu' = 'Basque';
  20.     'be' = 'Belarusian';
  21.     'bn' = 'Bengali';
  22.     'bs' = 'Bosnian';
  23.     'bg' = 'Bulgarian';
  24.     'ca' = 'Catalan';
  25.     'ceb' = 'Cebuano';
  26.     'ny' = 'Chichewa';
  27.     'zh-cn' = 'Chinese (Simplified)';
  28.     'zh-tw' = 'Chinese (Traditional)';
  29.     'co' = 'Corsican';
  30.     'hr' = 'Croatian';
  31.     'cs' = 'Czech';
  32.     'da' = 'Danish';
  33.     'nl' = 'Dutch';
  34.     'en' = 'English';
  35.     'eo' = 'Esperanto';
  36.     'et' = 'Estonian';
  37.     'tl' = 'Filipino';
  38.     'fi' = 'Finnish';
  39.     'fr' = 'French';
  40.     'fy' = 'Frisian';
  41.     'gl' = 'Galician';
  42.     'ka' = 'Georgian';
  43.     'de' = 'German';
  44.     'el' = 'Greek';
  45.     'gu' = 'Gujarati';
  46.     'ht' = 'Haitian Creole';
  47.     'ha' = 'Hausa';
  48.     'haw' = 'Hawaiian';
  49.     'iw' = 'Hebrew';
  50.     'he' = 'Hebrew';
  51.     'hi' = 'Hindi';
  52.     'hmn' = 'Hmong';
  53.     'hu' = 'Hungarian';
  54.     'is' = 'Icelandic';
  55.     'ig' = 'Igbo';
  56.     'id' = 'Indonesian';
  57.     'ga' = 'Irish';
  58.     'it' = 'Italian';
  59.     'ja' = 'Japanese';
  60.     'jw' = 'Javanese';
  61.     'kn' = 'Kannada';
  62.     'kk' = 'Kazakh';
  63.     'km' = 'Khmer';
  64.     'rw' = 'Kinyarwanda';
  65.     'ko' = 'Korean';
  66.     'ku' = 'Kurdish (Kurmanji)';
  67.     'ky' = 'Kyrgyz';
  68.     'lo' = 'Lao';
  69.     'la' = 'Latin';
  70.     'lv' = 'Latvian';
  71.     'lt' = 'Lithuanian';
  72.     'lb' = 'Luxembourgish';
  73.     'mk' = 'Macedonian';
  74.     'mg' = 'Malagasy';
  75.     'ms' = 'Malay';
  76.     'ml' = 'Malayalam';
  77.     'mt' = 'Maltese';
  78.     'mi' = 'Maori';
  79.     'mr' = 'Marathi';
  80.     'mn' = 'Mongolian';
  81.     'my' = 'Myanmar (Burmese)';
  82.     'ne' = 'Nepali';
  83.     'no' = 'Norwegian';
  84.     'or' = 'Odia (Oriya)';
  85.     'ps' = 'Pashto';
  86.     'pl' = 'Polish';
  87.     'pt' = 'Portuguese';
  88.     'pa' = 'Punjabi';
  89.     'ro' = 'Romanian';
  90.     'ru' = 'Russian';
  91.     'sm' = 'Samoan';
  92.     'gd' = 'Scottish Gaelic';
  93.     'sr' = 'Serbian';
  94.     'st' = 'Sesotho';
  95.     'sn' = 'Shona';
  96.     'sd' = 'Sindhi';
  97.     'si' = 'Sinhala (Sinhalese)';
  98.     'sk' = 'Slovak';
  99.     'sl' = 'Slovenian';
  100.     'so' = 'Somali';
  101.     'es' = 'Spanish';
  102.     'su' = 'Sundanese';
  103.     'sw' = 'Swahili';
  104.     'sv' = 'Swedish';
  105.     'tg' = 'Tajik';
  106.     'ta' = 'Tamil';
  107.     'tt' = 'Tatar';
  108.     'te' = 'Telugu';
  109.     'th' = 'Thai';
  110.     'tr' = 'Turkish';
  111.     'tk' = 'Turkmen';
  112.     'uk' = 'Ukrainian';
  113.     'ur' = 'Urdu';
  114.     'ug' = 'Uyghur';
  115.     'uz' = 'Uzbek';
  116.     'vi' = 'Vietnamese';
  117.     'cy' = 'Welsh';
  118.     'xh' = 'Xhosa';
  119.     'yi' = 'Yiddish';
  120.     'yo' = 'Yoruba';
  121.     'zu' = 'Zulu';
  122. }
  123.  
  124. # Création du formulaire
  125. $form = New-Object System.Windows.Forms.Form
  126. $form.Text = "Choose a language"
  127. $form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedDialog
  128. $form.MaximizeBox = $false
  129. $form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen
  130.  
  131. # Création du ComboBox pour les langues
  132. $languageBox = New-Object System.Windows.Forms.ComboBox
  133. $languageBox.Location = New-Object System.Drawing.Point(10, 10)
  134. $languageBox.Size = New-Object System.Drawing.Size(200, 25)
  135. $languageBox.DropDownStyle = [System.Windows.Forms.ComboBoxStyle]::DropDownList
  136.  
  137. # Ajout des langues dans le ComboBox
  138. foreach ($language in $languages.GetEnumerator() | Sort-Object Value) {
  139.     $languageBox.Items.Add($language.Value) | Out-Null
  140. }
  141.  
  142. # Événement SelectedIndexChanged pour récupérer la valeur sélectionnée dans le ComboBox
  143. $languageBox.Add_SelectedIndexChanged({
  144. $global:targetLanguage = ($languages.GetEnumerator() | Where-Object { $_.Value -eq $languageBox.SelectedItem.ToString() } | Select-Object -First 1).Key
  145.  
  146.     #$targetLanguage = ($languages.GetEnumerator() | Where-Object { $_.Value -eq $languageBox.SelectedItem.ToString() } | Select-Object -First 1).Key
  147.     $form.Close()
  148. })
  149.  
  150.  
  151. # Ajout du ComboBox au formulaire
  152. $form.Controls.Add($languageBox)
  153.  
  154.  
  155. # Affichage du formulaire et récupération du résultat
  156. $result = $form.ShowDialog()
  157.  
  158. # Si le formulaire a été fermé par l'utilisateur (et non par le code)
  159. if ($result -eq [System.Windows.Forms.DialogResult]::None) {
  160.     $targetLanguage = $null
  161. }
  162.  
  163. # Suppression du ComboBox et du formulaire
  164. $form.Controls.Remove($languageBox)
  165. $form.Dispose()
  166.  
  167. # Demander les langages source et cible à l'utilisateur
  168. $sourceLanguage = "en"
  169. #$targetLanguage = Read-Host "Enter the target language code"
  170.  
  171. # Charger le fichier de texte à traduire
  172. $urlVO = "https://raw.githubusercontent.com/3xploitch3ats/Thunder-Menu/langage/VO.langage"
  173. $outputFilePath = "$PSScriptRoot\langage.langage"
  174. $voContent = Invoke-WebRequest -Uri $urlVO -UseBasicParsing | Select-Object -ExpandProperty Content
  175.  
  176. function Translate-Text {
  177.     param (
  178.         [Parameter(Mandatory)]
  179.         [string]$sourceLanguage,
  180.         [Parameter(Mandatory)]
  181.         [string]$targetLanguage,
  182.         [Parameter(Mandatory)]
  183.         [string]$text
  184.     )
  185.  
  186.     $encodedText = [System.Uri]::EscapeUriString($text)
  187.     $url = "https://translate.google.com/translate_a/single?client=gtx&sl=$sourceLanguage&tl=$targetLanguage&dt=t&q=$encodedText"
  188.  
  189.     try {
  190.         $response = Invoke-WebRequest -Uri $url -UseBasicParsing
  191.         $translation = ($response.Content | ConvertFrom-Json)[0][0][0]
  192.         return $translation
  193.     }
  194.     catch {
  195.         Write-Error "An error occurred while translating the text: $($_.Exception.Message)"
  196.     }
  197. }
  198.  
  199. # Traduire chaque ligne de texte et les ajouter à un fichier de sortie
  200. foreach ($line in $voContent -split "`n") {
  201.     if (![string]::IsNullOrEmpty($line)) {
  202.         $translation = Translate-Text -sourceLanguage $sourceLanguage -targetLanguage $targetLanguage -text $line
  203.         $lineResult = $translation
  204.         Add-Content -Path $outputFilePath -Value $lineResult -Encoding UTF8
  205.     }
  206. }
  207.  
  208. #Write-Output "La traduction a été effectuée avec succès."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement