From 592a30ca6de368e419d7b4582d420b8e3d39175b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Mon, 18 Mar 2024 21:07:29 +0100 Subject: [PATCH 01/18] Translation WIP --- src/IPC.js | 10 +++++----- src/UI/UIAlert.js | 2 +- src/UI/UIDesktop.js | 14 +++++++------- src/UI/UIItem.js | 14 +++++++------- src/UI/UIPrompt.js | 4 ++-- src/UI/UITaskbar.js | 2 +- src/UI/UIWindow.js | 8 ++++---- src/UI/UIWindowMyWebsites.js | 2 +- src/UI/UIWindowNewPassword.js | 2 +- src/helpers.js | 36 +++++++++++++++++------------------ src/i18n/translations/en.js | 14 ++++++++++++++ src/i18n/translations/nb.js | 14 ++++++++++++++ src/initgui.js | 26 ++++++++++++------------- 13 files changed, 88 insertions(+), 60 deletions(-) diff --git a/src/IPC.js b/src/IPC.js index 5520ee00..2800e36c 100644 --- a/src/IPC.js +++ b/src/IPC.js @@ -881,12 +881,12 @@ window.addEventListener('message', async (event) => { message: `${html_encode(err.entry_name)} already exists.`, buttons:[ { - label: 'Replace', + label: i18n('replace'), value: 'replace', type: 'primary', }, { - label: 'Cancel', + label: i18n('cancel'), value: 'cancel', }, ], @@ -1032,18 +1032,18 @@ window.addEventListener('message', async (event) => { message: `${html_encode(err.entry_name)} already exists.`, buttons:[ { - label: 'Replace', + label: i18n('replace'), type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') }, ], parent_uuid: event.data.appInstanceID, }) if(alert_resp === 'Replace'){ overwrite = true; - }else if(alert_resp === 'Cancel'){ + }else if(alert_resp === 'cancel'){ item_with_same_name_already_exists = false; } }else{ diff --git a/src/UI/UIAlert.js b/src/UI/UIAlert.js index 558f274f..83b98f36 100644 --- a/src/UI/UIAlert.js +++ b/src/UI/UIAlert.js @@ -37,7 +37,7 @@ function UIAlert(options){ // provide an 'OK' button if no buttons are provided if(!options.buttons || options.buttons.length === 0){ options.buttons = [ - {label: 'OK', value: true, type: 'primary'} + {label: i18n('ok'), value: true, type: 'primary'} ] } diff --git a/src/UI/UIDesktop.js b/src/UI/UIDesktop.js index 642f0b45..57bd2336 100644 --- a/src/UI/UIDesktop.js +++ b/src/UI/UIDesktop.js @@ -1197,18 +1197,18 @@ $(document).on('click', '.user-options-menu-btn', async function(e){ // see if there are any open windows, if yes notify user if($('.window-app').length > 0){ const alert_resp = await UIAlert({ - message: `

You have open apps. Are you sure you want to log out?

`, + message: `

`, buttons:[ { - label: 'Close Windows and Log Out', + label: i18n('close_all_Windows_and_log_out'), type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') }, ] }) - if(alert_resp === 'Close Windows and Log Out') + if(alert_resp === i18n('close_all_Windows_and_log_out')) logout(); } // no open windows @@ -1285,16 +1285,16 @@ $(document).on('click', '.user-options-login-btn', async function(e){ message: `Save session before exiting!

You are in a temporary session and logging into another account will erase all data in your current session.

`, buttons:[ { - label: 'Save session', + label: i18n('save_session'), value: 'save-session', type: 'primary', }, { - label: 'Log into another account anyway', + label: i18n('log_into_another_account_anyway'), value: 'login', }, { - label: 'Cancel' + label: i18n('cancel') }, ] }) diff --git a/src/UI/UIItem.js b/src/UI/UIItem.js index 183fbd5b..30ad524c 100644 --- a/src/UI/UIItem.js +++ b/src/UI/UIItem.js @@ -159,7 +159,7 @@ function UIItem(options){ h += ``; // name - h += `${html_encode(truncate_filename(options.name, TRUNCATE_LENGTH)).replaceAll(' ', ' ')}` + h += `${options.is_trash ? i18n('trash') : html_encode(truncate_filename(options.name, TRUNCATE_LENGTH)).replaceAll(' ', ' ')}` // name editor h += `` h += ``; @@ -827,14 +827,14 @@ function UIItem(options){ html: i18n('delete_permanently'), onClick: async function(){ const alert_resp = await UIAlert({ - message: `Are you sure you want to permanently delete these items?`, + message: i18n('confirm_delete_multiple_items'), buttons:[ { - label: 'Delete', + label: i18n('delete'), type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') }, ] }) @@ -1245,14 +1245,14 @@ function UIItem(options){ html: i18n('delete_permanently'), onClick: async function(){ const alert_resp = await UIAlert({ - message: `Are you sure you want to permanently delete this item?`, + message: ` you want to permanently delete this item?`, buttons:[ { - label: 'Delete', + label: i18n('delete'), type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') }, ] }) diff --git a/src/UI/UIPrompt.js b/src/UI/UIPrompt.js index 333234ae..f30f43a8 100644 --- a/src/UI/UIPrompt.js +++ b/src/UI/UIPrompt.js @@ -37,7 +37,7 @@ function UIPrompt(options){ // provide an 'OK' button if no buttons are provided if(!options.buttons || options.buttons.length === 0){ options.buttons = [ - {label: i18n('Cancel'), value: false, type: 'default'}, + {label: i18n('cancel'), value: false, type: 'default'}, {label: i18n('OK'), value: true, type: 'primary'}, ] } @@ -52,7 +52,7 @@ function UIPrompt(options){ // buttons if(options.buttons && options.buttons.length > 0){ h += `
`; - h += ``; + h += ``; h += ``; h += `
`; } diff --git a/src/UI/UITaskbar.js b/src/UI/UITaskbar.js index 9c2a5ac6..b76cb899 100644 --- a/src/UI/UITaskbar.js +++ b/src/UI/UITaskbar.js @@ -217,7 +217,7 @@ async function UITaskbar(options){ UITaskbarItem({ icon: trash.is_empty ? window.icons['trash.svg'] : window.icons['trash-full.svg'], app: 'trash', - name: 'Trash', + name: `${i18n('trash')}`, sortable: false, keep_in_taskbar: true, lock_keep_in_taskbar: true, diff --git a/src/UI/UIWindow.js b/src/UI/UIWindow.js index f853aded..9b332bdb 100644 --- a/src/UI/UIWindow.js +++ b/src/UI/UIWindow.js @@ -2018,19 +2018,19 @@ async function UIWindow(options) { // Empty Trash // ------------------------------------------- { - html: "Empty Trash", + html: i18n('empty_trash'), disabled: false, onClick: async function(){ const alert_resp = await UIAlert({ message: i18n('empty_trash_confirmation'), buttons:[ { - label: 'Yes', + label: i18n('yes'), value: 'yes', type: 'primary', }, { - label: 'No', + label: i18n('no'), value: 'no', }, ] @@ -2517,7 +2517,7 @@ window.navbar_path = (abs_path)=>{ } let str = `${path_seperator_html}${html_encode(window.root_dirname)}`; for(let k=1; k${html_encode(dirs[k])}`; + str += `${path_seperator_html}${dirs[k] === 'Trash' ? i18n('trash') : html_encode(dirs[k])}`; } return str; } diff --git a/src/UI/UIWindowMyWebsites.js b/src/UI/UIWindowMyWebsites.js index 54397920..20d20c1a 100644 --- a/src/UI/UIWindowMyWebsites.js +++ b/src/UI/UIWindowMyWebsites.js @@ -144,7 +144,7 @@ $(document).on('click', '.mywebsites-site-setting', function(e){ type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') }, ] }) diff --git a/src/UI/UIWindowNewPassword.js b/src/UI/UIWindowNewPassword.js index 204c0771..3467d294 100644 --- a/src/UI/UIWindowNewPassword.js +++ b/src/UI/UIWindowNewPassword.js @@ -116,7 +116,7 @@ async function UIWindowNewPassword(options){ backdrop: true, buttons:[ { - label: 'Proceed to Login', + label: i18n('proceed_to_login'), type: 'primary', }, ], diff --git a/src/helpers.js b/src/helpers.js index 03128b9e..fe45b1e8 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -1030,7 +1030,7 @@ window.show_save_account_notice_if_needed = function(message){ body_icon: window.icons['reminder.svg'], buttons:[ { - label: 'Save session', + label: i18n('save_session'), value: 'save-session', type: 'primary', }, @@ -1562,9 +1562,9 @@ window.copy_clipboard_items = async function(dest_path, dest_container_element){ const alert_resp = await UIAlert({ message: `${html_encode(err.entry_name)} already exists.`, buttons:[ - {label: 'Replace', type: 'primary'}, - ... (clipboard.length > 1) ? [{label: 'Replace all'}] : [], - ... (clipboard.length > 1) ? [{label: 'Skip'}] : [{label: 'Cancel'}], + {label: i18n('replace'), type: 'primary'}, + ... (clipboard.length > 1) ? [{label: i18n('replace_all')}] : [], + ... (clipboard.length > 1) ? [{label: i18n('skip')}] : [{label: i18n('cancel')}], ] }) if(alert_resp === 'Replace'){ @@ -1572,7 +1572,7 @@ window.copy_clipboard_items = async function(dest_path, dest_container_element){ }else if (alert_resp === 'Replace all'){ overwrite = true; overwrite_all = true; - }else if(alert_resp === 'Skip' || alert_resp === 'Cancel'){ + }else if(alert_resp === 'Skip' || alert_resp === 'cancel'){ item_with_same_name_already_exists = false; } } @@ -1659,9 +1659,9 @@ window.copy_items = function(el_items, dest_path){ const alert_resp = await UIAlert({ message: `${html_encode(err.entry_name)} already exists.`, buttons:[ - { label: 'Replace', type: 'primary' }, - ... (el_items.length > 1) ? [{label: 'Replace all'}] : [], - ... (el_items.length > 1) ? [{label: 'Skip'}] : [{label: 'Cancel'}], + { label: i18n('replace'), type: 'primary' }, + ... (el_items.length > 1) ? [{label: i18n('replace_all')}] : [], + ... (el_items.length > 1) ? [{label: i18n('skip')}] : [{label: i18n('cancel')}], ] }) if(alert_resp === 'Replace'){ @@ -1669,7 +1669,7 @@ window.copy_items = function(el_items, dest_path){ }else if (alert_resp === 'Replace all'){ overwrite = true; overwrite_all = true; - }else if(alert_resp === 'Skip' || alert_resp === 'Cancel'){ + }else if(alert_resp === 'Skip' || alert_resp === 'cancel'){ item_with_same_name_already_exists = false; } } @@ -2205,12 +2205,12 @@ window.open_item = async function(options){ 'Found no suitable apps to open this file with. Would you like to download it instead?', [ { - label: 'Download File', + label: i18n('download_file'), type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') } ]) if(alert_resp === 'Download File'){ @@ -2583,9 +2583,9 @@ window.move_items = async function(el_items, dest_path, is_undo = false){ const alert_resp = await UIAlert({ message: `${html_encode(err.entry_name)} already exists.`, buttons:[ - { label: 'Replace', type: 'primary',}, - ... (el_items.length > 1) ? [{label: 'Replace all'}] : [], - ... (el_items.length > 1) ? [{label: 'Skip'}] : [{label: 'Cancel'}], + { label: i18n('replace'), type: 'primary',}, + ... (el_items.length > 1) ? [{label: i18n('replace_all')}] : [], + ... (el_items.length > 1) ? [{label: i18n('skip')}] : [{label: i18n('cancel')}], ] }) if(alert_resp === 'Replace'){ @@ -2593,7 +2593,7 @@ window.move_items = async function(el_items, dest_path, is_undo = false){ }else if (alert_resp === 'Replace all'){ overwrite = true; overwrite_all = true; - }else if(alert_resp === 'Skip' || alert_resp === 'Cancel'){ + }else if(alert_resp === 'Skip' || alert_resp === 'cancel'){ item_with_same_name_already_exists = false; } } @@ -2970,15 +2970,15 @@ window.upload_items = async function(items, dest_path){ window.empty_trash = async function(){ const alert_resp = await UIAlert({ - message: `Are you sure you want to permanently delete the items in Trash?`, + message: i18n('empty_trash_confirmation'), buttons:[ { - label: 'Yes', + label: i18n('yes'), value: 'yes', type: 'primary', }, { - label: 'No', + label: i18n('no'), value: 'no', }, ] diff --git a/src/i18n/translations/en.js b/src/i18n/translations/en.js index 74285690..343a7202 100644 --- a/src/i18n/translations/en.js +++ b/src/i18n/translations/en.js @@ -16,8 +16,12 @@ const en = { change_password: "Change Password", change_username: "Change Username", close_all_windows: "Close All Windows", + close_all_windows_and_log_out: 'Close Windows and Log Out', color: 'Color', confirm_account_for_free_referral_storage_c2a: 'Create an account and confirm your email address to receive 1 GB of free storage. Your friend will get 1 GB of free storage too.', + confirm_delete_multiple_items: 'Are you sure you want to permanently delete these items?', + configm_delete_single_item: 'Do you want to permanently delete this item?', + confirm_open_apps_log_out: 'You have open apps. Are you sure you want to log out?', confirm_new_password: "Confirm New Password", contact_us: "Contact Us", contain: 'Contain', @@ -40,6 +44,7 @@ const en = { dir_published_as_website: `%strong% has been published to:`, disassociate_dir: "Disassociate Directory", download: 'Download', + download_file: 'Download File', downloading: "Downloading", email: "Email", email_or_username: "Email or Username", @@ -62,6 +67,7 @@ const en = { jpeg_image: 'JPEG image', keep_in_taskbar: 'Keep in Taskbar', log_in: "Log In", + log_into_another_account_anyway: 'Log into another account anyway', log_out: 'Log Out', move: 'Move', moving: "Moving", @@ -77,6 +83,7 @@ const en = { new_folder: 'New folder', new_password: "New Password", new_username: "New Username", + no: 'No', no_dir_associated_with_site: 'No directory associated with this address.', no_websites_published: "You have not published any websites yet.", ok: 'OK', @@ -94,6 +101,7 @@ const en = { powered_by_puter_js: `Powered by Puter.js`, preparing: "Preparing...", preparing_for_upload: "Preparing for upload...", + proceed_to_login: 'Proceed to login', properties: "Properties", publish: "Publish", publish_as_website: 'Publish as website', @@ -106,10 +114,14 @@ const en = { remove_from_taskbar:'Remove from Taskbar', rename: 'Rename', repeat: 'Repeat', + replace: 'Replace', + replace_all: 'Erstatt alle', resend_confirmation_code: "Re-send Confirmation Code", restore: "Restore", + save_account: 'Save account', save_account_to_get_copy_link: "Please create an account to proceed.", save_account_to_publish: 'Please create an account to proceed.', + save_session: 'Save session', save_session_c2a: 'Create an account to save your current session and avoid losing your work.', scan_qr_c2a: 'Scan the code below to log into this session from other devices', select: "Select", @@ -125,6 +137,7 @@ const en = { sign_up: "Sign Up", signing_in: "Signing in…", size: 'Size', + skip: 'Skip', sort_by: 'Sort by', start: 'Start', taking_longer_than_usual: 'Taking a little longer than usual. Please wait...', @@ -139,6 +152,7 @@ const en = { username: "Username", username_changed: 'Username updated successfully.', versions: "Versions", + yes: 'Yes', yes_release_it: 'Yes, Release It', you_have_been_referred_to_puter_by_a_friend: "You have been referred to Puter by a friend!", zip: "Zip", diff --git a/src/i18n/translations/nb.js b/src/i18n/translations/nb.js index d4e389ea..8e9862db 100644 --- a/src/i18n/translations/nb.js +++ b/src/i18n/translations/nb.js @@ -16,8 +16,12 @@ const nb = { change_password: "Endre passord", change_username: "Endre brukernavn", close_all_windows: "Lukk alle vinduer", + close_all_windows_and_log_out: 'Lukk alle vinduer og logg ut', color: "Farge", confirm_account_for_free_referral_storage_c2a: "Opprett en konto og bekreft e-postadressen din for å motta 1 GB gratis lagringsplass. Din venn vil også få 1 GB gratis lagringsplass.", + confirm_delete_multiple_items: 'Er du sikker på at du vil slette disse elementene permanent?', + configm_delete_single_item: 'Er du sikker på at du vil slette dette elemente permanent?', + confirm_open_apps_log_out: 'Du har åpene apper, er du sikker på at du vil logge ut?', confirm_new_password: "Bekreft nytt passord", contact_us: "Kontakt oss", contain: "Inneholde", @@ -40,6 +44,7 @@ const nb = { dir_published_as_website: "%strong% er publisert på:", disassociate_dir: "Fjern tilknytning fra mappe", download: "Last ned", + download_file: 'Last ned fil', downloading: "Laster ned", email: "E-post", email_or_username: "E-post eller brukernavn", @@ -62,6 +67,7 @@ const nb = { jpeg_image: "JPEG-bilde", keep_in_taskbar: "Behold i oppgavelinjen", log_in: "Logg inn", + log_into_another_account_anyway: 'Logg inn på en annen bruker uansett', log_out: "Logg ut", move: "Flytt", moving: "Flytter", @@ -77,6 +83,7 @@ const nb = { new_folder: "Ny mappe", new_password: "Nytt passord", new_username: "Nytt brukernavn", + no: 'Nei', no_dir_associated_with_site: "Ingen mappe er tilknyttet denne adressen.", no_websites_published: "Du har ikke publisert noen nettsteder ennå.", ok: "OK", @@ -95,6 +102,7 @@ const nb = { preparing: "Forbereder...", preparing_for_upload: "Forbereder opplasting...", properties: "Egenskaper", + proceed_to_login: 'Fortsett til innlogging', publish: "Publiser", publish_as_website: "Publiser som nettsted", recent: "Nylig", @@ -106,10 +114,14 @@ const nb = { remove_from_taskbar: "Fjern fra oppgavelinjen", rename: "Gi nytt navn", repeat: "Gjenta", + replace: 'Erstatt', + replace_all: 'Erstatt alle', resend_confirmation_code: "Send bekreftelseskoden på nytt", restore: "Gjenopprett", + save_account: 'Lagre konto', save_account_to_get_copy_link: "Vennligst opprett en konto for å fortsette.", save_account_to_publish: "Vennligst opprett en konto for å fortsette.", + save_session: 'Lagre økt', save_session_c2a: "Opprett en konto for å lagre gjeldende økt og unngå å miste arbeidet ditt.", scan_qr_c2a: "Skann koden nedenfor for å logge inn på denne økten fra andre enheter", select: "Velg", @@ -125,6 +137,7 @@ const nb = { sign_up: "Registrer deg", signing_in: "Logger inn…", size: "Størrelse", + skip: 'Hopp over', sort_by: "Sorter etter", start: "Start", taking_longer_than_usual: "Dette tar litt lenger tid enn vanlig. Vennligst vent...", @@ -140,6 +153,7 @@ const nb = { username_changed: "Brukernavn oppdatert.", versions: "Versjoner", yes_release_it: "Ja, frigi den", + yes: 'ja', you_have_been_referred_to_puter_by_a_friend: "Du har blitt henvist til Puter av en venn!", zip: "Zip" } diff --git a/src/initgui.js b/src/initgui.js index e66ad5b5..971cf2df 100644 --- a/src/initgui.js +++ b/src/initgui.js @@ -529,12 +529,12 @@ window.initgui = async function(){ message: `${html_encode(err.entry_name)} already exists.`, buttons:[ { - label: 'Replace', + label: i18n('replace'), value: 'replace', type: 'primary', }, { - label: 'Cancel', + label: i18n('cancel'), value: 'cancel', }, ], @@ -885,12 +885,12 @@ window.initgui = async function(){ message: `${html_encode(err.entry_name)} already exists.`, buttons:[ { - label: 'Replace', + label: i18n('replace'), value: 'replace', type: 'primary', }, { - label: 'Cancel', + label: i18n('cancel'), value: 'cancel', }, ], @@ -1326,14 +1326,14 @@ window.initgui = async function(){ let $selected_items = $(active_element).closest(`.item-container`).find(`.item-selected`); if($selected_items.length > 0){ const alert_resp = await UIAlert({ - message: `Are you sure you want to permanently delete these items?`, + message: i18n('confirm_delete_multiple_items'), buttons:[ { - label: 'Delete', + label: i18n('delete'), type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') }, ] }) @@ -1355,14 +1355,14 @@ window.initgui = async function(){ let $selected_items = $(active_element).closest(`.item-container`).find(`.item-selected[data-path^="${trash_path + '/'}"]`); if($selected_items.length > 0){ const alert_resp = await UIAlert({ - message: `Are you sure you want to permanently delete these items?`, + message: i18n('confirm_delete_multiple_items'), buttons:[ { - label: 'Delete', + label: i18n('delete'), type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') }, ] }) @@ -1876,15 +1876,15 @@ window.initgui = async function(){ message: `Save account before logging out!

You are using a temporary account and logging out will erase all your data.

`, buttons:[ { - label: 'Save Account', + label: i18n('save_account'), type: 'primary', }, { - label: 'Log Out', + label: i18n('log_out'), type: 'danger', }, { - label: 'Cancel', + label: i18n('cancel'), }, ] }) From 8e1dbc8189d3e3c32fa5e3b40eeacc376db3332a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Mon, 18 Mar 2024 21:16:33 +0100 Subject: [PATCH 02/18] Fix broken dialogboxes --- src/IPC.js | 3 ++- src/UI/UIDesktop.js | 3 ++- src/helpers.js | 39 ++++++++++++++++++++------------------- src/initgui.js | 6 ++++-- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/IPC.js b/src/IPC.js index 2800e36c..d1b5cb82 100644 --- a/src/IPC.js +++ b/src/IPC.js @@ -1036,7 +1036,8 @@ window.addEventListener('message', async (event) => { type: 'primary', }, { - label: i18n('cancel') + label: i18n('cancel'), + value: 'cancel' }, ], parent_uuid: event.data.appInstanceID, diff --git a/src/UI/UIDesktop.js b/src/UI/UIDesktop.js index 57bd2336..88d55b9e 100644 --- a/src/UI/UIDesktop.js +++ b/src/UI/UIDesktop.js @@ -1201,6 +1201,7 @@ $(document).on('click', '.user-options-menu-btn', async function(e){ buttons:[ { label: i18n('close_all_Windows_and_log_out'), + value: 'close_and_log_out', type: 'primary', }, { @@ -1208,7 +1209,7 @@ $(document).on('click', '.user-options-menu-btn', async function(e){ }, ] }) - if(alert_resp === i18n('close_all_Windows_and_log_out')) + if(alert_resp === 'close_and_log_out') logout(); } // no open windows diff --git a/src/helpers.js b/src/helpers.js index fe45b1e8..66f558f3 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -1562,17 +1562,17 @@ window.copy_clipboard_items = async function(dest_path, dest_container_element){ const alert_resp = await UIAlert({ message: `${html_encode(err.entry_name)} already exists.`, buttons:[ - {label: i18n('replace'), type: 'primary'}, - ... (clipboard.length > 1) ? [{label: i18n('replace_all')}] : [], - ... (clipboard.length > 1) ? [{label: i18n('skip')}] : [{label: i18n('cancel')}], + {label: i18n('replace'), type: 'primary', value: 'replace'}, + ... (clipboard.length > 1) ? [{label: i18n('replace_all'), value: 'replace_all'}] : [], + ... (clipboard.length > 1) ? [{label: i18n('skip'), value: 'skip'}] : [{label: i18n('cancel'), value: 'cancel'}], ] }) - if(alert_resp === 'Replace'){ + if(alert_resp === 'replace'){ overwrite = true; - }else if (alert_resp === 'Replace all'){ + }else if (alert_resp === 'replace_all'){ overwrite = true; overwrite_all = true; - }else if(alert_resp === 'Skip' || alert_resp === 'cancel'){ + }else if(alert_resp === 'skip' || alert_resp === 'cancel'){ item_with_same_name_already_exists = false; } } @@ -1659,17 +1659,17 @@ window.copy_items = function(el_items, dest_path){ const alert_resp = await UIAlert({ message: `${html_encode(err.entry_name)} already exists.`, buttons:[ - { label: i18n('replace'), type: 'primary' }, - ... (el_items.length > 1) ? [{label: i18n('replace_all')}] : [], - ... (el_items.length > 1) ? [{label: i18n('skip')}] : [{label: i18n('cancel')}], + { label: i18n('replace'), type: 'primary', value: 'replace' }, + ... (el_items.length > 1) ? [{label: i18n('replace_all'), value: 'replace_all'}] : [], + ... (el_items.length > 1) ? [{label: i18n('skip'), value: 'skip'}] : [{label: i18n('cancel'), value: 'cancel'}], ] }) - if(alert_resp === 'Replace'){ + if(alert_resp === 'replace'){ overwrite = true; - }else if (alert_resp === 'Replace all'){ + }else if (alert_resp === 'replace_all'){ overwrite = true; overwrite_all = true; - }else if(alert_resp === 'Skip' || alert_resp === 'cancel'){ + }else if(alert_resp === 'skip' || alert_resp === 'cancel'){ item_with_same_name_already_exists = false; } } @@ -2206,6 +2206,7 @@ window.open_item = async function(options){ [ { label: i18n('download_file'), + value: 'download_file', type: 'primary', }, @@ -2213,7 +2214,7 @@ window.open_item = async function(options){ label: i18n('cancel') } ]) - if(alert_resp === 'Download File'){ + if(alert_resp === 'download_file'){ trigger_download([item_path]); } return; @@ -2583,17 +2584,17 @@ window.move_items = async function(el_items, dest_path, is_undo = false){ const alert_resp = await UIAlert({ message: `${html_encode(err.entry_name)} already exists.`, buttons:[ - { label: i18n('replace'), type: 'primary',}, - ... (el_items.length > 1) ? [{label: i18n('replace_all')}] : [], - ... (el_items.length > 1) ? [{label: i18n('skip')}] : [{label: i18n('cancel')}], + { label: i18n('replace'), type: 'primary', value: 'replace' }, + ... (el_items.length > 1) ? [{label: i18n('replace_all'), value: 'replace_all'}] : [], + ... (el_items.length > 1) ? [{label: i18n('skip'), value: 'skip'}] : [{label: i18n('cancel'), value: 'cancel'}], ] }) - if(alert_resp === 'Replace'){ + if(alert_resp === 'replace'){ overwrite = true; - }else if (alert_resp === 'Replace all'){ + }else if (alert_resp === 'replace_all'){ overwrite = true; overwrite_all = true; - }else if(alert_resp === 'Skip' || alert_resp === 'cancel'){ + }else if(alert_resp === 'skip' || alert_resp === 'cancel'){ item_with_same_name_already_exists = false; } } diff --git a/src/initgui.js b/src/initgui.js index 971cf2df..6697ffa5 100644 --- a/src/initgui.js +++ b/src/initgui.js @@ -1877,10 +1877,12 @@ window.initgui = async function(){ buttons:[ { label: i18n('save_account'), + value: 'save_account', type: 'primary', }, { label: i18n('log_out'), + value: 'log_out', type: 'danger', }, { @@ -1888,14 +1890,14 @@ window.initgui = async function(){ }, ] }) - if(alert_resp === 'Save Account'){ + if(alert_resp === 'save_account'){ let saved = await UIWindowSaveAccount({ send_confirmation_code: false, default_username: window.user.username }); if(saved) logout(); - }else if (alert_resp === 'Log Out'){ + }else if (alert_resp === 'log_out'){ logout(); } else{ From 38f30f71389dbfe4d253d23c98da1c64fa589c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Mon, 18 Mar 2024 21:29:27 +0100 Subject: [PATCH 03/18] More translation --- src/UI/UIWindow.js | 6 +++--- src/UI/UIWindowDownloadProgress.js | 2 +- src/UI/UIWindowMyWebsites.js | 2 +- src/i18n/translations/en.js | 4 ++++ src/i18n/translations/nb.js | 4 ++++ 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/UI/UIWindow.js b/src/UI/UIWindow.js index 9b332bdb..9c5834db 100644 --- a/src/UI/UIWindow.js +++ b/src/UI/UIWindow.js @@ -314,7 +314,7 @@ async function UIWindow(options) { // Loading spinner h += `
`; h +=`circle anim`; - h += `

Loading...

`; + h += `

${i18n('loading')}...

`; h += `
`; } @@ -2920,7 +2920,7 @@ window.scale_window = (el_window)=>{ window.update_explorer_footer_item_count = function(el_window){ //update dir count in explorer footer let item_count = $(el_window).find('.item').length; - $(el_window).find('.explorer-footer .explorer-footer-item-count').html(item_count + ' item' + (item_count == 0 || item_count > 1 ? 's' : '')); + $(el_window).find('.explorer-footer .explorer-footer-item-count').html(item_count + ` ${i18n('item')}` + (item_count == 0 || item_count > 1 ? `${i18n('plural_suffix')}` : '')); } window.update_explorer_footer_selected_items_count = function(el_window){ @@ -2928,7 +2928,7 @@ window.update_explorer_footer_selected_items_count = function(el_window){ let item_count = $(el_window).find('.item-selected').length; if(item_count > 0){ $(el_window).find('.explorer-footer-seperator, .explorer-footer-selected-items-count').show(); - $(el_window).find('.explorer-footer .explorer-footer-selected-items-count').html(item_count + ' item' + (item_count == 0 || item_count > 1 ? 's' : '') + ' selected'); + $(el_window).find('.explorer-footer .explorer-footer-selected-items-count').html(item_count + ` ${i18n('item')}` + (item_count == 0 || item_count > 1 ? `${i18n('plural_suffix')}` : '') + ` ${i18n('selected')}`); }else{ $(el_window).find('.explorer-footer-seperator, .explorer-footer-selected-items-count').hide(); } diff --git a/src/UI/UIWindowDownloadProgress.js b/src/UI/UIWindowDownloadProgress.js index 5503a5bf..a9f3159a 100644 --- a/src/UI/UIWindowDownloadProgress.js +++ b/src/UI/UIWindowDownloadProgress.js @@ -29,7 +29,7 @@ async function UIWindowDownloadProgress(options){ // Progress report h +=`
`; // msg - h += `${i18n('downloading')} ${options.item_name ?? ''}`; + h += `${i18n('downloading')}...${options.item_name ?? ''}`; h += `
`; // Progress h += `
`; diff --git a/src/UI/UIWindowMyWebsites.js b/src/UI/UIWindowMyWebsites.js index 20d20c1a..8f4dd5cc 100644 --- a/src/UI/UIWindowMyWebsites.js +++ b/src/UI/UIWindowMyWebsites.js @@ -68,7 +68,7 @@ async function UIWindowMyWebsites(options){ margin-bottom: 50px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - color: #596c7c;">Loading...

`); + color: #596c7c;">${i18n('loading')}...

`); }, 1000); puter.hosting.list().then(function (sites){ diff --git a/src/i18n/translations/en.js b/src/i18n/translations/en.js index 343a7202..6311c82f 100644 --- a/src/i18n/translations/en.js +++ b/src/i18n/translations/en.js @@ -63,9 +63,11 @@ const en = { html_document: 'HTML document', image: 'Image', invite_link: "Invite Link", + item: 'item', items_in_trash_cannot_be_renamed: `This item can't be renamed because it's in the trash. To rename this item, first drag it out of the Trash.`, jpeg_image: 'JPEG image', keep_in_taskbar: 'Keep in Taskbar', + loading: 'Loading', log_in: "Log In", log_into_another_account_anyway: 'Log into another account anyway', log_out: 'Log Out', @@ -105,6 +107,7 @@ const en = { properties: "Properties", publish: "Publish", publish_as_website: 'Publish as website', + plural_suffix: 's', recent: "Recent", recover_password: "Recover Password", refer_friends_c2a: "Get 1 GB for every friend who creates and confirms an account on Puter. Your friend will get 1 GB too!", @@ -125,6 +128,7 @@ const en = { save_session_c2a: 'Create an account to save your current session and avoid losing your work.', scan_qr_c2a: 'Scan the code below to log into this session from other devices', select: "Select", + selected: 'selected', select_color: 'Select color…', send: "Send", send_password_recovery_email: "Send Password Recovery Email", diff --git a/src/i18n/translations/nb.js b/src/i18n/translations/nb.js index 8e9862db..fc0d584b 100644 --- a/src/i18n/translations/nb.js +++ b/src/i18n/translations/nb.js @@ -63,9 +63,11 @@ const nb = { html_document: "HTML-dokument", image: "Bilde", invite_link: "Invitasjonslenke", + item: 'element', items_in_trash_cannot_be_renamed: "Dette elementet kan ikke omdøpes fordi det er i papirkurven. For å omdøpe dette elementet, dra det først ut av papirkurven.", jpeg_image: "JPEG-bilde", keep_in_taskbar: "Behold i oppgavelinjen", + loading: 'Laster', log_in: "Logg inn", log_into_another_account_anyway: 'Logg inn på en annen bruker uansett', log_out: "Logg ut", @@ -105,6 +107,7 @@ const nb = { proceed_to_login: 'Fortsett til innlogging', publish: "Publiser", publish_as_website: "Publiser som nettsted", + plural_suffix: 'er', recent: "Nylig", recover_password: "Gjenopprett passord", refer_friends_c2a: "Få 1 GB for hver venn som oppretter og bekrefter en konto på Puter. Vennen din får også 1 GB.", @@ -125,6 +128,7 @@ const nb = { save_session_c2a: "Opprett en konto for å lagre gjeldende økt og unngå å miste arbeidet ditt.", scan_qr_c2a: "Skann koden nedenfor for å logge inn på denne økten fra andre enheter", select: "Velg", + selected: 'valgt', select_color: "Velg farge…", send: "Send", send_password_recovery_email: "Send e-post for gjenoppretting av passord", From 9a0d612dff40539057ae69a8e46a9e4c16b80bf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Tue, 19 Mar 2024 04:00:03 +0100 Subject: [PATCH 04/18] Fix comments --- src/UI/UIDesktop.js | 2 +- src/UI/UIItem.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/UI/UIDesktop.js b/src/UI/UIDesktop.js index 88d55b9e..c5e50a01 100644 --- a/src/UI/UIDesktop.js +++ b/src/UI/UIDesktop.js @@ -1197,7 +1197,7 @@ $(document).on('click', '.user-options-menu-btn', async function(e){ // see if there are any open windows, if yes notify user if($('.window-app').length > 0){ const alert_resp = await UIAlert({ - message: `

`, + message: `

${i18n('confirm_open_apps_log_out')}

`, buttons:[ { label: i18n('close_all_Windows_and_log_out'), diff --git a/src/UI/UIItem.js b/src/UI/UIItem.js index 30ad524c..70712512 100644 --- a/src/UI/UIItem.js +++ b/src/UI/UIItem.js @@ -1245,7 +1245,7 @@ function UIItem(options){ html: i18n('delete_permanently'), onClick: async function(){ const alert_resp = await UIAlert({ - message: ` you want to permanently delete this item?`, + message: i18n('configm_delete_single_item'), buttons:[ { label: i18n('delete'), From bf75ebd4dd79f0c7cdf48122ef03742d4a73f70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Tue, 19 Mar 2024 04:04:41 +0100 Subject: [PATCH 05/18] We require value. Using label will be very messy with translation --- src/UI/UIAlert.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/UIAlert.js b/src/UI/UIAlert.js index 83b98f36..802a09f1 100644 --- a/src/UI/UIAlert.js +++ b/src/UI/UIAlert.js @@ -57,7 +57,7 @@ function UIAlert(options){ for(let y=0; y${html_encode(options.buttons[y].label)}`; } From 409e8acafa5bfb4a92f8211124e219d38427f13b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Tue, 19 Mar 2024 04:22:17 +0100 Subject: [PATCH 06/18] revert value requirement --- src/UI/UIAlert.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/UIAlert.js b/src/UI/UIAlert.js index 802a09f1..83b98f36 100644 --- a/src/UI/UIAlert.js +++ b/src/UI/UIAlert.js @@ -57,7 +57,7 @@ function UIAlert(options){ for(let y=0; y${html_encode(options.buttons[y].label)}`; } From 7c69583307c3ed6e02f23de5331902e7dac73038 Mon Sep 17 00:00:00 2001 From: Nariman Jelveh Date: Mon, 18 Mar 2024 20:26:47 -0700 Subject: [PATCH 07/18] `configm` -> `confirm` --- src/UI/UIItem.js | 2 +- src/i18n/translations/en.js | 2 +- src/i18n/translations/nb.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/UI/UIItem.js b/src/UI/UIItem.js index 70712512..ce72185f 100644 --- a/src/UI/UIItem.js +++ b/src/UI/UIItem.js @@ -1245,7 +1245,7 @@ function UIItem(options){ html: i18n('delete_permanently'), onClick: async function(){ const alert_resp = await UIAlert({ - message: i18n('configm_delete_single_item'), + message: i18n('confirm_delete_single_item'), buttons:[ { label: i18n('delete'), diff --git a/src/i18n/translations/en.js b/src/i18n/translations/en.js index 6311c82f..0c02478c 100644 --- a/src/i18n/translations/en.js +++ b/src/i18n/translations/en.js @@ -20,7 +20,7 @@ const en = { color: 'Color', confirm_account_for_free_referral_storage_c2a: 'Create an account and confirm your email address to receive 1 GB of free storage. Your friend will get 1 GB of free storage too.', confirm_delete_multiple_items: 'Are you sure you want to permanently delete these items?', - configm_delete_single_item: 'Do you want to permanently delete this item?', + confirm_delete_single_item: 'Do you want to permanently delete this item?', confirm_open_apps_log_out: 'You have open apps. Are you sure you want to log out?', confirm_new_password: "Confirm New Password", contact_us: "Contact Us", diff --git a/src/i18n/translations/nb.js b/src/i18n/translations/nb.js index fc0d584b..dc173ed2 100644 --- a/src/i18n/translations/nb.js +++ b/src/i18n/translations/nb.js @@ -20,7 +20,7 @@ const nb = { color: "Farge", confirm_account_for_free_referral_storage_c2a: "Opprett en konto og bekreft e-postadressen din for å motta 1 GB gratis lagringsplass. Din venn vil også få 1 GB gratis lagringsplass.", confirm_delete_multiple_items: 'Er du sikker på at du vil slette disse elementene permanent?', - configm_delete_single_item: 'Er du sikker på at du vil slette dette elemente permanent?', + confirm_delete_single_item: 'Er du sikker på at du vil slette dette elemente permanent?', confirm_open_apps_log_out: 'Du har åpene apper, er du sikker på at du vil logge ut?', confirm_new_password: "Bekreft nytt passord", contact_us: "Kontakt oss", From ae335df11e84cf1b5c832eaaaaac49700ce72c01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Tue, 19 Mar 2024 05:51:01 +0100 Subject: [PATCH 08/18] Presist language user_preference --- src/UI/UIDesktop.js | 1 + src/helpers.js | 1 + src/i18n/i18n.js | 7 ++----- src/initgui.js | 3 --- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/UI/UIDesktop.js b/src/UI/UIDesktop.js index 3576fa80..8de879c9 100644 --- a/src/UI/UIDesktop.js +++ b/src/UI/UIDesktop.js @@ -503,6 +503,7 @@ async function UIDesktop(options){ // update local user preferences const user_preferences = { show_hidden_files: (await puter.kv.get('user_preferences.show_hidden_files')) === 'true', + language: (await puter.kv.get('user_preferences.language')) }; update_user_preferences(user_preferences); diff --git a/src/helpers.js b/src/helpers.js index a318fb73..f275342d 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -722,6 +722,7 @@ window.mutate_user_preferences = function(user_preferences_delta) { window.update_user_preferences = function(user_preferences) { window.user_preferences = user_preferences; localStorage.setItem('user_preferences', JSON.stringify(user_preferences)); + window.locale = user_preferences.language; } window.sendWindowWillCloseMsg = function(iframe_element) { diff --git a/src/i18n/i18n.js b/src/i18n/i18n.js index c3cea967..015cfaf7 100644 --- a/src/i18n/i18n.js +++ b/src/i18n/i18n.js @@ -10,11 +10,8 @@ window.i18n = function (key, replacements = [], encode_html = true) { replacements = [replacements]; } - // if locale is not set, default to en - if(!translations[window.locale]) - window.locale = 'en'; - - let str = translations[window.locale].dictionary[key]; + let language = translations[window.locale] ?? translations['en']; + let str = language.dictionary[key] ?? translations['en'].dictionary[key]; if (!str) { str = key; diff --git a/src/initgui.js b/src/initgui.js index b01bd6f1..5b0171b6 100644 --- a/src/initgui.js +++ b/src/initgui.js @@ -46,9 +46,6 @@ window.initgui = async function(){ if(window.api_origin && puter.APIOrigin !== window.api_origin) puter.setAPIOrigin(api_origin); - // determine locale - window.locale = window.user_preferences.language; - // Checks the type of device the user is on (phone, tablet, or desktop). // Depending on the device type, it sets a class attribute on the body tag // to style or script the page differently for each device type. From 0f867d90158a551cb8c30d6abcdbed892494c615 Mon Sep 17 00:00:00 2001 From: Nariman Jelveh Date: Mon, 18 Mar 2024 23:48:53 -0700 Subject: [PATCH 09/18] Allow `gamepad` on iframes --- src/UI/UIWindow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UI/UIWindow.js b/src/UI/UIWindow.js index f853aded..e1d80a17 100644 --- a/src/UI/UIWindow.js +++ b/src/UI/UIWindow.js @@ -295,7 +295,7 @@ async function UIWindow(options) { frameborder="0" webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" ${options.iframe_url ? 'src="'+ html_encode(options.iframe_url)+'"' : ''} ${options.iframe_srcdoc ? 'srcdoc="'+ html_encode(options.iframe_srcdoc) +'"' : ''} - allow = "accelerometer; camera; encrypted-media; display-capture; geolocation; gyroscope; microphone; midi; clipboard-read; clipboard-write; web-share; fullscreen;" + allow = "accelerometer; camera; encrypted-media; gamepad; display-capture; geolocation; gyroscope; microphone; midi; clipboard-read; clipboard-write; web-share; fullscreen;" sandbox="allow-forms allow-modals allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation allow-downloads allow-presentation">`; } // custom body From 0cf83fee29d66b61a6b90622e56c968afabc47f7 Mon Sep 17 00:00:00 2001 From: ZestYeah Date: Tue, 19 Mar 2024 13:53:32 +0100 Subject: [PATCH 10/18] Add a new translation_arabic --- src/i18n/translations/ar.js | 150 ++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 src/i18n/translations/ar.js diff --git a/src/i18n/translations/ar.js b/src/i18n/translations/ar.js new file mode 100644 index 00000000..a792da19 --- /dev/null +++ b/src/i18n/translations/ar.js @@ -0,0 +1,150 @@ +const de = { + name: "Arab", + code: "ar", + dictionary: { + access_granted_to: "دخول مسموح به", + add_existing_account: "إضافة حساب موجود", + all_fields_required: 'يجب ملء كل الفراغات', + apply: "تطبيق ", + ascending: 'رفع ', + background: "خلفية", + browse: "إبحث", + cancel: 'إلغاء', + center: 'وسط', + change_desktop_background: 'تغيير خلفية المكتب', + change_language: "تغيير اللغة", + change_password: "تغيير كلمة السر", + change_username: "تغيير إسم المستخدم", + close_all_windows: "غلق كل النوافذ", + color: 'اللون', + confirm_account_for_free_referral_storage_c2a: 'تأكيد الحساب لتخزين الإحالة المجانية ', + confirm_new_password: "تأكيد كلمة السر الجديدة", + contact_us: "اتصل بنا", + contain: 'إملء', + continue: "أكمل", + copy: 'أنسخ', + copy_link: "أنسخ الرابط", + copying: "ينسخ", + cover: 'غطاء', + create_account: "إنشاء حساب", + create_free_account: "إنشاء حساب مجاني", + create_shortcut: "تم تصميم المنتج", + current_password: "كلمة السر الحالية", + cut: 'إقطع', + date_modified: 'تغيير الوقت', + delete: 'حذف', + delete_permanently: "حذف دائم", + deploy_as_app: 'نشر كتطبيق', + descending: 'تنازلي', + desktop_background_fit: "خلفية سطح المكتب مناسبة" + dir_published_as_website: `%strong% Wurde veröffentlicht zu:`, + disassociate_dir: "فصل الدليل", + download: 'تحميل ', + downloading: "جارى التحميل ", + email: "بريد إلكتروني", + email_or_username: "البريد الإلكتروني أو اسم المستخدم ", + empty_trash: 'سلة مهملات فارغة', + empty_trash_confirmation:'تأكيد إفراغ سلة المهملات ', + emptying_trash: 'إفراغ القمامة', + feedback: "تعليق ", + feedback_c2a: "تعليق ", + feedback_sent_confirmation: "أرسلت ردود الفعل التكوين ", + forgot_pass_c2a: "هل نسيت كلمة السر؟", + from: "من", + general: "عام ", + get_a_copy_of_on_puter: `الحصول على نسخة على جهاز الكمبيوتر`, + get_copy_link: 'الحصول على رابط النسخ', + hide_all_windows: "إخفاء كافة النوافذ ", + html_document: 'وثيقة أتش تي أم أل', + image: 'صورة', + invite_link: "رابط الدعوة", + items_in_trash_cannot_be_renamed: `لا يمكن إعادة تسمية العناصر الموجودة في سلة المهملات `, + jpeg_image: 'صورة j p e g', + keep_in_taskbar: 'احتفظ بها في شريط المهام ', + log_in: "تسجيل الدخول", + log_out: 'تسجيل خروج', + move: 'يتحرك', + moving: "متحرك ", + my_websites: "مواقعي الإلكترونية ", + name: 'اسم', + name_cannot_be_empty: 'لا يمكن أن يكون الاسم فارغًا', + name_cannot_contain_double_period: "لا يمكن أن يحتوي الاسم على نقطة مزدوجة ", + name_cannot_contain_period: "لا يمكن أن يحتوي الاسم على فترة", + name_cannot_contain_slash: "لا يمكن أن يحتوي الاسم على شرطة مائلة", + name_must_be_string: "يجب أن يكون الاسم سلسلة", + name_too_long: `الاسم طويل جدًا`, + new: 'جديد', + new_folder: 'ملف جديد ', + new_password: "كلمة المرور الجديدة ", + new_username: "اسم مستخدم جديد ", + no_dir_associated_with_site: 'لا يوجد دليل مرتبط بالموقع', + no_websites_published: "لم يتم نشر أي مواقع", + ok: 'نعم', + open: "يفتح", + open_in_new_tab: "فتح في علامة تبويب جديدة", + open_in_new_window: "افتح في نافذة جديدة ", + open_with: "مفتوحة مع ", + password: "كلمة المرور ", + password_changed: "تم تغيير كلمة السر ", + passwords_do_not_match: 'كلمة المرور غير مطابقة', + paste: 'لصق', + paste_into_folder: "الصق داخل الملف", + pick_name_for_website: "اختيار اسم لموقع الويب ", + picture: "صورة ", + powered_by_puter_js: `مشغل بواسطةPuter.js`, + preparing: "إعداده", + preparing_for_upload: "التحضير للتحميل ", + properties: "ملكيات ", + publish: "ينشر", + publish_as_website: 'نشر كموقع على شبكة الإنترنت ', + recent: "مؤخرًا", + recover_password: "إستعادة كلمة المرور ", + refer_friends_c2a: "احصل على 1 جيجابايت لكل صديق يقوم بإنشاء حساب والتحقق منه مع Puter. صديقك يحصل على 1 غيغابايت أيضًا!", + refer_friends_social_media_c2a: `احصل على 1 غيغابايت من مساحة التخزين المجانية على موقع Puter.com!`, + refresh: 'ينعش ', + release_address_confirmation: `تأكيد عنوان الإصدار `, + remove_from_taskbar:'إزالة من شريط المهام ', + rename: 'إعادة تسمية', + repeat: 'تكرار', + resend_confirmation_code: "إعادة إرسال رمز التأكيد", + restore: "استرجاع", + save_account_to_get_copy_link: "حفظ الحساب للحصول على نسخة الرابط", + save_account_to_publish: 'حفظ الحساب للنشر', + save_session_c2a: 'حفظ جلسة ', + scan_qr_c2a: 'قم بمسح الرمز أدناه لتسجيل الدخول إلى هذه الجلسة من الأجهزة الأخرى', + select: "إختار", + select_color: 'إختر لون ', + send: "أرسل", + send_password_recovery_email: "إرسال بريد إلكتروني لاستعادة كلمة المرور", + session_saved: "تم حفظ الجلسة ", + set_new_password: "تعيين كلمة مرور جديدة ", + share_to: " شارك إلى", + show_all_windows: "إظهار كافة النوافذ ", + show_hidden: 'أظهر المخفي ', + sign_in_with_puter: "سجل الدخول ب Puter", + sign_up: "إشترك", + signing_in: "تسجيل الدخول", + size: 'الحجم', + sort_by: 'ترتيب حسب', + start: 'إبدأ ', + taking_longer_than_usual: 'يستغرق وقتا أطول من المعتاد ', + text_document: 'وثيقة نصية', + tos_fineprint: `بالنقر على "إنشاء حساب مجاني"، فإنك توافق على شروط الاستخدام und der حماية البياناتمن Puter ل`, + trash: 'نفاية', + type: 'اكتب', + undo: 'الغاء التحميل', + unzip: "فك الضغط", + upload: 'رفع ', + upload_here: 'ارفع هنا', + username: "اسم المستخدم ", + username_changed: 'تم تغيير اسم المستخدم', + versions: "الإصدارات ", + yes_release_it: 'نعم أطلقه', + you_have_been_referred_to_puter_by_a_friend: "لقد تمت إحالتك إلى Puter بواسطة صديق!", + zip: "ملف مضغوط", + } +}; + +export default ar; + } +}; From cafb91e0659dda79dd58558ae32624971fcfa328 Mon Sep 17 00:00:00 2001 From: ZestYeah Date: Tue, 19 Mar 2024 18:11:27 +0100 Subject: [PATCH 11/18] fixed_arab_translation --- src/i18n/translations/ar.js | 205 +++++++++++++------------- src/i18n/translations/translations.js | 5 +- 2 files changed, 106 insertions(+), 104 deletions(-) diff --git a/src/i18n/translations/ar.js b/src/i18n/translations/ar.js index a792da19..651b6e92 100644 --- a/src/i18n/translations/ar.js +++ b/src/i18n/translations/ar.js @@ -1,103 +1,103 @@ -const de = { - name: "Arab", - code: "ar", - dictionary: { - access_granted_to: "دخول مسموح به", - add_existing_account: "إضافة حساب موجود", - all_fields_required: 'يجب ملء كل الفراغات', - apply: "تطبيق ", - ascending: 'رفع ', - background: "خلفية", - browse: "إبحث", - cancel: 'إلغاء', - center: 'وسط', - change_desktop_background: 'تغيير خلفية المكتب', - change_language: "تغيير اللغة", - change_password: "تغيير كلمة السر", - change_username: "تغيير إسم المستخدم", - close_all_windows: "غلق كل النوافذ", - color: 'اللون', - confirm_account_for_free_referral_storage_c2a: 'تأكيد الحساب لتخزين الإحالة المجانية ', - confirm_new_password: "تأكيد كلمة السر الجديدة", - contact_us: "اتصل بنا", - contain: 'إملء', - continue: "أكمل", - copy: 'أنسخ', - copy_link: "أنسخ الرابط", - copying: "ينسخ", - cover: 'غطاء', - create_account: "إنشاء حساب", - create_free_account: "إنشاء حساب مجاني", - create_shortcut: "تم تصميم المنتج", - current_password: "كلمة السر الحالية", - cut: 'إقطع', - date_modified: 'تغيير الوقت', - delete: 'حذف', - delete_permanently: "حذف دائم", - deploy_as_app: 'نشر كتطبيق', - descending: 'تنازلي', - desktop_background_fit: "خلفية سطح المكتب مناسبة" - dir_published_as_website: `%strong% Wurde veröffentlicht zu:`, - disassociate_dir: "فصل الدليل", - download: 'تحميل ', - downloading: "جارى التحميل ", - email: "بريد إلكتروني", - email_or_username: "البريد الإلكتروني أو اسم المستخدم ", - empty_trash: 'سلة مهملات فارغة', - empty_trash_confirmation:'تأكيد إفراغ سلة المهملات ', - emptying_trash: 'إفراغ القمامة', - feedback: "تعليق ", - feedback_c2a: "تعليق ", - feedback_sent_confirmation: "أرسلت ردود الفعل التكوين ", - forgot_pass_c2a: "هل نسيت كلمة السر؟", - from: "من", - general: "عام ", - get_a_copy_of_on_puter: `الحصول على نسخة على جهاز الكمبيوتر`, - get_copy_link: 'الحصول على رابط النسخ', - hide_all_windows: "إخفاء كافة النوافذ ", - html_document: 'وثيقة أتش تي أم أل', - image: 'صورة', - invite_link: "رابط الدعوة", - items_in_trash_cannot_be_renamed: `لا يمكن إعادة تسمية العناصر الموجودة في سلة المهملات `, - jpeg_image: 'صورة j p e g', - keep_in_taskbar: 'احتفظ بها في شريط المهام ', - log_in: "تسجيل الدخول", - log_out: 'تسجيل خروج', - move: 'يتحرك', - moving: "متحرك ", - my_websites: "مواقعي الإلكترونية ", - name: 'اسم', - name_cannot_be_empty: 'لا يمكن أن يكون الاسم فارغًا', - name_cannot_contain_double_period: "لا يمكن أن يحتوي الاسم على نقطة مزدوجة ", - name_cannot_contain_period: "لا يمكن أن يحتوي الاسم على فترة", - name_cannot_contain_slash: "لا يمكن أن يحتوي الاسم على شرطة مائلة", - name_must_be_string: "يجب أن يكون الاسم سلسلة", - name_too_long: `الاسم طويل جدًا`, - new: 'جديد', - new_folder: 'ملف جديد ', - new_password: "كلمة المرور الجديدة ", - new_username: "اسم مستخدم جديد ", - no_dir_associated_with_site: 'لا يوجد دليل مرتبط بالموقع', - no_websites_published: "لم يتم نشر أي مواقع", - ok: 'نعم', - open: "يفتح", - open_in_new_tab: "فتح في علامة تبويب جديدة", - open_in_new_window: "افتح في نافذة جديدة ", - open_with: "مفتوحة مع ", - password: "كلمة المرور ", - password_changed: "تم تغيير كلمة السر ", - passwords_do_not_match: 'كلمة المرور غير مطابقة', - paste: 'لصق', - paste_into_folder: "الصق داخل الملف", - pick_name_for_website: "اختيار اسم لموقع الويب ", - picture: "صورة ", - powered_by_puter_js: `مشغل بواسطةPuter.js`, - preparing: "إعداده", - preparing_for_upload: "التحضير للتحميل ", - properties: "ملكيات ", - publish: "ينشر", - publish_as_website: 'نشر كموقع على شبكة الإنترنت ', - recent: "مؤخرًا", +const ar = { + name: "Arab", + code: "ar", + dictionary: { + access_granted_to: "دخول مسموح به", + add_existing_account: "إضافة حساب موجود", + all_fields_required: 'يجب ملء كل الفراغات', + apply: "تطبيق ", + ascending: 'تصاعدي ', + background: "خلفية", + browse: "إبحث", + cancel: 'إلغاء', + center: 'وسط', + change_desktop_background: 'تغيير خلفية المكتب', + change_language: "تغيير اللغة", + change_password: "تغيير كلمة السر", + change_username: "تغيير إسم المستخدم", + close_all_windows: "غلق كل النوافذ", + color: 'اللون', + confirm_account_for_free_referral_storage_c2a: 'تأكيد الحساب لتخزين الإحالة المجانية ', + confirm_new_password: "تأكيد كلمة السر الجديدة", + contact_us: "اتصل بنا", + contain: 'إملء', + continue: "أكمل", + copy: 'أنسخ', + copy_link: "أنسخ الرابط", + copying: "ينسخ", + cover: 'غطاء', + create_account: "إنشاء حساب", + create_free_account: "إنشاء حساب مجاني", + create_shortcut: "تم تصميم المنتج", + current_password: "كلمة السر الحالية", + cut: 'إقطع', + date_modified: 'تغيير الوقت', + delete: 'حذف', + delete_permanently: "حذف دائم", + deploy_as_app: 'نشر كتطبيق', + descending: 'تنازلي', + desktop_background_fit: "خلفية سطح المكتب مناسبة", + dir_published_as_website: `:تم نشر الدليل كموقع ويب`, + disassociate_dir: "فصل الدليل", + download: 'تحميل ', + downloading: "جارى التحميل ", + email: "بريد إلكتروني", + email_or_username: "البريد الإلكتروني أو اسم المستخدم ", + empty_trash: 'سلة مهملات فارغة', + empty_trash_confirmation:'تأكيد إفراغ سلة المهملات ', + emptying_trash: 'إفراغ القمامة', + feedback: "تعليق ", + feedback_c2a: "تعليق ", + feedback_sent_confirmation: "أرسلت ردود الفعل التكوين ", + forgot_pass_c2a: "هل نسيت كلمة السر؟", + from: "من", + general: "عام ", + get_a_copy_of_on_puter: `الحصول على نسخة على جهاز الكمبيوتر`, + get_copy_link: 'الحصول على رابط النسخ', + hide_all_windows: "إخفاء كافة النوافذ ", + html_document: 'وثيقة أتش تي أم أل', + image: 'صورة', + invite_link: "رابط الدعوة", + items_in_trash_cannot_be_renamed: `لا يمكن إعادة تسمية العناصر الموجودة في سلة المهملات `, + jpeg_image: 'صورة j p e g', + keep_in_taskbar: 'احتفظ بها في شريط المهام ', + log_in: "تسجيل الدخول", + log_out: 'تسجيل خروج', + move: 'يتحرك', + moving: "متحرك ", + my_websites: "مواقعي الإلكترونية ", + name: 'اسم', + name_cannot_be_empty: 'لا يمكن أن يكون الاسم فارغًا', + name_cannot_contain_double_period: "لا يمكن أن يحتوي الاسم على نقطة مزدوجة ", + name_cannot_contain_period: "لا يمكن أن يحتوي الاسم على فترة", + name_cannot_contain_slash: "لا يمكن أن يحتوي الاسم على شرطة مائلة", + name_must_be_string: "يجب أن يكون الاسم سلسلة", + name_too_long: `الاسم طويل جدًا`, + new: 'جديد', + new_folder: 'ملف جديد ', + new_password: "كلمة المرور الجديدة ", + new_username: "اسم مستخدم جديد ", + no_dir_associated_with_site: 'لا يوجد دليل مرتبط بالموقع', + no_websites_published: "لم يتم نشر أي مواقع", + ok: 'نعم', + open: "يفتح", + open_in_new_tab: "فتح في علامة تبويب جديدة", + open_in_new_window: "افتح في نافذة جديدة ", + open_with: "مفتوحة مع ", + password: "كلمة المرور ", + password_changed: "تم تغيير كلمة السر ", + passwords_do_not_match: 'كلمة المرور غير مطابقة', + paste: 'لصق', + paste_into_folder: "الصق داخل الملف", + pick_name_for_website: "اختيار اسم لموقع الويب ", + picture: "صورة ", + powered_by_puter_js: `مشغل بواسطةPuter.js`, + preparing: "إعداده", + preparing_for_upload: "التحضير للتحميل ", + properties: "ملكيات ", + publish: "ينشر", + publish_as_website: 'نشر كموقع على شبكة الإنترنت ', + recent: "مؤخرًا", recover_password: "إستعادة كلمة المرور ", refer_friends_c2a: "احصل على 1 جيجابايت لكل صديق يقوم بإنشاء حساب والتحقق منه مع Puter. صديقك يحصل على 1 غيغابايت أيضًا!", refer_friends_social_media_c2a: `احصل على 1 غيغابايت من مساحة التخزين المجانية على موقع Puter.com!`, @@ -129,7 +129,7 @@ const de = { start: 'إبدأ ', taking_longer_than_usual: 'يستغرق وقتا أطول من المعتاد ', text_document: 'وثيقة نصية', - tos_fineprint: `بالنقر على "إنشاء حساب مجاني"، فإنك توافق على شروط الاستخدام und der حماية البياناتمن Puter ل`, + tos_fineprint: `بالنقر على "إنشاء حساب مجاني"، فإنك توافق على شروط الاستخدام و حماية البيانات`, trash: 'نفاية', type: 'اكتب', undo: 'الغاء التحميل', @@ -146,5 +146,4 @@ const de = { }; export default ar; - } -}; + diff --git a/src/i18n/translations/translations.js b/src/i18n/translations/translations.js index 665e8b52..bed7fa33 100644 --- a/src/i18n/translations/translations.js +++ b/src/i18n/translations/translations.js @@ -12,6 +12,8 @@ import nn from './nn.js'; import ro from './ro.js'; import sv from './sv.js'; import zh from './zh.js'; +import zh from './zh.js'; +import ar from './ar.js'; export default { bn, @@ -28,4 +30,5 @@ export default { ro, sv, zh, -}; \ No newline at end of file + ar, +}; From a2e9ca7252baeb80a7047b925f60b47ab4c52594 Mon Sep 17 00:00:00 2001 From: LFakh <154886003+LFakh@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:17:14 +0100 Subject: [PATCH 12/18] Update translations.js --- src/i18n/translations/translations.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/i18n/translations/translations.js b/src/i18n/translations/translations.js index bed7fa33..a5b3dc57 100644 --- a/src/i18n/translations/translations.js +++ b/src/i18n/translations/translations.js @@ -12,7 +12,6 @@ import nn from './nn.js'; import ro from './ro.js'; import sv from './sv.js'; import zh from './zh.js'; -import zh from './zh.js'; import ar from './ar.js'; export default { From 591664a0452c825b4f01b08d8fa1f08523232676 Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Mar 2024 19:28:06 +0200 Subject: [PATCH 13/18] Add Armenian translation --- src/i18n/translations/hy.js | 148 ++++++++++++++++++++++++++ src/i18n/translations/translations.js | 2 + 2 files changed, 150 insertions(+) create mode 100644 src/i18n/translations/hy.js diff --git a/src/i18n/translations/hy.js b/src/i18n/translations/hy.js new file mode 100644 index 00000000..8a55a73a --- /dev/null +++ b/src/i18n/translations/hy.js @@ -0,0 +1,148 @@ +const hy = { + name: "Հայերեն", + code: "hy", + dictionary: { + access_granted_to: "Մուտքը տրված է՝", + add_existing_account: "Ավելացնել առկա հաշիվ", + all_fields_required: "Բոլոր դաշտերը պահանջվում են", + apply: "Կիրառել", + ascending: "Աճման կարգով", + background: "Ֆոն", + browse: "Թերթել", + cancel: "Չեղարկել", + center: "Կենտրոն", + change_desktop_background: "Փոխել աշխատասեղանի ֆոնը", + change_language: "Փոխել լեզուն", + change_password: "Փոխել գաղտնաբառը", + change_username: "Փոխել օգտանունը", + close_all_windows: "Փակել բոլոր պատուհանները", + color: "Գույն", + confirm_account_for_free_referral_storage_c2a: "Ստեղծեք հաշիվ և հաստատեք ձեր էլ․ հասցեն 1 ԳԲ անվճար պահեստ ստանալու համար: Ձեր ընկերը նույնպես կստանա 1 ԳԲ անվճար պահեստ:", + confirm_new_password: "Հաստատել նոր գաղտնաբառը", + contact_us: "Հետադարձ կապ", + contain: "Պարունակել", + continue: "Շարունակել", + copy: "Պատճենել", + copy_link: "Պատճենել հղումը", + copying: "Պատճենվում է", + cover: "Ծածկել", + create_account: "Ստեղծել հաշիվ", + create_free_account: "Ստեղծել անվճար հաշիվ", + create_shortcut: "Ստեղծել դյուրանցում", + current_password: "Ներկայիս գաղտնաբառ", + cut: "Կտրել", + date_modified: "Փոփոխման ամսապիվ", + delete: "Ջնջել", + delete_permanently: "Ընդմիշտ ջնջել", + deploy_as_app: "Տեղադրել որպես հավելված", + descending: "Նվազման կարգով", + desktop_background_fit: "Հարմարեցնել", + dir_published_as_website: "%strong% հրապարակվել է", + disassociate_dir: "Անջատել պանակը", + download: "Ներբեռնել", + downloading: "Ներբեռնում է", + email: "Էլեկտրոնային հասցե", + email_or_username: "Էլ․ հասցե կամ օգտանուն", + empty_trash: "Դատարկել աղբամանը", + empty_trash_confirmation: "Իսկապե՞ս ուզում եք ընդմիշտ ջնջել աղբարկղում գտնվող տարրերը:", + emptying_trash: "Աղբամանը դատարկվում է…", + feedback: "Հետադարձ կապ", + feedback_c2a: "Խնդրում ենք օգտագործել ստորև բերված ձևը ձեր կարծիքի, մեկնաբանությունների և վրիպակների մասին զեկուցելու համար:", + feedback_sent_confirmation: "Շնորհակալություն մեզ հետ կապնվելու համար: Եթե ​​ձեր հաշվի հետ կապված էլ. հասցե ունեք, հնարավորինս շուտ կպատասխանեք ձեզ:", + forgot_pass_c2a: "Մոռացե՞լ եք գաղտնաբառը", + from: "Ումից՝", + general: "Ընդհանուր", + get_a_copy_of_on_puter: "Ստանալ '%%'-ի պատճենը Puter.com-ում:", + get_copy_link: "Ստանալ պատճենված հղումը", + hide_all_windows: "Թաքցնել բոլոր պատուհանները", + html_document: "HTML նիշք", + image: "Պատկեր", + invite_link: "Հրավերի հղում", + items_in_trash_cannot_be_renamed: "Այս տարրը չի կարող վերանվանվել, քանի որ այն աղբարկղում է: Այս տարրը վերանվանելու համար նախ տեղափոխեք այն աղբարկղից:", + jpeg_image: "JPEG նիշք", + keep_in_taskbar: "Պահպանել խնդրագոտում", + log_in: "Մուտք գործել", + log_out: "Դուրս գալ", + move: "Տեղափոխել", + moving: "Տեղափոխվում է", + my_websites: "Իմ կայքերը", + name: "Անուն", + name_cannot_be_empty: "Անվան դաշտը չի կառող լինել դատարկ։", + name_cannot_contain_double_period: "Անունը չի կարող լինել '..' նիշը։", + name_cannot_contain_period: "Անունը չի կարող պարունակել '.' նիշը։", + name_cannot_contain_slash: "Անունը չի կարող պարունակել '/' նիշը։", + name_must_be_string: "Անունը կարող է լինել միայն տող:", + name_too_long: "Անունը չի կարող լինել ավելի քան %% նիշ:", + new: "Նոր", + new_folder: "Նոր պանակ", + new_password: "Նոր գաղտնաբառ", + new_username: "Նոր օգտանուն", + no_dir_associated_with_site: "Այս հասցեի հետ կապված պանակ չկա:", + no_websites_published: "Դուք դեռ ոչ մի կայք չեք հրապարակել։", + ok: "Լավ", + open: "Բացել", + open_in_new_tab: "Բացել նոր ներդիրով", + open_in_new_window: "Բացել նոր պատուհանում", + open_with: "Բացել հավելվածով", + password: "Գաղտնաբառ", + password_changed: "Գաղտնաբառը փոփոխված է", + passwords_do_not_match: "«Նոր գաղտնաբառ» և «Հաստատել նոր գաղտնաբառը» դաշտերը չեն համընկնում:", + paste: "Կպցնել", + paste_into_folder: "Տեղադրել պանակում", + pick_name_for_website: "Ընտրել անուն ձեր կայքի համար", + picture: "Նկար", + powered_by_puter_js: `Աջակցվում է Puter.js-ի կողմից`, + preparing: "Պատրաստվում է...", + preparing_for_upload: "Պատրաստվում է վերբեռնել...", + properties: "Հատկություններ", + publish: "Հրապարակել", + publish_as_website: "Հրապարակել որպես կայք", + recent: "Վերջին", + recover_password: "Վերականգնել գաղտնաբառը", + refer_friends_c2a: "Ստացեք 1 ԳԲ Փութերում յուրաքանչյուր հաշիվ ստեղծող և այն հաստատող ընկերոջ համար: Ձեր ընկերը նույնպես կստանա 1 ԳԲ պահեստ:", + refer_friends_social_media_c2a: "Ստացեք 1 ԳԲ անվճար պահեստ Puter.com-ում:", + refresh: "Թարմացնել", + release_address_confirmation: "Իսկապե՞ս ուզում եք ջնջել այս հասցեն:", + remove_from_taskbar: "Հանել խնդրագոտուց", + rename: "Վերանվանել", + repeat: "Կրկնել", + resend_confirmation_code: "Նորից ուղարկել հաստատման կոդը", + restore: "Վերականգնել", + save_account_to_get_copy_link: "Շարունակելու համար խնդրում ենք ստեղծել հաշիվ:", + save_account_to_publish: "Շարունակելու համար խնդրում ենք ստեղծել հաշիվ:", + save_session_c2a: "Ստեղծեք հաշիվ՝ ձեր ընթացիկ աշխատաշրջանը պահպանելու և աշխատանքը չկորցնելու համար:", + scan_qr_c2a: "Սկանավորեք ստորև նշված կոդը՝ այլ սարքերից այս աշխատաշրջան մուտք գործելու համար", + select: "Ընտրել", + select_color: "Ընտրել գույն…", + send: "Ուղարկել", + send_password_recovery_email: "Ուղարկել գաղտնաբառի վերականգնման էլ․փոստի նամակ", + session_saved: "Շնորհակալություն հաշիվ ստեղծելու համար: Այս աշխատաշրջանը պահպանվել է:", + set_new_password: "Սահմանել նոր գաղտնաբառ", + share_to: "Տարածել", + show_all_windows: "Ցույց տալ բոլոր պատուհանները", + show_hidden: "Ցույց տալ թաքնված տարրերը", + sign_in_with_puter: "Մուտք գործել Փութերի միջոցով", + sign_up: "Գրանցվել", + signing_in: "Մուտք է գործում", + size: "Չափ", + sort_by: "Տեսակավորել ըստ՝", + start: "Սկսել", + taking_longer_than_usual: "Սովորականից մի փոքր ավելի երկար է տևում: Խնդրում ենք սպասել...", + text_document: "Text նիշք", + tos_fineprint: `Սեղմելով «Ստեղծել անվճար հաշիվ»՝ դուք համաձայնում եք Փութերի ծառայությունների պայմաններին և գաղտնիության քաղաքականությանը:`, + trash: "Աղբաման", + type: "Տեսակ", + undo: "Հետարկել", + unzip: "Դուրս բերել", + upload: "Վերբեռնել", + upload_here: "Վերբեռնել այստեղ", + username: "Օգտանուն", + username_changed: "Օգտանունը հաջողությամբ թարմացվել է:", + versions: "Տարբերակներ", + yes_release_it: "Այո, ջնջել", + you_have_been_referred_to_puter_by_a_friend: "Դուք ուղղորդվել եք Փութեր ձեր ընկերոջ կողմից:", + zip: "Սեղմել ZIP նիշքի", + }, +}; + +export default hy; diff --git a/src/i18n/translations/translations.js b/src/i18n/translations/translations.js index 665e8b52..1ddd54a5 100644 --- a/src/i18n/translations/translations.js +++ b/src/i18n/translations/translations.js @@ -5,6 +5,7 @@ import en from './en.js'; import fa from './fa.js'; import fi from './fi.js'; import fr from './fr.js'; +import hy from './hy.js'; import it from './it.js'; import ko from './ko.js'; import nb from './nb.js'; @@ -21,6 +22,7 @@ export default { fa, fi, fr, + hy, it, ko, nb, From 2386c58950f974baaa8d550b27434e488f57c4f9 Mon Sep 17 00:00:00 2001 From: Jose Fernando Zazo Date: Tue, 19 Mar 2024 00:46:02 +0100 Subject: [PATCH 14/18] Add Spanish --- src/i18n/translations/es.js | 148 ++++++++++++++++++++++++++ src/i18n/translations/translations.js | 2 + 2 files changed, 150 insertions(+) create mode 100644 src/i18n/translations/es.js diff --git a/src/i18n/translations/es.js b/src/i18n/translations/es.js new file mode 100644 index 00000000..261f555f --- /dev/null +++ b/src/i18n/translations/es.js @@ -0,0 +1,148 @@ +const es = { + name: "Español", + code: "es", + dictionary: { + access_granted_to: "Acceso Permitido A", + add_existing_account: "Añadir una cuenta existente", + all_fields_required: 'Todos los campos son obligatorios.', + apply: "Aplicar", + ascending: 'Ascendiente', + background: "Fondo", + browse: "Buscar", + cancel: 'Cancelar', + center: 'Centrar', + change_desktop_background: 'Cambiar el fondo de pantalla…', + change_language: "Cambiar Idioma", + change_password: "Cambiar Contraseña", + change_username: "Cambiar Nombre de Usuario", + close_all_windows: "Cerrar todas las ventanas", + color: 'Color', + confirm_account_for_free_referral_storage_c2a: 'Crea una cuenta y confirma tu dirección de email para recibir 1 GB de almacenamiento gratuito. Tu amigo recibirá 1 GB de almacenamiento gratuito también.', + confirm_new_password: "Confirma la Nueva Contraseña", + contact_us: "Contáctanos", + contain: 'Contiene', + continue: "Continuar", + copy: 'Copiar', + copy_link: "Copiar Enlace", + copying: "Copiando", + cover: 'Cubrir', + create_account: "Crear una cuenta", + create_free_account: "Crear una cuenta gratuita", + create_shortcut: "Crear un acceso directo", + current_password: "Contraseña actual", + cut: 'Cortar', + date_modified: 'Fecha de modificación', + delete: 'Borrar', + delete_permanently: "Borrar permanentemente", + deploy_as_app: 'Desplegar como una aplicación', + descending: 'Descendiente', + desktop_background_fit: "Llenar", + dir_published_as_website: `%strong% ha sido publicado a:`, + disassociate_dir: "Desvincular directorio", + download: 'Descargar', + downloading: "Descargando", + email: "Email", + email_or_username: "Email o Nombre de Usuario", + empty_trash: 'Vaciar la papelera', + empty_trash_confirmation: `¿Estás seguro de que quieres borrar permanentemente todos los elementos de la Papelera?`, + emptying_trash: 'Vaciando la papelera…', + feedback: "Feedback", + feedback_c2a: "Por favor, usa el formulario para enviarnos tu feedback, comentario y reportar bugs.", + feedback_sent_confirmation: "Gracias por ponerte en contacto con nosotros. Si tienes un email vinculado con la cuenta, nos pondremos en contacto contigo tan pronto como podamos.", + forgot_pass_c2a: "¿Contraseña olvidada?", + from: "De", + general: "General", + get_a_copy_of_on_puter: `¡Consigue una copia de '%%' en Puter.com!`, + get_copy_link: 'Copiar el enlace', + hide_all_windows: "Ocultar Todas las Ventanas", + html_document: 'Documento HTML', + image: 'Imagen', + invite_link: "Enlace de invitación", + items_in_trash_cannot_be_renamed: `Este elemento no se puede renombrar porque está en la papelera. Para cambiar el nombre de este archivo, primero extráelo fuera de la misma.`, + jpeg_image: 'Imagen JPEG', + keep_in_taskbar: 'Fijar a la barra de tareas', + log_in: "Iniciar sesión", + log_out: 'Cerrar sesión', + move: 'Mover', + moving: "Moviendo", + my_websites: "Mis páginas web", + name: 'Nombre', + name_cannot_be_empty: 'El nombre no puede estar vacío.', + name_cannot_contain_double_period: "El nombre no puede ser el carácter '..'.", + name_cannot_contain_period: "El nombre no puede ser el carácter '.'.", + name_cannot_contain_slash: "El nombre no puede contener el carácter '/'.", + name_must_be_string: "El nombre debe ser una cadena de texto.", + name_too_long: `El nombre no puede tener más de %% caracteres.`, + new: 'Nuevo', + new_folder: 'Nueva carpeta', + new_password: "Nueva contraseña", + new_username: "Nuevo nombre de usuario", + no_dir_associated_with_site: 'No hay un directorio vinculado con esta dirección.', + no_websites_published: "No has publicado ninguna página web todavía.", + ok: 'OK', + open: "Abrir", + open_in_new_tab: "Abrir en una Nueva Pestaña", + open_in_new_window: "Abrir en una Nueva Ventana", + open_with: "Abrir Con", + password: "Contraseña", + password_changed: "Contraseña cambiada.", + passwords_do_not_match: '`Nueva Contraseña` y `Confirmar Nueva Contraseña` no coincide.', + paste: 'Pegar', + paste_into_folder: "Pegar en la Carpeta", + pick_name_for_website: "Escoge un nombre para tu página web:", + picture: "Imagen", + powered_by_puter_js: `Creado por Puter.js`, + preparing: "Preparando...", + preparing_for_upload: "Preparando para la subida...", + properties: "Propiedades", + publish: "Publicar", + publish_as_website: 'Publicar como página web', + recent: "Reciente", + recover_password: "Recuperar Contraseña", + refer_friends_c2a: "Consigue 1 GB por cada amigo que cree y confirme una cuenta en Puter ¡Tu amigo recibirá 1GB también!", + refer_friends_social_media_c2a: `¡Consigue 1 GB de almacenamiento gratuito en Puter.com!`, + refresh: 'Refrescar', + release_address_confirmation: `¿Estás seguro de liberar esta dirección?`, + remove_from_taskbar:'Eliminar de la barra de tareas', + rename: 'Renombrar', + repeat: 'Repetir', + resend_confirmation_code: "Reenviar Código de Confirmación", + restore: "Restaurar", + save_account_to_get_copy_link: "Por favor, crea una cuenta para continuar.", + save_account_to_publish: 'Por favor, crea una cuenta para continuar.', + save_session_c2a: 'Crea una cuenta para guardar tu sesión actual y evitar así perder tu trabajo.', + scan_qr_c2a: 'Escanea el código de debajo e inicia sesión desde otros dispositivos', + select: "Seleccionar", + select_color: 'Seleccionar color…', + send: "Enviar", + send_password_recovery_email: "Enviar la contraseña al correo de recuperación", + session_saved: "Gracias por crear una cuenta. La sesión ha sido guardada.", + set_new_password: "Establecer una nueva contraseña", + share_to: "Compartir con", + show_all_windows: "Mostrar todas las ventanas", + show_hidden: 'Mostrar ocultos', + sign_in_with_puter: "Inicia sesión con Puter", + sign_up: "Registrarse", + signing_in: "Registrándose…", + size: 'Tamaño', + sort_by: 'Ordenar Por', + start: 'Inicio', + taking_longer_than_usual: 'Tardando un poco más de lo usual. Por favor, espere...', + text_document: 'Documento de Texto', + tos_fineprint: `Pulsando sobre 'Crear una cuenta gratuita' aceptas los términos del servicio de Puter y la política de privacidad.`, + trash: 'Papelera', + type: 'Tipo', + undo: 'Deshacer', + unzip: "Descomprimir", + upload: 'Subir', + upload_here: 'Subir aquí', + username: "Nombre de usuario", + username_changed: 'Nombre de usuario actualizado correctamente.', + versions: "Versiones", + yes_release_it: 'Sí, liberar', + you_have_been_referred_to_puter_by_a_friend: "¡Has sido invitado a Puter por un amigo!", + zip: "Comprimir en Zip", + } +}; + +export default es; \ No newline at end of file diff --git a/src/i18n/translations/translations.js b/src/i18n/translations/translations.js index 665e8b52..35ae5f60 100644 --- a/src/i18n/translations/translations.js +++ b/src/i18n/translations/translations.js @@ -2,6 +2,7 @@ import bn from './bn.js' import da from './da.js'; import de from './de.js' import en from './en.js'; +import es from './es.js'; import fa from './fa.js'; import fi from './fi.js'; import fr from './fr.js'; @@ -18,6 +19,7 @@ export default { da, de, en, + es, fa, fi, fr, From 93b6404bc4442b72fbc73ca63bf573a4caf6885d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Tue, 19 Mar 2024 21:43:14 +0100 Subject: [PATCH 15/18] Add emoji language --- src/i18n/translations/emoji.js | 166 +++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 src/i18n/translations/emoji.js diff --git a/src/i18n/translations/emoji.js b/src/i18n/translations/emoji.js new file mode 100644 index 00000000..77f33a81 --- /dev/null +++ b/src/i18n/translations/emoji.js @@ -0,0 +1,166 @@ +const emojiLanguage = { + name: "🌍", + code: "🔤", + dictionary: { + access_granted_to: "🔓✅", + add_existing_account: "➕🔄👤", + all_fields_required: '📝🔒✅', + apply: "📋🔄", + ascending: '🔼', + background: "🖼️", + browse: "🔍", + cancel: '❌', + center: '🎯', + change_desktop_background: '🔄🖥️🖼️', + change_language: "🔄🌐", + change_password: "🔑🔄", + change_username: "👤🔄", + close_all_windows: "❌🔄🖼️🖼️", + close_all_windows_and_log_out: '❌🔄🖼️🖼️🔚', + color: '🎨', + confirm_account_for_free_referral_storage_c2a: '📧🆓👤📂📦🆓', + confirm_delete_multiple_items: '❓❌🗑️❓', + confirm_delete_single_item: '❓❌🗑️❓', + confirm_open_apps_log_out: '❓📦🔄🔚', + confirm_new_password: "🔑❓🔑", + contact_us: "📞📧", + contain: '📦🔍', + continue: "⏩", + copy: '📋', + copy_link: "🔗📋", + copying: "📋➡️", + cover: '📚👀', + create_account: "👤🆕", + create_free_account: "👤🆓", + create_shortcut: "📌🔄", + current_password: "🔑🔍", + cut: '✂️', + date_modified: '📅🔄', + delete: '🗑️', + delete_permanently: "🗑️🔚", + deploy_as_app: '🚀📱', + descending: '🔽', + desktop_background_fit: "🖥️🖼️", + dir_published_as_website: `📂📰🌐`, + disassociate_dir: "📂🔁❌", + download: '⬇️', + download_file: '⬇️📄', + downloading: "⬇️➡️", + email: "📧", + email_or_username: "📧👤", + empty_trash: '🗑️🆓', + empty_trash_confirmation: `❓🗑️❓`, + emptying_trash: '🗑️🆓...', + feedback: "📝💬", + feedback_c2a: "📝📤", + feedback_sent_confirmation: "📧👍", + forgot_pass_c2a: "🔑❓ (╯°□°)╯︵ ┻━┻", + from: "📩", + general: "⚙️", + get_a_copy_of_on_puter: `📩🔄📂`, + get_copy_link: '🔗🔄', + hide_all_windows: "🔚🔄🖼️🖼️", + html_document: '📄🌐', + image: '🖼️', + invite_link: "🔗📩", + item: '📂', + items_in_trash_cannot_be_renamed: `🗑️🆓❌`, + jpeg_image: '🖼️', + keep_in_taskbar: '📌📁', + loading: '🔄', + log_in: "👤🔓", + log_into_another_account_anyway: '👤🔄', + log_out: '🔚', + move: '➡️', + moving: "➡️...", + my_websites: "🌐👤", + name: '📛', + name_cannot_be_empty: '📛❌', + name_cannot_contain_double_period: "📛❌", + name_cannot_contain_period: "📛❌", + name_cannot_contain_slash: "📛❌", + name_must_be_string: "📛❌", + name_too_long: `📛❌`, + new: '🆕', + new_folder: '🆕📂', + new_password: "🆕🔑", + new_username: "🆕👤", + no: '❌', + no_dir_associated_with_site: '📂❌🌐', + no_websites_published: "🌐❌", + ok: '👌', + open: "📂🔄", + open_in_new_tab: "📂🔄🆕", + open_in_new_window: "📂🔄🖼️🆕", + open_with: "📂🔄🔓", + password: "🔑", + password_changed: "🔑✅", + passwords_do_not_match: '🔑❌🔑', + paste: '📋➡️', + paste_into_folder: "📂📋➡️", + pick_name_for_website: "🌐📛❓:", + picture: "🖼️", + powered_by_puter_js: `⚙️🔌🔗`, + preparing: "🔄🔜", + preparing_for_upload: "🔄🔜", + proceed_to_login: '👤🔍', + properties: "⚙️", + publish: "📰", + publish_as_website: '🌐📰', + plural_suffix: '🅰️', + recent: "🔙", + recover_password: "🔑🔄📧", + refer_friends_c2a: "👤📞📧👤", + refer_friends_social_media_c2a: `📲👤🆓`, + refresh: '🔄🔄', + release_address_confirmation: `❓🆓`, + remove_from_taskbar:'📌❌📁', + rename: '🔄📛', + repeat: '🔂', + replace: '🔄🔄', + replace_all: '🔄🔄', + resend_confirmation_code: "📧🔁", + restore: "🔄🔙", + save_account: '👤💾', + save_account_to_get_copy_link: "🆕👤📋🔗", + save_account_to_publish: '🆕👤📰', + save_session: '💾📂', + save_session_c2a: '🆕👤💾', + scan_qr_c2a: '📲🔍', + select: "👉", + selected: '✅', + select_color: '🎨👉', + send: "📤", + send_password_recovery_email: "📧🔑🔄", + session_saved: "👤💾🔄", + set_new_password: "🔑🆕", + share_to: "🔁➡️", + show_all_windows: "🔄🆓🖼️🖼️", + show_hidden: '👁️🔄', + sign_in_with_puter: "👤🆔", + sign_up: "👤🆕", + signing_in: "🔄👤", + size: '📏', + skip: '⏩', + sort_by: '🔢🔄', + start: '🚀', + taking_longer_than_usual: '⏳🔄', + text_document: '📄', + tos_fineprint: `👤📝📄`, + trash: '🗑️', + type: '🔡', + undo: '↩️', + unzip: "🔓📂", + upload: '⬆️', + upload_here: '⬆️📂', + username: "👤", + username_changed: '👤✅', + versions: "🔄📃", + yes: '✅', + yes_release_it: '✅🆓', + you_have_been_referred_to_puter_by_a_friend: "👤🔁🆓", + zip: "📂🔒", + } +}; + +export default emojiLanguage; \ No newline at end of file From b53c91d53ead25d56d65bf060f9f35e50590a700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Tue, 19 Mar 2024 21:45:02 +0100 Subject: [PATCH 16/18] Add missing translations.js entry --- src/i18n/translations/translations.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/translations/translations.js b/src/i18n/translations/translations.js index 9ede11c5..9b9dac3b 100644 --- a/src/i18n/translations/translations.js +++ b/src/i18n/translations/translations.js @@ -14,6 +14,7 @@ import nn from './nn.js'; import ro from './ro.js'; import sv from './sv.js'; import zh from './zh.js'; +import emojiLanguage from './emoji.js'; export default { bn, @@ -32,4 +33,5 @@ export default { ro, sv, zh, + emojiLanguage }; \ No newline at end of file From feb30d6d8331c3ac11200817eab7c8ecf43b406c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Nj=C3=A5stad?= Date: Tue, 19 Mar 2024 21:52:51 +0100 Subject: [PATCH 17/18] Fix --- src/i18n/translations/emoji.js | 6 +++--- src/i18n/translations/translations.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/i18n/translations/emoji.js b/src/i18n/translations/emoji.js index 77f33a81..ebe7d9a3 100644 --- a/src/i18n/translations/emoji.js +++ b/src/i18n/translations/emoji.js @@ -1,6 +1,6 @@ -const emojiLanguage = { +const emoji = { name: "🌍", - code: "🔤", + code: "emoji", dictionary: { access_granted_to: "🔓✅", add_existing_account: "➕🔄👤", @@ -163,4 +163,4 @@ const emojiLanguage = { } }; -export default emojiLanguage; \ No newline at end of file +export default emoji; \ No newline at end of file diff --git a/src/i18n/translations/translations.js b/src/i18n/translations/translations.js index 9b9dac3b..1c482e0a 100644 --- a/src/i18n/translations/translations.js +++ b/src/i18n/translations/translations.js @@ -14,7 +14,7 @@ import nn from './nn.js'; import ro from './ro.js'; import sv from './sv.js'; import zh from './zh.js'; -import emojiLanguage from './emoji.js'; +import emoji from './emoji.js'; export default { bn, @@ -33,5 +33,5 @@ export default { ro, sv, zh, - emojiLanguage + emoji }; \ No newline at end of file From 2e26397db8578d3d876e1848e2c48b77dbca388b Mon Sep 17 00:00:00 2001 From: Nariman Jelveh Date: Tue, 19 Mar 2024 16:24:23 -0700 Subject: [PATCH 18/18] fix indentation --- src/i18n/translations/ar.js | 288 ++++++++++++++++++------------------ 1 file changed, 144 insertions(+), 144 deletions(-) diff --git a/src/i18n/translations/ar.js b/src/i18n/translations/ar.js index 651b6e92..41429638 100644 --- a/src/i18n/translations/ar.js +++ b/src/i18n/translations/ar.js @@ -1,148 +1,148 @@ const ar = { - name: "Arab", - code: "ar", - dictionary: { - access_granted_to: "دخول مسموح به", - add_existing_account: "إضافة حساب موجود", - all_fields_required: 'يجب ملء كل الفراغات', - apply: "تطبيق ", - ascending: 'تصاعدي ', - background: "خلفية", - browse: "إبحث", - cancel: 'إلغاء', - center: 'وسط', - change_desktop_background: 'تغيير خلفية المكتب', - change_language: "تغيير اللغة", - change_password: "تغيير كلمة السر", - change_username: "تغيير إسم المستخدم", - close_all_windows: "غلق كل النوافذ", - color: 'اللون', - confirm_account_for_free_referral_storage_c2a: 'تأكيد الحساب لتخزين الإحالة المجانية ', - confirm_new_password: "تأكيد كلمة السر الجديدة", - contact_us: "اتصل بنا", - contain: 'إملء', - continue: "أكمل", - copy: 'أنسخ', - copy_link: "أنسخ الرابط", - copying: "ينسخ", - cover: 'غطاء', - create_account: "إنشاء حساب", - create_free_account: "إنشاء حساب مجاني", - create_shortcut: "تم تصميم المنتج", - current_password: "كلمة السر الحالية", - cut: 'إقطع', - date_modified: 'تغيير الوقت', - delete: 'حذف', - delete_permanently: "حذف دائم", - deploy_as_app: 'نشر كتطبيق', - descending: 'تنازلي', - desktop_background_fit: "خلفية سطح المكتب مناسبة", - dir_published_as_website: `:تم نشر الدليل كموقع ويب`, - disassociate_dir: "فصل الدليل", - download: 'تحميل ', - downloading: "جارى التحميل ", - email: "بريد إلكتروني", - email_or_username: "البريد الإلكتروني أو اسم المستخدم ", - empty_trash: 'سلة مهملات فارغة', - empty_trash_confirmation:'تأكيد إفراغ سلة المهملات ', - emptying_trash: 'إفراغ القمامة', - feedback: "تعليق ", - feedback_c2a: "تعليق ", - feedback_sent_confirmation: "أرسلت ردود الفعل التكوين ", - forgot_pass_c2a: "هل نسيت كلمة السر؟", - from: "من", - general: "عام ", - get_a_copy_of_on_puter: `الحصول على نسخة على جهاز الكمبيوتر`, - get_copy_link: 'الحصول على رابط النسخ', - hide_all_windows: "إخفاء كافة النوافذ ", - html_document: 'وثيقة أتش تي أم أل', - image: 'صورة', - invite_link: "رابط الدعوة", - items_in_trash_cannot_be_renamed: `لا يمكن إعادة تسمية العناصر الموجودة في سلة المهملات `, - jpeg_image: 'صورة j p e g', - keep_in_taskbar: 'احتفظ بها في شريط المهام ', - log_in: "تسجيل الدخول", - log_out: 'تسجيل خروج', - move: 'يتحرك', - moving: "متحرك ", - my_websites: "مواقعي الإلكترونية ", - name: 'اسم', - name_cannot_be_empty: 'لا يمكن أن يكون الاسم فارغًا', - name_cannot_contain_double_period: "لا يمكن أن يحتوي الاسم على نقطة مزدوجة ", - name_cannot_contain_period: "لا يمكن أن يحتوي الاسم على فترة", - name_cannot_contain_slash: "لا يمكن أن يحتوي الاسم على شرطة مائلة", - name_must_be_string: "يجب أن يكون الاسم سلسلة", - name_too_long: `الاسم طويل جدًا`, - new: 'جديد', - new_folder: 'ملف جديد ', - new_password: "كلمة المرور الجديدة ", - new_username: "اسم مستخدم جديد ", - no_dir_associated_with_site: 'لا يوجد دليل مرتبط بالموقع', - no_websites_published: "لم يتم نشر أي مواقع", - ok: 'نعم', - open: "يفتح", - open_in_new_tab: "فتح في علامة تبويب جديدة", - open_in_new_window: "افتح في نافذة جديدة ", - open_with: "مفتوحة مع ", - password: "كلمة المرور ", - password_changed: "تم تغيير كلمة السر ", - passwords_do_not_match: 'كلمة المرور غير مطابقة', - paste: 'لصق', - paste_into_folder: "الصق داخل الملف", - pick_name_for_website: "اختيار اسم لموقع الويب ", - picture: "صورة ", - powered_by_puter_js: `مشغل بواسطةPuter.js`, - preparing: "إعداده", - preparing_for_upload: "التحضير للتحميل ", - properties: "ملكيات ", - publish: "ينشر", - publish_as_website: 'نشر كموقع على شبكة الإنترنت ', - recent: "مؤخرًا", - recover_password: "إستعادة كلمة المرور ", - refer_friends_c2a: "احصل على 1 جيجابايت لكل صديق يقوم بإنشاء حساب والتحقق منه مع Puter. صديقك يحصل على 1 غيغابايت أيضًا!", - refer_friends_social_media_c2a: `احصل على 1 غيغابايت من مساحة التخزين المجانية على موقع Puter.com!`, - refresh: 'ينعش ', - release_address_confirmation: `تأكيد عنوان الإصدار `, - remove_from_taskbar:'إزالة من شريط المهام ', - rename: 'إعادة تسمية', - repeat: 'تكرار', - resend_confirmation_code: "إعادة إرسال رمز التأكيد", - restore: "استرجاع", - save_account_to_get_copy_link: "حفظ الحساب للحصول على نسخة الرابط", - save_account_to_publish: 'حفظ الحساب للنشر', - save_session_c2a: 'حفظ جلسة ', - scan_qr_c2a: 'قم بمسح الرمز أدناه لتسجيل الدخول إلى هذه الجلسة من الأجهزة الأخرى', - select: "إختار", - select_color: 'إختر لون ', - send: "أرسل", - send_password_recovery_email: "إرسال بريد إلكتروني لاستعادة كلمة المرور", - session_saved: "تم حفظ الجلسة ", - set_new_password: "تعيين كلمة مرور جديدة ", - share_to: " شارك إلى", - show_all_windows: "إظهار كافة النوافذ ", - show_hidden: 'أظهر المخفي ', - sign_in_with_puter: "سجل الدخول ب Puter", - sign_up: "إشترك", - signing_in: "تسجيل الدخول", - size: 'الحجم', - sort_by: 'ترتيب حسب', - start: 'إبدأ ', - taking_longer_than_usual: 'يستغرق وقتا أطول من المعتاد ', - text_document: 'وثيقة نصية', - tos_fineprint: `بالنقر على "إنشاء حساب مجاني"، فإنك توافق على شروط الاستخدام و حماية البيانات`, - trash: 'نفاية', - type: 'اكتب', - undo: 'الغاء التحميل', - unzip: "فك الضغط", - upload: 'رفع ', - upload_here: 'ارفع هنا', - username: "اسم المستخدم ", - username_changed: 'تم تغيير اسم المستخدم', - versions: "الإصدارات ", - yes_release_it: 'نعم أطلقه', - you_have_been_referred_to_puter_by_a_friend: "لقد تمت إحالتك إلى Puter بواسطة صديق!", - zip: "ملف مضغوط", - } + name: "العربية", + code: "ar", + dictionary: { + access_granted_to: "دخول مسموح به", + add_existing_account: "إضافة حساب موجود", + all_fields_required: 'يجب ملء كل الفراغات', + apply: "تطبيق ", + ascending: 'تصاعدي ', + background: "خلفية", + browse: "إبحث", + cancel: 'إلغاء', + center: 'وسط', + change_desktop_background: 'تغيير خلفية المكتب', + change_language: "تغيير اللغة", + change_password: "تغيير كلمة السر", + change_username: "تغيير إسم المستخدم", + close_all_windows: "غلق كل النوافذ", + color: 'اللون', + confirm_account_for_free_referral_storage_c2a: 'تأكيد الحساب لتخزين الإحالة المجانية ', + confirm_new_password: "تأكيد كلمة السر الجديدة", + contact_us: "اتصل بنا", + contain: 'إملء', + continue: "أكمل", + copy: 'أنسخ', + copy_link: "أنسخ الرابط", + copying: "ينسخ", + cover: 'غطاء', + create_account: "إنشاء حساب", + create_free_account: "إنشاء حساب مجاني", + create_shortcut: "تم تصميم المنتج", + current_password: "كلمة السر الحالية", + cut: 'إقطع', + date_modified: 'تغيير الوقت', + delete: 'حذف', + delete_permanently: "حذف دائم", + deploy_as_app: 'نشر كتطبيق', + descending: 'تنازلي', + desktop_background_fit: "خلفية سطح المكتب مناسبة", + dir_published_as_website: `:تم نشر الدليل كموقع ويب`, + disassociate_dir: "فصل الدليل", + download: 'تحميل ', + downloading: "جارى التحميل ", + email: "بريد إلكتروني", + email_or_username: "البريد الإلكتروني أو اسم المستخدم ", + empty_trash: 'سلة مهملات فارغة', + empty_trash_confirmation:'تأكيد إفراغ سلة المهملات ', + emptying_trash: 'إفراغ القمامة', + feedback: "تعليق ", + feedback_c2a: "تعليق ", + feedback_sent_confirmation: "أرسلت ردود الفعل التكوين ", + forgot_pass_c2a: "هل نسيت كلمة السر؟", + from: "من", + general: "عام ", + get_a_copy_of_on_puter: `الحصول على نسخة على جهاز الكمبيوتر`, + get_copy_link: 'الحصول على رابط النسخ', + hide_all_windows: "إخفاء كافة النوافذ ", + html_document: 'وثيقة أتش تي أم أل', + image: 'صورة', + invite_link: "رابط الدعوة", + items_in_trash_cannot_be_renamed: `لا يمكن إعادة تسمية العناصر الموجودة في سلة المهملات `, + jpeg_image: 'صورة j p e g', + keep_in_taskbar: 'احتفظ بها في شريط المهام ', + log_in: "تسجيل الدخول", + log_out: 'تسجيل خروج', + move: 'يتحرك', + moving: "متحرك ", + my_websites: "مواقعي الإلكترونية ", + name: 'اسم', + name_cannot_be_empty: 'لا يمكن أن يكون الاسم فارغًا', + name_cannot_contain_double_period: "لا يمكن أن يحتوي الاسم على نقطة مزدوجة ", + name_cannot_contain_period: "لا يمكن أن يحتوي الاسم على فترة", + name_cannot_contain_slash: "لا يمكن أن يحتوي الاسم على شرطة مائلة", + name_must_be_string: "يجب أن يكون الاسم سلسلة", + name_too_long: `الاسم طويل جدًا`, + new: 'جديد', + new_folder: 'ملف جديد ', + new_password: "كلمة المرور الجديدة ", + new_username: "اسم مستخدم جديد ", + no_dir_associated_with_site: 'لا يوجد دليل مرتبط بالموقع', + no_websites_published: "لم يتم نشر أي مواقع", + ok: 'نعم', + open: "يفتح", + open_in_new_tab: "فتح في علامة تبويب جديدة", + open_in_new_window: "افتح في نافذة جديدة ", + open_with: "مفتوحة مع ", + password: "كلمة المرور ", + password_changed: "تم تغيير كلمة السر ", + passwords_do_not_match: 'كلمة المرور غير مطابقة', + paste: 'لصق', + paste_into_folder: "الصق داخل الملف", + pick_name_for_website: "اختيار اسم لموقع الويب ", + picture: "صورة ", + powered_by_puter_js: `مشغل بواسطةPuter.js`, + preparing: "إعداده", + preparing_for_upload: "التحضير للتحميل ", + properties: "ملكيات ", + publish: "ينشر", + publish_as_website: 'نشر كموقع على شبكة الإنترنت ', + recent: "مؤخرًا", + recover_password: "إستعادة كلمة المرور ", + refer_friends_c2a: "احصل على 1 جيجابايت لكل صديق يقوم بإنشاء حساب والتحقق منه مع Puter. صديقك يحصل على 1 غيغابايت أيضًا!", + refer_friends_social_media_c2a: `احصل على 1 غيغابايت من مساحة التخزين المجانية على موقع Puter.com!`, + refresh: 'ينعش ', + release_address_confirmation: `تأكيد عنوان الإصدار `, + remove_from_taskbar:'إزالة من شريط المهام ', + rename: 'إعادة تسمية', + repeat: 'تكرار', + resend_confirmation_code: "إعادة إرسال رمز التأكيد", + restore: "استرجاع", + save_account_to_get_copy_link: "حفظ الحساب للحصول على نسخة الرابط", + save_account_to_publish: 'حفظ الحساب للنشر', + save_session_c2a: 'حفظ جلسة ', + scan_qr_c2a: 'قم بمسح الرمز أدناه لتسجيل الدخول إلى هذه الجلسة من الأجهزة الأخرى', + select: "إختار", + select_color: 'إختر لون ', + send: "أرسل", + send_password_recovery_email: "إرسال بريد إلكتروني لاستعادة كلمة المرور", + session_saved: "تم حفظ الجلسة ", + set_new_password: "تعيين كلمة مرور جديدة ", + share_to: " شارك إلى", + show_all_windows: "إظهار كافة النوافذ ", + show_hidden: 'أظهر المخفي ', + sign_in_with_puter: "سجل الدخول ب Puter", + sign_up: "إشترك", + signing_in: "تسجيل الدخول", + size: 'الحجم', + sort_by: 'ترتيب حسب', + start: 'إبدأ ', + taking_longer_than_usual: 'يستغرق وقتا أطول من المعتاد ', + text_document: 'وثيقة نصية', + tos_fineprint: `بالنقر على "إنشاء حساب مجاني"، فإنك توافق على شروط الاستخدام و حماية البيانات`, + trash: 'نفاية', + type: 'اكتب', + undo: 'الغاء التحميل', + unzip: "فك الضغط", + upload: 'رفع ', + upload_here: 'ارفع هنا', + username: "اسم المستخدم ", + username_changed: 'تم تغيير اسم المستخدم', + versions: "الإصدارات ", + yes_release_it: 'نعم أطلقه', + you_have_been_referred_to_puter_by_a_friend: "لقد تمت إحالتك إلى Puter بواسطة صديق!", + zip: "ملف مضغوط", + } }; export default ar;