diff --git a/src/IPC.js b/src/IPC.js index 5520ee00..d1b5cb82 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,19 @@ 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'), + value: '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 3576fa80..ccb2121e 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); @@ -1222,18 +1223,19 @@ $(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: `

${i18n('confirm_open_apps_log_out')}

`, buttons:[ { - label: 'Close Windows and Log Out', + label: i18n('close_all_Windows_and_log_out'), + value: 'close_and_log_out', type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') }, ] }) - if(alert_resp === 'Close Windows and Log Out') + if(alert_resp === 'close_and_log_out') logout(); } // no open windows @@ -1310,16 +1312,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 102a0205..00b10e77 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 += ``; @@ -854,14 +854,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') }, ] }) @@ -1272,14 +1272,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: i18n('confirm_delete_single_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..07b0d8e4 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 @@ -314,7 +314,7 @@ async function UIWindow(options) { // Loading spinner h += `
`; h +=`circle anim`; - h += `

Loading...

`; + h += `

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

`; h += `
`; } @@ -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; } @@ -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 54397920..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){ @@ -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 a318fb73..8738632b 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) { @@ -1030,7 +1031,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', }, @@ -1564,17 +1565,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: 'Replace', type: 'primary'}, - ... (clipboard.length > 1) ? [{label: 'Replace all'}] : [], - ... (clipboard.length > 1) ? [{label: 'Skip'}] : [{label: '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; } } @@ -1661,17 +1662,17 @@ 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', 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; } } @@ -2207,15 +2208,16 @@ 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'), + value: 'download_file', type: 'primary', }, { - label: 'Cancel' + label: i18n('cancel') } ]) - if(alert_resp === 'Download File'){ + if(alert_resp === 'download_file'){ trigger_download([item_path]); } return; @@ -2585,17 +2587,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: 'Replace', type: 'primary',}, - ... (el_items.length > 1) ? [{label: 'Replace all'}] : [], - ... (el_items.length > 1) ? [{label: 'Skip'}] : [{label: '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; } } @@ -2972,15 +2974,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/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/i18n/translations/ar.js b/src/i18n/translations/ar.js new file mode 100644 index 00000000..41429638 --- /dev/null +++ b/src/i18n/translations/ar.js @@ -0,0 +1,149 @@ +const ar = { + 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; + diff --git a/src/i18n/translations/emoji.js b/src/i18n/translations/emoji.js new file mode 100644 index 00000000..ebe7d9a3 --- /dev/null +++ b/src/i18n/translations/emoji.js @@ -0,0 +1,166 @@ +const emoji = { + name: "🌍", + code: "emoji", + 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 emoji; \ No newline at end of file diff --git a/src/i18n/translations/en.js b/src/i18n/translations/en.js index 74285690..0c02478c 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?', + 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", 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", @@ -58,10 +63,13 @@ 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', move: 'Move', moving: "Moving", @@ -77,6 +85,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,9 +103,11 @@ 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', + 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!", @@ -106,13 +117,18 @@ 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", + selected: 'selected', select_color: 'Select color…', send: "Send", send_password_recovery_email: "Send Password Recovery Email", @@ -125,6 +141,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 +156,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/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/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/nb.js b/src/i18n/translations/nb.js index d4e389ea..dc173ed2 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?', + 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", 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", @@ -58,10 +63,13 @@ 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", move: "Flytt", moving: "Flytter", @@ -77,6 +85,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,8 +104,10 @@ 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", + 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.", @@ -106,13 +117,18 @@ 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", + selected: 'valgt', select_color: "Velg farge…", send: "Send", send_password_recovery_email: "Send e-post for gjenoppretting av passord", @@ -125,6 +141,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 +157,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/i18n/translations/translations.js b/src/i18n/translations/translations.js index 665e8b52..b40ec154 100644 --- a/src/i18n/translations/translations.js +++ b/src/i18n/translations/translations.js @@ -1,10 +1,13 @@ +import ar from './ar.js'; 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'; +import hy from './hy.js'; import it from './it.js'; import ko from './ko.js'; import nb from './nb.js'; @@ -12,15 +15,19 @@ import nn from './nn.js'; import ro from './ro.js'; import sv from './sv.js'; import zh from './zh.js'; +import emoji from './emoji.js'; export default { + ar, bn, da, de, en, + es, fa, fi, fr, + hy, it, ko, nb, @@ -28,4 +35,5 @@ export default { ro, sv, zh, + emoji }; \ No newline at end of file diff --git a/src/initgui.js b/src/initgui.js index b01bd6f1..b59307b7 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. @@ -530,12 +527,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', }, ], @@ -887,12 +884,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', }, ], @@ -1328,14 +1325,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') }, ] }) @@ -1357,14 +1354,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') }, ] }) @@ -1878,26 +1875,28 @@ 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'), + value: 'save_account', type: 'primary', }, { - label: 'Log Out', + label: i18n('log_out'), + value: 'log_out', type: 'danger', }, { - label: 'Cancel', + label: i18n('cancel'), }, ] }) - 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{