console page: load only the active language's strings

The page embedded all 21 languages' cw_* strings (174 KiB of the 220 KiB gzip
budget). Now it embeds English only; every other language is a separate
build artifact (dist-console/strings/<lang>.json) gzip'd into the helper and
served at GET /strings/<lang>.json (Host/Origin checked, no token, immutable
year-long cache; the page asks with ?v=<hash of the strings>). The page shows
English until the chosen language arrives, falls back to English per key, and
stays in English (logged once) when a load fails.

Page: 607.1 KiB raw / 174.4 KiB gzip -> 357.5 KiB raw / 112.5 KiB gzip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RxCGb8Asp1A1AQYiv1kbgS
This commit is contained in:
phantomptrandClaude Opus 5.5 committed 2026-10-17 10:49:30 -07:00
1 parent 4d7575ec3b
commit d435ac27db
41 files changed
+5522 -4952

No files matched your search

+6
View File
@@ -890,6 +890,12 @@ test-payload: payload
-o /tmp/ps5upload-webui-http-selftest \
$(PAYLOAD_DIR)/tests/webui_http_selftest.c
@/tmp/ps5upload-webui-http-selftest
@echo "Running webui strings lookup self-test (host build)..."
@cc -O2 -Wall -Wextra -Werror -I$(PAYLOAD_DIR)/include \
-o /tmp/ps5upload-webui-strings-selftest \
$(PAYLOAD_DIR)/tests/webui_strings_selftest.c $(PAYLOAD_DIR)/src/webui_strings.c
@/tmp/ps5upload-webui-strings-selftest
@echo "✓ GET /strings/<lang>.json answers only the embedded languages, never a crafted path"
@echo "Running webui auth self-test (host build)..."
@cc -O2 -Wall -Wextra -Werror -I$(PAYLOAD_DIR)/include \
-o /tmp/ps5upload-webui-auth-selftest \
+2
View File
@@ -1,2 +1,4 @@
/** The PC app's dark-theme tokens, served by vite.console.config.ts (pcTokens). */
declare module "virtual:pc-tokens.css";
/** The strings' build hash, defined by vite.console.config.ts (consoleStrings); absent under vitest. */
declare const __CW_STRINGS_V__: string | undefined;
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "إجراءات",
"cw_cheats_apply": "تطبيق",
"cw_cheats_engine_off": "محرك الشفرات متوقف. يبدأ عند تشغيل أي شفرة.",
"cw_cheats_err_changed": "تغيّرت ملفات الشفرات. أُعيدت قراءة القائمة.",
"cw_cheats_err_load": "تعذّرت قراءة الشفرات ({code}). اضغط تحديث للمحاولة مرة أخرى.",
"cw_cheats_err_module": "تحتاج هذه الشفرة إلى جزء من اللعبة لم يُحمَّل بعد. حاول لاحقًا أثناء اللعب.",
"cw_cheats_err_toggle": "تعذّر تبديل الشفرة ({code}).",
"cw_cheats_exited": "تم إغلاق اللعبة.",
"cw_cheats_exited_next": "شغّلها مرة أخرى وستعود شفراتها إلى هنا.",
"cw_cheats_how": "يقوم ✕ أو □ بتشغيل الشفرة المحددة أو إيقافها.",
"cw_cheats_loading": "جارٍ تحميل الشفرات…",
"cw_cheats_no_game": "لا توجد لعبة قيد التشغيل.",
"cw_cheats_no_game_next": "شغّل لعبة، ثم افتح الشفرات.",
"cw_cheats_none": "لا توجد شفرات لهذه اللعبة.",
"cw_cheats_none_next": "أضف شفرات لهذه اللعبة من تطبيق PS5Upload على حاسوبك.",
"cw_cheats_off": "إيقاف",
"cw_cheats_on": "تشغيل",
"cw_cheats_refresh": "تحديث",
"cw_cheats_switching": "جارٍ التبديل…",
"cw_cheats_title": "الشفرات",
"cw_cheats_truncated": "لا تتسع هذه الصفحة لكل الشفرات. يعرضها تطبيق PS5Upload على حاسوبك كلها.",
"cw_ctl_last": "آخر زر مضغوط:",
"cw_ctl_logging": "ما دامت هذه الشاشة مفتوحة، تُحفظ ضغطات الأزرار في سجل صغير على هذا الجهاز لتحسين دعم وحدة التحكم.",
"cw_ctl_not_yet": "لم يُستقبل بعد",
"cw_ctl_ok": "يعمل",
"cw_ctl_other_key": "مفتاح آخر: {key}",
"cw_ctl_picture": "وحدة تحكم DualSense",
"cw_ctl_press_each": "اضغط كل زر مرة واحدة لترى ما تستقبله هذه الصفحة. الزر ○ يغلق هذه الشاشة، فاضغطه في النهاية.",
"cw_ctl_received": "وصل",
"cw_ctl_received_job": "وصل: {job} (غير مستخدم بعد)",
"cw_ctl_system": "يستخدمه PS5",
"cw_ctl_title": "التحكم",
"cw_ctl_works": "يعمل: {job}",
"cw_dialog_cancel": "إلغاء",
"cw_files_bad_name": "استخدم اسمًا بدون «/».",
"cw_files_batch_copy": "جارٍ نسخ {at} من {total}…",
"cw_files_batch_delete": "جارٍ حذف {at} من {total}…",
"cw_files_batch_failed": "فشل {n}.",
"cw_files_batch_move": "جارٍ نقل {at} من {total}…",
"cw_files_batch_stop": "إيقاف",
"cw_files_batch_stopped": "تم الإيقاف. لم يبدأ {n}.",
"cw_files_batch_stopping": "سيتوقف بعد هذا العنصر…",
"cw_files_close": "إغلاق",
"cw_files_copy_to": "نسخ إلى…",
"cw_files_del_body": "تُحذف المجلدات مع كل ما فيها. لا يمكن التراجع عن ذلك.",
"cw_files_del_list_many": "«{name}» و{more} غيره.",
"cw_files_del_many": "حذف {n} عناصر؟",
"cw_files_del_one": "حذف «{name}»؟",
"cw_files_delete": "حذف",
"cw_files_done": "تم.",
"cw_files_drives": "محركات الأقراص",
"cw_files_empty": "هذا المجلد فارغ.",
"cw_files_empty_next": "انسخ ملفات إلى هنا من تطبيق PS5Upload على حاسوبك، أو أنشئ مجلدًا جديدًا.",
"cw_files_err_denied": "لا يسمح الجهاز بالتغييرات هنا.",
"cw_files_err_exists": "يوجد عنصر بهذا الاسم بالفعل.",
"cw_files_err_into_itself": "لا يمكن وضع مجلد داخل نفسه أو داخل أحد مجلداته الفرعية.",
"cw_files_err_load": "تعذّر فتح هذا المجلد.",
"cw_files_err_missing": "لم يعد موجودًا.",
"cw_files_err_read": "تعذّرت القراءة.",
"cw_files_fixperm": "إصلاح الأذونات",
"cw_files_fixperm_batch": "جارٍ إصلاح الأذونات {at} من {total}…",
"cw_files_fixperm_body": "يجعل كل ما في هذا المجلد قابلاً للقراءة والتشغيل من قبل PS5 (chmod 777). استخدمه عندما لا تبدأ اللعبة بعد النسخ.",
"cw_files_fixperm_done": "تم إصلاح الأذونات.",
"cw_files_free": "{free} متاحة",
"cw_files_here": "هنا",
"cw_files_info": "معلومات",
"cw_files_info_items": "العناصر",
"cw_files_info_mode": "الأذونات",
"cw_files_info_modified": "آخر تعديل",
"cw_files_info_size": "الحجم",
"cw_files_info_type": "النوع",
"cw_files_info_where": "الموقع",
"cw_files_items": "{n} عناصر",
"cw_files_kind_dir": "مجلد",
"cw_files_kind_file": "ملف",
"cw_files_kind_link": "رابط",
"cw_files_more": "عرض المزيد",
"cw_files_move_to": "نقل إلى…",
"cw_files_name": "الاسم",
"cw_files_new_folder": "مجلد جديد",
"cw_files_no_folders": "لا توجد مجلدات هنا.",
"cw_files_no_folders_next": "اختر «هنا» لاستخدام هذا المجلد.",
"cw_files_ok": "موافق",
"cw_files_pick_drive": "اختر محرك أقراص",
"cw_files_rename": "إعادة تسمية",
"cw_files_retry": "إعادة المحاولة",
"cw_files_selected": "تم تحديد {n}",
"cw_files_some_failed": "فشل {n}: {reason}",
"cw_files_tasks": "المهام الجارية: {n}",
"cw_files_too_large": "كبير جدًا للمعاينة.",
"cw_files_truncated": "يُعرض أول 1 MiB فقط.",
"cw_files_up": "لأعلى",
"cw_files_view": "عرض",
"cw_help_close": "إغلاق",
"cw_help_controls": "التحكم",
"cw_help_pointer": "العصا اليسرى تحرّك مؤشر PS5، و✕ ينقر ما يشير إليه.",
"cw_help_title": "الأزرار في هذه الشاشة",
"cw_help_unconfirmed": "لم تُؤكَّد بعد على جهاز PS5 هذا:",
"cw_hint_back": "رجوع",
"cw_hint_fullscreen": "ملء الشاشة",
"cw_hint_help": "مساعدة",
"cw_hint_open": "فتح",
"cw_hint_page": "صفحة لأعلى/لأسفل",
"cw_hint_refresh": "تحديث",
"cw_hint_switch": "تشغيل/إيقاف",
"cw_hint_switch_section": "تبديل القسم",
"cw_hint_top": "الأعلى",
"cw_hints_label": "أزرار وحدة التحكم",
"cw_home_cancel_task": "إلغاء",
"cw_home_cancel_task_confirm": "إلغاء المهمة",
"cw_home_cheats": "الشفرات",
"cw_home_close_game": "إغلاق اللعبة",
"cw_home_confirm_cancel_body": "ستتوقف الآن. لا يمكن التراجع عن ذلك.",
"cw_home_confirm_cancel_body_pc": "بدأ حاسوب هذه المهمة. ستتوقف على الحاسوب أيضًا.",
"cw_home_confirm_cancel_title": "إلغاء هذه المهمة؟",
"cw_home_confirm_close_body": "سيضيع التقدم غير المحفوظ في اللعبة.",
"cw_home_confirm_close_title": "إغلاق {name}؟",
"cw_home_err_busy": "الجهاز مشغول. حاول مرة أخرى بعد قليل.",
"cw_home_err_failed": "لم ينجح ذلك ({code}).",
"cw_home_err_gone": "انتهت هذه المهمة بالفعل.",
"cw_home_err_load_storage": "تعذّرت قراءة المحركات.",
"cw_home_err_load_tasks": "تعذّرت قراءة قائمة المهام.",
"cw_home_err_offline": "لم يستجب الجهاز. حاول مرة أخرى.",
"cw_home_free_of": "{free} متاحة من {total}",
"cw_home_keep_task": "متابعة",
"cw_home_kind_copy": "نسخ",
"cw_home_kind_download": "تنزيل",
"cw_home_kind_op": "عملية ملفات",
"cw_home_kind_other": "مهمة",
"cw_home_kind_upload": "رفع",
"cw_home_loading": "جارٍ التحميل…",
"cw_home_no_game_next": "ابدأ لعبة من الشاشة الرئيسية للـ PS5؛ تظهر شفراتها هنا.",
"cw_home_no_game_plain": "ابدأ لعبة من الشاشة الرئيسية للـ PS5.",
"cw_home_no_tasks": "لا توجد مهام حاليًا.",
"cw_home_no_tasks_next": "تظهر هنا عمليات الرفع من تطبيق PS5Upload على حاسوبك.",
"cw_home_now_running": "قيد التشغيل الآن",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} من {total}",
"cw_home_progress_files": "{done} من {total} ملفات",
"cw_home_retrying": "ستُعاد المحاولة قريبًا.",
"cw_home_state_done": "اكتملت",
"cw_home_state_failed": "فشلت",
"cw_home_state_running": "قيد التشغيل",
"cw_home_storage": "التخزين",
"cw_home_tasks": "المهام",
"cw_home_tasks_fewer": "عرض أقل",
"cw_home_tasks_more": "+{n} أخرى",
"cw_home_vol_ext": "تخزين موسّع",
"cw_home_vol_internal": "التخزين الداخلي",
"cw_home_vol_m2": "تخزين M.2",
"cw_home_vol_readonly": "للقراءة فقط",
"cw_home_vol_usb": "محرك USB",
"cw_home_vol_usb_ext": "تخزين موسّع عبر USB",
"cw_job_actions": "إجراءات أخرى",
"cw_job_back": "رجوع",
"cw_job_confirm": "تحديد / فتح",
"cw_job_fullscreen": "ملء الشاشة تشغيل/إيقاف",
"cw_job_help": "مساعدة هذه الشاشة",
"cw_job_move": "تحريك",
"cw_job_mute": "كتم الميكروفون",
"cw_job_next_section": "القسم التالي",
"cw_job_page_down": "صفحة للأسفل",
"cw_job_page_up": "صفحة للأعلى",
"cw_job_pointer": "مؤشر PS5",
"cw_job_prev_section": "القسم السابق",
"cw_job_ps": "الشاشة الرئيسية وقائمة PS5",
"cw_job_rail": "قائمة الأقسام",
"cw_job_refresh": "تحديث",
"cw_job_scroll": "تمرير",
"cw_job_select": "تحديد عناصر / تبديل الشفرات",
"cw_job_top": "أعلى القائمة",
"cw_nav_files": "الملفات",
"cw_nav_home": "الرئيسية",
"cw_nav_sections": "الأقسام",
"cw_nav_settings": "الإعدادات",
"cw_reload_body": "أعد تحميل هذه الصفحة للمتابعة.",
"cw_reload_button": "إعادة تحميل",
"cw_reload_title": "أُعيد تشغيل مساعد PS5Upload",
"cw_select": "تحديد",
"cw_settings_about": "حول",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "تباين عالٍ",
"cw_settings_controls": "التحكم",
"cw_settings_controls_note": "ما يفعله كل زر في وحدة التحكم هنا. اضغط زرًا لتجربته.",
"cw_settings_err_load": "تعذر تحميل الإعدادات.",
"cw_settings_err_save": "تعذر حفظ الإعداد. حاول مرة أخرى.",
"cw_settings_err_tile_add": "تعذرت إضافة PS5Upload إلى الشاشة الرئيسية. حاول مرة أخرى.",
"cw_settings_err_tile_remove": "تعذرت إزالة PS5Upload من الشاشة الرئيسية. حاول مرة أخرى.",
"cw_settings_fullscreen": "ملء الشاشة",
"cw_settings_fullscreen_note": "يخفي أشرطة المتصفح لتملأ الصفحة شاشة التلفاز. يسري عند ضغطتك التالية على زر.",
"cw_settings_lan": "السماح للأجهزة الأخرى في الشبكة",
"cw_settings_lan_allow": "سماح",
"cw_settings_lan_confirm_title": "السماح للأجهزة الأخرى؟",
"cw_settings_lan_off_note": "عند الإيقاف تفقد الأجهزة الأخرى الوصول؛ وتحتفظ هذه الوحدة به.",
"cw_settings_lan_warning": "سيتمكن أي شخص في شبكتك من استخدام هذه الصفحة وإدارة ملفاتك.",
"cw_settings_language": "اللغة",
"cw_settings_language_system": "افتراضي النظام",
"cw_settings_network": "الشبكة",
"cw_settings_off": "معطّل",
"cw_settings_on": "مفعّل",
"cw_settings_theme": "المظهر",
"cw_settings_tile": "إظهار PS5Upload على الشاشة الرئيسية",
"cw_settings_tips": "عرض النصائح مجددًا",
"cw_settings_using": "وحدة التحكم والنصائح",
"cw_settings_version": "الإصدار {version}",
"cw_status_connecting": "جارٍ الاتصال…",
"cw_status_offline": "غير متصل",
"cw_task_from_console": "من هذا الجهاز",
"cw_task_from_pc": "من حاسوب",
"cw_theme_dark": "داكن",
"cw_theme_light": "فاتح",
"cw_theme_oled": "OLED",
"cw_theme_peach": "خوخي",
"cw_tour1_cheats": "الشفرات: شغّل شفرات اللعبة الجارية أو أوقفها.",
"cw_tour1_files": "الملفات: تصفّح وانسخ وانقل واحذف على أقراص PS5.",
"cw_tour1_home": "الرئيسية: اللعبة الجارية والمهام والأقراص.",
"cw_tour1_settings": "الإعدادات: السمة واللغة وملء الشاشة وهذه النصائح.",
"cw_tour1_title": "أربعة أقسام على اليسار",
"cw_tour2_circle": "○ يرجع خطوة واحدة.",
"cw_tour2_cross": "✕ يحدد العنصر المميَّز.",
"cw_tour2_more": "لكل شيء آخر زر على الشاشة: ميّزه ثم اضغط ✕. تُظهر المساعدة، أسفل اليسار، الأزرار الأخرى التي تعمل.",
"cw_tour2_title": "✕ للتحديد، ○ للرجوع",
"cw_tour3_fullscreen": "تملأ الصفحة التلفاز بعد أول ضغطة. يمكنك إيقاف ملء الشاشة من الإعدادات.",
"cw_tour3_pointer": "حرّك المؤشر بالعصا اليسرى: ما يشير إليه يُميَّز، و✕ ينقره.",
"cw_tour3_title": "مؤشر PS5 يعمل أيضًا",
"cw_tour_done": "فهمت",
"cw_tour_label": "نصائح",
"cw_tour_next": "التالي",
"cw_tour_skip": "تخطٍّ",
"cw_tour_step": "{n} من {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "কাজ",
"cw_cheats_apply": "প্রয়োগ করুন",
"cw_cheats_engine_off": "চিট ইঞ্জিন বন্ধ আছে। কোনো চিট চালু করলে এটি শুরু হয়।",
"cw_cheats_err_changed": "চিট ফাইল বদলে গেছে। তালিকা আবার পড়া হয়েছে।",
"cw_cheats_err_load": "চিট পড়া যায়নি ({code})। আবার চেষ্টা করতে রিফ্রেশ চাপুন।",
"cw_cheats_err_module": "এই চিটের জন্য গেমের এমন একটি অংশ দরকার যা এখনো লোড হয়নি। গেমে পরে আবার চেষ্টা করুন।",
"cw_cheats_err_toggle": "চিট বদলানো যায়নি ({code})।",
"cw_cheats_exited": "গেমটি বন্ধ হয়ে গেছে।",
"cw_cheats_exited_next": "আবার চালু করুন, এর চিটগুলো আবার এখানে দেখা যাবে।",
"cw_cheats_how": "✕ বা □ নির্বাচিত চিট চালু বা বন্ধ করে।",
"cw_cheats_loading": "চিট লোড হচ্ছে…",
"cw_cheats_no_game": "কোনো গেম চলছে না।",
"cw_cheats_no_game_next": "একটি গেম চালু করুন, তারপর চিট খুলুন।",
"cw_cheats_none": "এই গেমের জন্য কোনো চিট নেই।",
"cw_cheats_none_next": "আপনার PC-র PS5Upload অ্যাপ থেকে এই গেমের চিট যোগ করুন।",
"cw_cheats_off": "বন্ধ",
"cw_cheats_on": "চালু",
"cw_cheats_refresh": "রিফ্রেশ",
"cw_cheats_switching": "বদলানো হচ্ছে…",
"cw_cheats_title": "চিট",
"cw_cheats_truncated": "সব চিট এখানে ধরে না। আপনার PC-র PS5Upload অ্যাপ সবগুলো দেখায়।",
"cw_ctl_last": "শেষ চাপা:",
"cw_ctl_logging": "এই স্ক্রিন খোলা থাকলে, কন্ট্রোলার সাপোর্ট উন্নত করতে বোতাম চাপা এই কনসোলের একটি ছোট লগে সংরক্ষিত হয়।",
"cw_ctl_not_yet": "এখনও পাওয়া যায়নি",
"cw_ctl_ok": "কাজ করে",
"cw_ctl_other_key": "অন্য কী: {key}",
"cw_ctl_picture": "DualSense কন্ট্রোলার",
"cw_ctl_press_each": "প্রতিটি বোতাম একবার করে চাপুন, দেখুন এই পেজ কী পায়। ○ এই স্ক্রিন বন্ধ করে, তাই ওটা সবশেষে চাপুন।",
"cw_ctl_received": "পাওয়া গেছে",
"cw_ctl_received_job": "পাওয়া গেছে: {job} (এখনও ব্যবহার হয় না)",
"cw_ctl_system": "PS5 ব্যবহার করে",
"cw_ctl_title": "কন্ট্রোল",
"cw_ctl_works": "কাজ করে: {job}",
"cw_dialog_cancel": "বাতিল",
"cw_files_bad_name": "“/” ছাড়া একটি নাম দিন।",
"cw_files_batch_copy": "{total}টির মধ্যে {at} কপি হচ্ছে…",
"cw_files_batch_delete": "{total}টির মধ্যে {at} মোছা হচ্ছে…",
"cw_files_batch_failed": "{n}টি ব্যর্থ হয়েছে।",
"cw_files_batch_move": "{total}টির মধ্যে {at} সরানো হচ্ছে…",
"cw_files_batch_stop": "থামান",
"cw_files_batch_stopped": "থামানো হয়েছে। {n}টি শুরু হয়নি।",
"cw_files_batch_stopping": "এই আইটেমের পরে থামবে…",
"cw_files_close": "বন্ধ করুন",
"cw_files_copy_to": "এখানে কপি করুন…",
"cw_files_del_body": "ফোল্ডার তার ভেতরের সবকিছুসহ মুছে যায়। এটি ফেরানো যায় না।",
"cw_files_del_list_many": "“{name}” এবং আরও {more}টি।",
"cw_files_del_many": "{n}টি আইটেম মুছবেন?",
"cw_files_del_one": "“{name}” মুছবেন?",
"cw_files_delete": "মুছুন",
"cw_files_done": "সম্পন্ন।",
"cw_files_drives": "ড্রাইভ",
"cw_files_empty": "এই ফোল্ডারটি খালি।",
"cw_files_empty_next": "আপনার PC-র PS5Upload অ্যাপ থেকে এখানে ফাইল কপি করুন, অথবা নতুন ফোল্ডার তৈরি করুন।",
"cw_files_err_denied": "কনসোল এখানে পরিবর্তনের অনুমতি দেয় না।",
"cw_files_err_exists": "এই নামে কিছু আগে থেকেই আছে।",
"cw_files_err_into_itself": "কোনো ফোল্ডারকে তার নিজের ভেতরে বা তার কোনো সাবফোল্ডারে রাখা যায় না।",
"cw_files_err_load": "এই ফোল্ডারটি খোলা যায়নি।",
"cw_files_err_missing": "এটি আর নেই।",
"cw_files_err_read": "পড়া যায়নি।",
"cw_files_fixperm": "অনুমতি ঠিক করুন",
"cw_files_fixperm_batch": "অনুমতি ঠিক করা হচ্ছে: {total}টির মধ্যে {at}…",
"cw_files_fixperm_body": "এই ফোল্ডারের সবকিছু PS5-এর জন্য পড়ার ও চালানোর উপযোগী করে (chmod 777)। কপি করার পর গেম চালু না হলে এটি ব্যবহার করুন।",
"cw_files_fixperm_done": "অনুমতি ঠিক করা হয়েছে।",
"cw_files_free": "{free} খালি",
"cw_files_here": "এখানে",
"cw_files_info": "তথ্য",
"cw_files_info_items": "আইটেম",
"cw_files_info_mode": "অনুমতি",
"cw_files_info_modified": "পরিবর্তিত",
"cw_files_info_size": "আকার",
"cw_files_info_type": "ধরন",
"cw_files_info_where": "অবস্থান",
"cw_files_items": "{n}টি আইটেম",
"cw_files_kind_dir": "ফোল্ডার",
"cw_files_kind_file": "ফাইল",
"cw_files_kind_link": "লিংক",
"cw_files_more": "আরও দেখান",
"cw_files_move_to": "এখানে সরান…",
"cw_files_name": "নাম",
"cw_files_new_folder": "নতুন ফোল্ডার",
"cw_files_no_folders": "এখানে কোনো ফোল্ডার নেই।",
"cw_files_no_folders_next": "এই ফোল্ডার ব্যবহার করতে “এখানে” বাছাই করুন।",
"cw_files_ok": "ঠিক আছে",
"cw_files_pick_drive": "একটি ড্রাইভ বেছে নিন",
"cw_files_rename": "নাম বদলান",
"cw_files_retry": "আবার চেষ্টা করুন",
"cw_files_selected": "{n}টি নির্বাচিত",
"cw_files_some_failed": "{n}টি ব্যর্থ: {reason}",
"cw_files_tasks": "চলমান কাজ: {n}",
"cw_files_too_large": "প্রিভিউ করার জন্য খুব বড়।",
"cw_files_truncated": "প্রথম 1 MiB দেখানো হচ্ছে।",
"cw_files_up": "উপরে",
"cw_files_view": "দেখুন",
"cw_help_close": "বন্ধ করুন",
"cw_help_controls": "কন্ট্রোল",
"cw_help_pointer": "বাঁ স্টিক PS5 পয়েন্টার সরায়; ✕ পয়েন্টার যেটার উপর আছে সেটাতে ক্লিক করে।",
"cw_help_title": "এই স্ক্রিনের বোতাম",
"cw_help_unconfirmed": "এই PS5-এ এখনও নিশ্চিত হয়নি:",
"cw_hint_back": "পিছনে",
"cw_hint_fullscreen": "ফুল স্ক্রিন",
"cw_hint_help": "সাহায্য",
"cw_hint_open": "খুলুন",
"cw_hint_page": "পেজ উপরে/নিচে",
"cw_hint_refresh": "রিফ্রেশ",
"cw_hint_switch": "চালু/বন্ধ",
"cw_hint_switch_section": "বিভাগ বদলান",
"cw_hint_top": "একদম উপরে",
"cw_hints_label": "কন্ট্রোলারের বোতাম",
"cw_home_cancel_task": "বাতিল",
"cw_home_cancel_task_confirm": "কাজ বাতিল করুন",
"cw_home_cheats": "চিট",
"cw_home_close_game": "গেম বন্ধ করুন",
"cw_home_confirm_cancel_body": "এটি এখনই থেমে যাবে। এটি পূর্বাবস্থায় ফেরানো যাবে না।",
"cw_home_confirm_cancel_body_pc": "একটি PC এই কাজটি শুরু করেছিল। এটি PC-তেও থেমে যাবে।",
"cw_home_confirm_cancel_title": "এই কাজটি বাতিল করবেন?",
"cw_home_confirm_close_body": "গেমের সেভ না করা অগ্রগতি হারিয়ে যাবে।",
"cw_home_confirm_close_title": "{name} বন্ধ করবেন?",
"cw_home_err_busy": "কনসোল ব্যস্ত। একটু পরে আবার চেষ্টা করুন।",
"cw_home_err_failed": "এটি কাজ করেনি ({code})।",
"cw_home_err_gone": "সেই কাজটি আগেই শেষ হয়েছে।",
"cw_home_err_load_storage": "ড্রাইভগুলো পড়া যায়নি।",
"cw_home_err_load_tasks": "কাজের তালিকা পড়া যায়নি।",
"cw_home_err_offline": "কনসোল সাড়া দেয়নি। আবার চেষ্টা করুন।",
"cw_home_free_of": "{total}-এর মধ্যে {free} খালি",
"cw_home_keep_task": "চলতে দিন",
"cw_home_kind_copy": "কপি",
"cw_home_kind_download": "ডাউনলোড",
"cw_home_kind_op": "ফাইল অপারেশন",
"cw_home_kind_other": "কাজ",
"cw_home_kind_upload": "আপলোড",
"cw_home_loading": "লোড হচ্ছে…",
"cw_home_no_game_next": "PS5 হোম স্ক্রিন থেকে একটি গেম চালু করুন; এর চিট এখানে দেখা যাবে।",
"cw_home_no_game_plain": "PS5 হোম স্ক্রিন থেকে একটি গেম চালু করুন।",
"cw_home_no_tasks": "এখন কোনো কাজ নেই।",
"cw_home_no_tasks_next": "আপনার PC-র PS5Upload অ্যাপ থেকে আপলোড এখানে দেখা যায়।",
"cw_home_now_running": "এখন চলছে",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{total}-এর মধ্যে {done}",
"cw_home_progress_files": "{total}টির মধ্যে {done}টি ফাইল",
"cw_home_retrying": "শীঘ্রই আবার চেষ্টা করা হবে।",
"cw_home_state_done": "সম্পন্ন",
"cw_home_state_failed": "ব্যর্থ",
"cw_home_state_running": "চলছে",
"cw_home_storage": "স্টোরেজ",
"cw_home_tasks": "কাজ",
"cw_home_tasks_fewer": "কম দেখান",
"cw_home_tasks_more": "আরও +{n}টি",
"cw_home_vol_ext": "এক্সটেন্ডেড স্টোরেজ",
"cw_home_vol_internal": "অভ্যন্তরীণ স্টোরেজ",
"cw_home_vol_m2": "M.2 স্টোরেজ",
"cw_home_vol_readonly": "শুধু পড়া যায়",
"cw_home_vol_usb": "USB ড্রাইভ",
"cw_home_vol_usb_ext": "USB এক্সটেন্ডেড স্টোরেজ",
"cw_job_actions": "আরও কাজ",
"cw_job_back": "পিছনে",
"cw_job_confirm": "বাছাই / খুলুন",
"cw_job_fullscreen": "ফুল স্ক্রিন চালু/বন্ধ",
"cw_job_help": "এই স্ক্রিনের সাহায্য",
"cw_job_move": "সরান",
"cw_job_mute": "মাইক্রোফোন মিউট",
"cw_job_next_section": "পরের বিভাগ",
"cw_job_page_down": "পেজ নিচে",
"cw_job_page_up": "পেজ উপরে",
"cw_job_pointer": "PS5 পয়েন্টার",
"cw_job_prev_section": "আগের বিভাগ",
"cw_job_ps": "PS5 হোম ও মেনু",
"cw_job_rail": "বিভাগের তালিকা",
"cw_job_refresh": "রিফ্রেশ",
"cw_job_scroll": "স্ক্রল",
"cw_job_select": "আইটেম চিহ্নিত / চিট চালু-বন্ধ",
"cw_job_top": "তালিকার শুরু",
"cw_nav_files": "ফাইল",
"cw_nav_home": "হোম",
"cw_nav_sections": "বিভাগ",
"cw_nav_settings": "সেটিংস",
"cw_reload_body": "চালিয়ে যেতে এই পেজটি আবার লোড করুন।",
"cw_reload_button": "আবার লোড করুন",
"cw_reload_title": "PS5Upload সাহায্যকারী আবার চালু হয়েছে",
"cw_select": "বাছাই করুন",
"cw_settings_about": "সম্পর্কে",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "উচ্চ কনট্রাস্ট",
"cw_settings_controls": "কন্ট্রোল",
"cw_settings_controls_note": "এখানে প্রতিটি কন্ট্রোলার বোতাম কী করে। পরীক্ষা করতে একটি বোতাম চাপুন।",
"cw_settings_err_load": "সেটিংস লোড করা যায়নি।",
"cw_settings_err_save": "সেটিং সংরক্ষণ করা যায়নি। আবার চেষ্টা করুন।",
"cw_settings_err_tile_add": "হোম স্ক্রিনে PS5Upload যোগ করা যায়নি। আবার চেষ্টা করুন।",
"cw_settings_err_tile_remove": "হোম স্ক্রিন থেকে PS5Upload সরানো যায়নি। আবার চেষ্টা করুন।",
"cw_settings_fullscreen": "ফুল স্ক্রিন",
"cw_settings_fullscreen_note": "ব্রাউজারের বারগুলো লুকিয়ে রাখে যাতে পেজটি পুরো টিভি জুড়ে থাকে। পরের বার বোতাম চাপলে কার্যকর হয়।",
"cw_settings_lan": "নেটওয়ার্কের অন্য ডিভাইসকে অনুমতি দিন",
"cw_settings_lan_allow": "অনুমতি দিন",
"cw_settings_lan_confirm_title": "অন্য ডিভাইসকে অনুমতি দেবেন?",
"cw_settings_lan_off_note": "বন্ধ করলে অন্য ডিভাইস অ্যাক্সেস হারায়; এই কনসোলের অ্যাক্সেস থাকে।",
"cw_settings_lan_warning": "তখন আপনার নেটওয়ার্কের যে কেউ এই পেজ ব্যবহার করে আপনার ফাইল পরিচালনা করতে পারবে।",
"cw_settings_language": "ভাষা",
"cw_settings_language_system": "সিস্টেম ডিফল্ট",
"cw_settings_network": "নেটওয়ার্ক",
"cw_settings_off": "বন্ধ",
"cw_settings_on": "চালু",
"cw_settings_theme": "থিম",
"cw_settings_tile": "হোম স্ক্রিনে PS5Upload দেখান",
"cw_settings_tips": "টিপস আবার দেখান",
"cw_settings_using": "কন্ট্রোলার ও টিপস",
"cw_settings_version": "সংস্করণ {version}",
"cw_status_connecting": "সংযোগ হচ্ছে…",
"cw_status_offline": "সংযুক্ত নয়",
"cw_task_from_console": "এই কনসোল থেকে",
"cw_task_from_pc": "PC থেকে",
"cw_theme_dark": "অন্ধকার",
"cw_theme_light": "হালকা",
"cw_theme_oled": "OLED",
"cw_theme_peach": "পিচ",
"cw_tour1_cheats": "চিট: চলমান গেমের চিট চালু-বন্ধ করুন।",
"cw_tour1_files": "ফাইল: PS5-এর ড্রাইভে ব্রাউজ, কপি, সরানো ও মুছে ফেলা।",
"cw_tour1_home": "হোম: চলমান গেম, কাজ এবং ড্রাইভ।",
"cw_tour1_settings": "সেটিংস: থিম, ভাষা, ফুল স্ক্রিন এবং এই টিপস।",
"cw_tour1_title": "বাঁ দিকে চারটি বিভাগ",
"cw_tour2_circle": "○ এক ধাপ পিছনে যায়।",
"cw_tour2_cross": "✕ হাইলাইট করা জিনিস বাছাই করে।",
"cw_tour2_more": "বাকি সবকিছুর স্ক্রিনে একটি বোতাম আছে: সেটি হাইলাইট করে ✕ চাপুন। নিচে বাঁ দিকের সাহায্য দেখায় আর কোন বোতাম কাজ করে।",
"cw_tour2_title": "✕ বাছাই করে, ○ পিছনে যায়",
"cw_tour3_fullscreen": "প্রথমবার বোতাম চাপার পরে পেজটি পুরো টিভি জুড়ে দেখায়। সেটিংসে ফুল স্ক্রিন বন্ধ করতে পারেন।",
"cw_tour3_pointer": "বাঁ স্টিক দিয়ে পয়েন্টার সরান: যেটার উপর আছে সেটি হাইলাইট হয়, আর ✕ তাতে ক্লিক করে।",
"cw_tour3_title": "PS5 পয়েন্টারও কাজ করে",
"cw_tour_done": "বুঝেছি",
"cw_tour_label": "টিপস",
"cw_tour_next": "পরের",
"cw_tour_skip": "এড়িয়ে যান",
"cw_tour_step": "{total}-এর মধ্যে {n}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Aktionen",
"cw_cheats_apply": "Anwenden",
"cw_cheats_engine_off": "Die Cheat-Engine ist aus. Sie startet, sobald du einen Cheat einschaltest.",
"cw_cheats_err_changed": "Die Cheat-Dateien haben sich geändert. Die Liste wurde neu gelesen.",
"cw_cheats_err_load": "Cheats konnten nicht gelesen werden ({code}). Drücke Aktualisieren, um es erneut zu versuchen.",
"cw_cheats_err_module": "Dieser Cheat braucht einen Teil des Spiels, der noch nicht geladen ist. Versuche es später im Spiel erneut.",
"cw_cheats_err_toggle": "Der Cheat konnte nicht geschaltet werden ({code}).",
"cw_cheats_exited": "Das Spiel wurde beendet.",
"cw_cheats_exited_next": "Starte es erneut, dann erscheinen seine Cheats wieder hier.",
"cw_cheats_how": "✕ oder □ schaltet den markierten Cheat ein oder aus.",
"cw_cheats_loading": "Cheats werden geladen…",
"cw_cheats_no_game": "Es läuft kein Spiel.",
"cw_cheats_no_game_next": "Starte ein Spiel und öffne dann Cheats.",
"cw_cheats_none": "Keine Cheats für dieses Spiel.",
"cw_cheats_none_next": "Füge Cheats für dieses Spiel in der PS5Upload-App auf deinem PC hinzu.",
"cw_cheats_off": "Aus",
"cw_cheats_on": "An",
"cw_cheats_refresh": "Aktualisieren",
"cw_cheats_switching": "Wird geschaltet…",
"cw_cheats_title": "Cheats",
"cw_cheats_truncated": "Nicht alle Cheats passen hierher. Die PS5Upload-App auf deinem PC zeigt alle.",
"cw_ctl_last": "Zuletzt gedrückt:",
"cw_ctl_logging": "Solange dieser Bildschirm offen ist, werden Tastendrücke in einem kleinen Protokoll auf dieser Konsole gespeichert, um die Controller-Unterstützung zu verbessern.",
"cw_ctl_not_yet": "Noch nicht empfangen",
"cw_ctl_ok": "Funktioniert",
"cw_ctl_other_key": "Andere Taste: {key}",
"cw_ctl_picture": "DualSense-Controller",
"cw_ctl_press_each": "Drücke jede Taste einmal, um zu sehen, was diese Seite empfängt. ○ schließt diesen Bildschirm, also drücke sie zuletzt.",
"cw_ctl_received": "Empfangen",
"cw_ctl_received_job": "Empfangen: {job} (noch nicht genutzt)",
"cw_ctl_system": "Von der PS5 belegt",
"cw_ctl_title": "Steuerung",
"cw_ctl_works": "Funktioniert: {job}",
"cw_dialog_cancel": "Abbrechen",
"cw_files_bad_name": "Verwende einen Namen ohne „/“.",
"cw_files_batch_copy": "Kopiere {at} von {total}…",
"cw_files_batch_delete": "Lösche {at} von {total}…",
"cw_files_batch_failed": "{n} fehlgeschlagen.",
"cw_files_batch_move": "Verschiebe {at} von {total}…",
"cw_files_batch_stop": "Stopp",
"cw_files_batch_stopped": "Gestoppt. {n} nicht gestartet.",
"cw_files_batch_stopping": "Stoppt nach diesem Element…",
"cw_files_close": "Schließen",
"cw_files_copy_to": "Kopieren nach…",
"cw_files_del_body": "Ordner werden mit ihrem gesamten Inhalt gelöscht. Das lässt sich nicht rückgängig machen.",
"cw_files_del_list_many": "„{name}“ und {more} weitere.",
"cw_files_del_many": "{n} Elemente löschen?",
"cw_files_del_one": "„{name}“ löschen?",
"cw_files_delete": "Löschen",
"cw_files_done": "Fertig.",
"cw_files_drives": "Laufwerke",
"cw_files_empty": "Dieser Ordner ist leer.",
"cw_files_empty_next": "Kopiere Dateien aus der PS5Upload-App auf deinem PC hierher oder lege einen neuen Ordner an.",
"cw_files_err_denied": "Die Konsole erlaubt hier keine Änderungen.",
"cw_files_err_exists": "Unter diesem Namen gibt es schon etwas.",
"cw_files_err_into_itself": "Ein Ordner kann nicht in sich selbst oder einen seiner Unterordner.",
"cw_files_err_load": "Dieser Ordner lässt sich nicht öffnen.",
"cw_files_err_missing": "Das ist nicht mehr da.",
"cw_files_err_read": "Konnte nicht gelesen werden.",
"cw_files_fixperm": "Berechtigungen reparieren",
"cw_files_fixperm_batch": "Berechtigungen reparieren: {at} von {total}…",
"cw_files_fixperm_body": "Macht alles in diesem Ordner für die PS5 lesbar und ausführbar (chmod 777). Nutze es, wenn ein Spiel nach dem Kopieren nicht startet.",
"cw_files_fixperm_done": "Berechtigungen repariert.",
"cw_files_free": "{free} frei",
"cw_files_here": "Hierher",
"cw_files_info": "Info",
"cw_files_info_items": "Elemente",
"cw_files_info_mode": "Berechtigungen",
"cw_files_info_modified": "Geändert",
"cw_files_info_size": "Größe",
"cw_files_info_type": "Typ",
"cw_files_info_where": "Ort",
"cw_files_items": "{n} Elemente",
"cw_files_kind_dir": "Ordner",
"cw_files_kind_file": "Datei",
"cw_files_kind_link": "Verknüpfung",
"cw_files_more": "Mehr anzeigen",
"cw_files_move_to": "Verschieben nach…",
"cw_files_name": "Name",
"cw_files_new_folder": "Neuer Ordner",
"cw_files_no_folders": "Hier gibt es keine Ordner.",
"cw_files_no_folders_next": "Wähle „Hierher“, um diesen Ordner zu verwenden.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Laufwerk wählen",
"cw_files_rename": "Umbenennen",
"cw_files_retry": "Erneut versuchen",
"cw_files_selected": "{n} ausgewählt",
"cw_files_some_failed": "{n} fehlgeschlagen: {reason}",
"cw_files_tasks": "Laufende Aufgaben: {n}",
"cw_files_too_large": "Zu groß für die Vorschau.",
"cw_files_truncated": "Die ersten 1 MiB werden angezeigt.",
"cw_files_up": "Nach oben",
"cw_files_view": "Ansehen",
"cw_help_close": "Schließen",
"cw_help_controls": "Steuerung",
"cw_help_pointer": "Der linke Stick bewegt den PS5-Zeiger; ✕ klickt, worauf er zeigt.",
"cw_help_title": "Tasten auf diesem Bildschirm",
"cw_help_unconfirmed": "Auf dieser PS5 noch nicht bestätigt:",
"cw_hint_back": "Zurück",
"cw_hint_fullscreen": "Vollbild",
"cw_hint_help": "Hilfe",
"cw_hint_open": "Öffnen",
"cw_hint_page": "Seite hoch/runter",
"cw_hint_refresh": "Aktualisieren",
"cw_hint_switch": "Ein/aus",
"cw_hint_switch_section": "Bereich wechseln",
"cw_hint_top": "Nach oben",
"cw_hints_label": "Controller-Tasten",
"cw_home_cancel_task": "Abbrechen",
"cw_home_cancel_task_confirm": "Aufgabe abbrechen",
"cw_home_cheats": "Cheats",
"cw_home_close_game": "Spiel schließen",
"cw_home_confirm_cancel_body": "Sie stoppt sofort. Das lässt sich nicht rückgängig machen.",
"cw_home_confirm_cancel_body_pc": "Ein PC hat diese Aufgabe gestartet. Sie stoppt auch auf dem PC.",
"cw_home_confirm_cancel_title": "Diese Aufgabe abbrechen?",
"cw_home_confirm_close_body": "Nicht gespeicherter Spielfortschritt geht verloren.",
"cw_home_confirm_close_title": "{name} schließen?",
"cw_home_err_busy": "Die Konsole ist beschäftigt. Versuche es gleich noch einmal.",
"cw_home_err_failed": "Das hat nicht funktioniert ({code}).",
"cw_home_err_gone": "Diese Aufgabe ist bereits beendet.",
"cw_home_err_load_storage": "Die Laufwerke konnten nicht gelesen werden.",
"cw_home_err_load_tasks": "Die Aufgabenliste konnte nicht gelesen werden.",
"cw_home_err_offline": "Die Konsole hat nicht geantwortet. Versuche es erneut.",
"cw_home_free_of": "{free} frei von {total}",
"cw_home_keep_task": "Weiterlaufen lassen",
"cw_home_kind_copy": "Kopieren",
"cw_home_kind_download": "Herunterladen",
"cw_home_kind_op": "Dateivorgang",
"cw_home_kind_other": "Aufgabe",
"cw_home_kind_upload": "Hochladen",
"cw_home_loading": "Wird geladen…",
"cw_home_no_game_next": "Starte ein Spiel auf dem PS5-Startbildschirm; seine Cheats erscheinen hier.",
"cw_home_no_game_plain": "Starte ein Spiel auf dem PS5-Startbildschirm.",
"cw_home_no_tasks": "Gerade keine Aufgaben.",
"cw_home_no_tasks_next": "Uploads aus der PS5Upload-App auf deinem PC erscheinen hier.",
"cw_home_now_running": "Läuft gerade",
"cw_home_percent": "{n} %",
"cw_home_progress_bytes": "{done} von {total}",
"cw_home_progress_files": "{done} von {total} Dateien",
"cw_home_retrying": "Neuer Versuch in Kürze.",
"cw_home_state_done": "Fertig",
"cw_home_state_failed": "Fehlgeschlagen",
"cw_home_state_running": "Läuft",
"cw_home_storage": "Speicher",
"cw_home_tasks": "Aufgaben",
"cw_home_tasks_fewer": "Weniger anzeigen",
"cw_home_tasks_more": "+{n} weitere",
"cw_home_vol_ext": "Erweiterungsspeicher",
"cw_home_vol_internal": "Interner Speicher",
"cw_home_vol_m2": "M.2-Speicher",
"cw_home_vol_readonly": "Schreibgeschützt",
"cw_home_vol_usb": "USB-Laufwerk",
"cw_home_vol_usb_ext": "USB-Erweiterungsspeicher",
"cw_job_actions": "Weitere Aktionen",
"cw_job_back": "Zurück",
"cw_job_confirm": "Auswählen / öffnen",
"cw_job_fullscreen": "Vollbild ein/aus",
"cw_job_help": "Hilfe zu diesem Bildschirm",
"cw_job_move": "Bewegen",
"cw_job_mute": "Mikrofon stumm",
"cw_job_next_section": "Nächster Bereich",
"cw_job_page_down": "Seite runter",
"cw_job_page_up": "Seite hoch",
"cw_job_pointer": "PS5-Zeiger",
"cw_job_prev_section": "Vorheriger Bereich",
"cw_job_ps": "PS5-Startbildschirm und Menü",
"cw_job_rail": "Bereichsliste",
"cw_job_refresh": "Aktualisieren",
"cw_job_scroll": "Scrollen",
"cw_job_select": "Markieren / Cheats schalten",
"cw_job_top": "Zum Listenanfang",
"cw_nav_files": "Dateien",
"cw_nav_home": "Start",
"cw_nav_sections": "Bereiche",
"cw_nav_settings": "Einstellungen",
"cw_reload_body": "Lade diese Seite neu, um weiterzumachen.",
"cw_reload_button": "Neu laden",
"cw_reload_title": "Der PS5Upload-Helfer wurde neu gestartet",
"cw_select": "Auswählen",
"cw_settings_about": "Info",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Hoher Kontrast",
"cw_settings_controls": "Steuerung",
"cw_settings_controls_note": "Was jede Controller-Taste hier tut. Drücke eine Taste, um sie zu testen.",
"cw_settings_err_load": "Die Einstellungen konnten nicht geladen werden.",
"cw_settings_err_save": "Die Einstellung konnte nicht gespeichert werden. Versuche es erneut.",
"cw_settings_err_tile_add": "PS5Upload konnte nicht zum Startbildschirm hinzugefügt werden. Versuche es erneut.",
"cw_settings_err_tile_remove": "PS5Upload konnte nicht vom Startbildschirm entfernt werden. Versuche es erneut.",
"cw_settings_fullscreen": "Vollbild",
"cw_settings_fullscreen_note": "Blendet die Leisten des Browsers aus, damit die Seite den ganzen Fernseher füllt. Gilt ab dem nächsten Tastendruck.",
"cw_settings_lan": "Andere Geräte im Netzwerk zulassen",
"cw_settings_lan_allow": "Zulassen",
"cw_settings_lan_confirm_title": "Andere Geräte zulassen?",
"cw_settings_lan_off_note": "Beim Ausschalten verlieren andere Geräte den Zugriff; diese Konsole behält ihn.",
"cw_settings_lan_warning": "Jeder in deinem Netzwerk kann dann diese Seite nutzen und deine Dateien verwalten.",
"cw_settings_language": "Sprache",
"cw_settings_language_system": "Systemstandard",
"cw_settings_network": "Netzwerk",
"cw_settings_off": "Aus",
"cw_settings_on": "An",
"cw_settings_theme": "Design",
"cw_settings_tile": "PS5Upload auf dem Startbildschirm anzeigen",
"cw_settings_tips": "Tipps erneut zeigen",
"cw_settings_using": "Controller und Tipps",
"cw_settings_version": "Version: {version}",
"cw_status_connecting": "Verbinde…",
"cw_status_offline": "Nicht verbunden",
"cw_task_from_console": "Von dieser Konsole",
"cw_task_from_pc": "Von einem PC",
"cw_theme_dark": "Dunkel",
"cw_theme_light": "Hell",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Pfirsich",
"cw_tour1_cheats": "Cheats: Cheats für das laufende Spiel schalten.",
"cw_tour1_files": "Dateien: auf den Laufwerken der PS5 stöbern, kopieren, verschieben und löschen.",
"cw_tour1_home": "Start: das laufende Spiel, Aufgaben und Laufwerke.",
"cw_tour1_settings": "Einstellungen: Design, Sprache, Vollbild und diese Tipps.",
"cw_tour1_title": "Vier Bereiche, links",
"cw_tour2_circle": "○ geht einen Schritt zurück.",
"cw_tour2_cross": "✕ wählt das Markierte aus.",
"cw_tour2_more": "Alles andere hat eine Schaltfläche auf dem Bildschirm: markieren und ✕ drücken. Hilfe unten links zeigt, welche anderen Tasten funktionieren.",
"cw_tour2_title": "✕ wählt aus, ○ geht zurück",
"cw_tour3_fullscreen": "Nach deinem ersten Tastendruck füllt die Seite den Fernseher. Vollbild lässt sich in den Einstellungen ausschalten.",
"cw_tour3_pointer": "Bewege den Zeiger mit dem linken Stick: Worauf er zeigt, wird markiert, und ✕ klickt es an.",
"cw_tour3_title": "Der PS5-Zeiger geht auch",
"cw_tour_done": "Verstanden",
"cw_tour_label": "Tipps",
"cw_tour_next": "Weiter",
"cw_tour_skip": "Überspringen",
"cw_tour_step": "{n} von {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Actions",
"cw_cheats_apply": "Apply",
"cw_cheats_engine_off": "The cheat engine is off. Switching a cheat on starts it.",
"cw_cheats_err_changed": "The cheat files changed. The list was read again.",
"cw_cheats_err_load": "Could not read the cheats ({code}). Press Refresh to try again.",
"cw_cheats_err_module": "This cheat needs a part of the game that has not loaded yet. Try again later in the game.",
"cw_cheats_err_toggle": "Could not switch the cheat ({code}).",
"cw_cheats_exited": "The game was closed.",
"cw_cheats_exited_next": "Start it again and its cheats come back here.",
"cw_cheats_how": "✕ or □ switches the focused cheat on or off.",
"cw_cheats_loading": "Loading cheats…",
"cw_cheats_no_game": "No game is running.",
"cw_cheats_no_game_next": "Start a game, then open Cheats.",
"cw_cheats_none": "No cheats for this game.",
"cw_cheats_none_next": "Add cheats for this game from the PS5Upload app on your PC.",
"cw_cheats_off": "Off",
"cw_cheats_on": "On",
"cw_cheats_refresh": "Refresh",
"cw_cheats_switching": "Switching…",
"cw_cheats_title": "Cheats",
"cw_cheats_truncated": "Not every cheat fits here. The PS5Upload app on your PC shows them all.",
"cw_ctl_last": "Last pressed:",
"cw_ctl_logging": "While this screen is open, button presses are saved to a small log on this console to improve controller support.",
"cw_ctl_not_yet": "Not received yet",
"cw_ctl_ok": "Works",
"cw_ctl_other_key": "Other key: {key}",
"cw_ctl_picture": "DualSense controller",
"cw_ctl_press_each": "Press each button once to see what this page receives. ○ closes this screen, so press it last.",
"cw_ctl_received": "Received",
"cw_ctl_received_job": "Received: {job} (not used yet)",
"cw_ctl_system": "Used by the PS5",
"cw_ctl_title": "Controls",
"cw_ctl_works": "Works: {job}",
"cw_dialog_cancel": "Cancel",
"cw_files_bad_name": "Use a name without “/”.",
"cw_files_batch_copy": "Copying {at} of {total}…",
"cw_files_batch_delete": "Deleting {at} of {total}…",
"cw_files_batch_failed": "{n} failed.",
"cw_files_batch_move": "Moving {at} of {total}…",
"cw_files_batch_stop": "Stop",
"cw_files_batch_stopped": "Stopped. {n} not started.",
"cw_files_batch_stopping": "Stopping after this item…",
"cw_files_close": "Close",
"cw_files_copy_to": "Copy to…",
"cw_files_del_body": "Folders are deleted with everything in them. This can't be undone.",
"cw_files_del_list_many": "“{name}” and {more} more.",
"cw_files_del_many": "Delete {n} items?",
"cw_files_del_one": "Delete “{name}”?",
"cw_files_delete": "Delete",
"cw_files_done": "Done.",
"cw_files_drives": "Drives",
"cw_files_empty": "This folder is empty.",
"cw_files_empty_next": "Copy files here from the PS5Upload app on your PC, or make a new folder.",
"cw_files_err_denied": "The console doesn't allow changes here.",
"cw_files_err_exists": "Something with that name is already there.",
"cw_files_err_into_itself": "A folder can't go into itself or one of its folders.",
"cw_files_err_load": "Couldn't open this folder.",
"cw_files_err_missing": "It isn't there any more.",
"cw_files_err_read": "Couldn't read this.",
"cw_files_fixperm": "Fix permissions",
"cw_files_fixperm_batch": "Fixing permissions {at} of {total}…",
"cw_files_fixperm_body": "Makes everything in this folder readable and runnable by the PS5 (chmod 777). Use it when a game won't start after copying.",
"cw_files_fixperm_done": "Permissions fixed.",
"cw_files_free": "{free} free",
"cw_files_here": "Here",
"cw_files_info": "Info",
"cw_files_info_items": "Items",
"cw_files_info_mode": "Permissions",
"cw_files_info_modified": "Modified",
"cw_files_info_size": "Size",
"cw_files_info_type": "Type",
"cw_files_info_where": "Location",
"cw_files_items": "{n} items",
"cw_files_kind_dir": "Folder",
"cw_files_kind_file": "File",
"cw_files_kind_link": "Link",
"cw_files_more": "Show more",
"cw_files_move_to": "Move to…",
"cw_files_name": "Name",
"cw_files_new_folder": "New folder",
"cw_files_no_folders": "No folders here.",
"cw_files_no_folders_next": "Choose Here to use this folder.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Choose a drive",
"cw_files_rename": "Rename",
"cw_files_retry": "Try again",
"cw_files_selected": "{n} selected",
"cw_files_some_failed": "{n} failed: {reason}",
"cw_files_tasks": "Tasks running: {n}",
"cw_files_too_large": "Too large to preview.",
"cw_files_truncated": "Showing the first 1 MiB.",
"cw_files_up": "Up",
"cw_files_view": "View",
"cw_help_close": "Close",
"cw_help_controls": "Controls",
"cw_help_pointer": "Left stick moves the PS5 pointer; ✕ clicks what it is over.",
"cw_help_title": "Buttons on this screen",
"cw_help_unconfirmed": "Not confirmed on this PS5 yet:",
"cw_hint_back": "Back",
"cw_hint_fullscreen": "Full screen",
"cw_hint_help": "Help",
"cw_hint_open": "Open",
"cw_hint_page": "Page up/down",
"cw_hint_refresh": "Refresh",
"cw_hint_switch": "Switch on/off",
"cw_hint_switch_section": "Switch section",
"cw_hint_top": "Top",
"cw_hints_label": "Controller buttons",
"cw_home_cancel_task": "Cancel",
"cw_home_cancel_task_confirm": "Cancel task",
"cw_home_cheats": "Cheats",
"cw_home_close_game": "Close game",
"cw_home_confirm_cancel_body": "It stops now. This cannot be undone.",
"cw_home_confirm_cancel_body_pc": "A PC started this task. It stops on the PC too.",
"cw_home_confirm_cancel_title": "Cancel this task?",
"cw_home_confirm_close_body": "Progress you have not saved in the game is lost.",
"cw_home_confirm_close_title": "Close {name}?",
"cw_home_err_busy": "The console is busy. Try again in a moment.",
"cw_home_err_failed": "That did not work ({code}).",
"cw_home_err_gone": "That task has already ended.",
"cw_home_err_load_storage": "Could not read the drives.",
"cw_home_err_load_tasks": "Could not read the task list.",
"cw_home_err_offline": "The console did not answer. Try again.",
"cw_home_free_of": "{free} free of {total}",
"cw_home_keep_task": "Keep going",
"cw_home_kind_copy": "Copy",
"cw_home_kind_download": "Download",
"cw_home_kind_op": "File operation",
"cw_home_kind_other": "Task",
"cw_home_kind_upload": "Upload",
"cw_home_loading": "Loading…",
"cw_home_no_game_next": "Start a game from the PS5 home screen; its cheats appear here.",
"cw_home_no_game_plain": "Start a game from the PS5 home screen.",
"cw_home_no_tasks": "No tasks right now.",
"cw_home_no_tasks_next": "Uploads from the PS5Upload app on your PC show up here.",
"cw_home_now_running": "Now running",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} of {total}",
"cw_home_progress_files": "{done} of {total} files",
"cw_home_retrying": "Trying again shortly.",
"cw_home_state_done": "Done",
"cw_home_state_failed": "Failed",
"cw_home_state_running": "Running",
"cw_home_storage": "Storage",
"cw_home_tasks": "Tasks",
"cw_home_tasks_fewer": "Show fewer",
"cw_home_tasks_more": "+{n} more",
"cw_home_vol_ext": "Extended storage",
"cw_home_vol_internal": "Internal storage",
"cw_home_vol_m2": "M.2 storage",
"cw_home_vol_readonly": "Read-only",
"cw_home_vol_usb": "USB drive",
"cw_home_vol_usb_ext": "USB extended storage",
"cw_job_actions": "More actions",
"cw_job_back": "Back",
"cw_job_confirm": "Select / open",
"cw_job_fullscreen": "Full screen on/off",
"cw_job_help": "Help for this screen",
"cw_job_move": "Move",
"cw_job_mute": "Microphone mute",
"cw_job_next_section": "Next section",
"cw_job_page_down": "Page down",
"cw_job_page_up": "Page up",
"cw_job_pointer": "PS5 pointer",
"cw_job_prev_section": "Previous section",
"cw_job_ps": "PS5 home and menu",
"cw_job_rail": "Section list",
"cw_job_refresh": "Refresh",
"cw_job_scroll": "Scroll",
"cw_job_select": "Mark items / switch cheats",
"cw_job_top": "Top of the list",
"cw_nav_files": "Files",
"cw_nav_home": "Home",
"cw_nav_sections": "Sections",
"cw_nav_settings": "Settings",
"cw_reload_body": "Reload this page to carry on.",
"cw_reload_button": "Reload",
"cw_reload_title": "The PS5Upload helper restarted",
"cw_select": "Select",
"cw_settings_about": "About",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "High contrast",
"cw_settings_controls": "Controls",
"cw_settings_controls_note": "What each controller button does here. Press a button to test it.",
"cw_settings_err_load": "Could not load the settings.",
"cw_settings_err_save": "Could not save the setting. Try again.",
"cw_settings_err_tile_add": "Could not add PS5Upload to the home screen. Try again.",
"cw_settings_err_tile_remove": "Could not remove PS5Upload from the home screen. Try again.",
"cw_settings_fullscreen": "Full screen",
"cw_settings_fullscreen_note": "Hides the browser's bars so the page fills the TV. Takes effect on your next button press.",
"cw_settings_lan": "Allow other devices on the network",
"cw_settings_lan_allow": "Allow",
"cw_settings_lan_confirm_title": "Allow other devices?",
"cw_settings_lan_off_note": "Turning this off disconnects other devices; this console keeps access.",
"cw_settings_lan_warning": "Anyone on your network can then use this page and manage your files.",
"cw_settings_language": "Language",
"cw_settings_language_system": "System default",
"cw_settings_network": "Network",
"cw_settings_off": "Off",
"cw_settings_on": "On",
"cw_settings_theme": "Theme",
"cw_settings_tile": "Show PS5Upload on the home screen",
"cw_settings_tips": "Show tips again",
"cw_settings_using": "Controller and tips",
"cw_settings_version": "Version {version}",
"cw_status_connecting": "Connecting…",
"cw_status_offline": "Not connected",
"cw_task_from_console": "From this console",
"cw_task_from_pc": "From a PC",
"cw_theme_dark": "Dark",
"cw_theme_light": "Light",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Peach",
"cw_tour1_cheats": "Cheats: switch cheats for the running game.",
"cw_tour1_files": "Files: browse, copy, move and delete on the PS5's drives.",
"cw_tour1_home": "Home: the running game, tasks and drives.",
"cw_tour1_settings": "Settings: theme, language, full screen and these tips.",
"cw_tour1_title": "Four sections, on the left",
"cw_tour2_circle": "○ goes back one step.",
"cw_tour2_cross": "✕ selects what is highlighted.",
"cw_tour2_more": "Everything else has a button on screen: highlight it and press ✕. Help, at the bottom left, shows which other buttons work.",
"cw_tour2_title": "✕ selects, ○ goes back",
"cw_tour3_fullscreen": "The page fills the TV after your first press. You can switch full screen off in Settings.",
"cw_tour3_pointer": "Move the pointer with the left stick: what it is over is highlighted, and ✕ clicks it.",
"cw_tour3_title": "The PS5 pointer works too",
"cw_tour_done": "Got it",
"cw_tour_label": "Tips",
"cw_tour_next": "Next",
"cw_tour_skip": "Skip",
"cw_tour_step": "{n} of {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Acciones",
"cw_cheats_apply": "Aplicar",
"cw_cheats_engine_off": "El motor de trucos está apagado. Se inicia al activar un truco.",
"cw_cheats_err_changed": "Los archivos de trucos han cambiado. Se ha vuelto a leer la lista.",
"cw_cheats_err_load": "No se pudieron leer los trucos ({code}). Pulsa Actualizar para intentarlo de nuevo.",
"cw_cheats_err_module": "Este truco necesita una parte del juego que aún no se ha cargado. Inténtalo más adelante en el juego.",
"cw_cheats_err_toggle": "No se pudo cambiar el truco ({code}).",
"cw_cheats_exited": "El juego se ha cerrado.",
"cw_cheats_exited_next": "Vuelve a iniciarlo y sus trucos aparecerán aquí de nuevo.",
"cw_cheats_how": "✕ o □ activa o desactiva el truco seleccionado.",
"cw_cheats_loading": "Cargando trucos…",
"cw_cheats_no_game": "No hay ningún juego en marcha.",
"cw_cheats_no_game_next": "Inicia un juego y luego abre Trucos.",
"cw_cheats_none": "No hay trucos para este juego.",
"cw_cheats_none_next": "Añade trucos para este juego desde la app PS5Upload en tu PC.",
"cw_cheats_off": "Desactivado",
"cw_cheats_on": "Activado",
"cw_cheats_refresh": "Actualizar",
"cw_cheats_switching": "Cambiando…",
"cw_cheats_title": "Trucos",
"cw_cheats_truncated": "No caben todos los trucos aquí. La app PS5Upload en tu PC los muestra todos.",
"cw_ctl_last": "Último pulsado:",
"cw_ctl_logging": "Mientras esta pantalla está abierta, las pulsaciones se guardan en un pequeño registro de esta consola para mejorar la compatibilidad con el mando.",
"cw_ctl_not_yet": "Aún no recibido",
"cw_ctl_ok": "Funciona",
"cw_ctl_other_key": "Otra tecla: {key}",
"cw_ctl_picture": "Mando DualSense",
"cw_ctl_press_each": "Pulsa cada botón una vez para ver qué recibe esta página. ○ cierra esta pantalla, así que púlsalo al final.",
"cw_ctl_received": "Recibido",
"cw_ctl_received_job": "Recibido: {job} (aún sin uso)",
"cw_ctl_system": "Lo usa la PS5",
"cw_ctl_title": "Controles",
"cw_ctl_works": "Funciona: {job}",
"cw_dialog_cancel": "Cancelar",
"cw_files_bad_name": "Usa un nombre sin «/».",
"cw_files_batch_copy": "Copiando {at} de {total}…",
"cw_files_batch_delete": "Eliminando {at} de {total}…",
"cw_files_batch_failed": "{n} fallaron.",
"cw_files_batch_move": "Moviendo {at} de {total}…",
"cw_files_batch_stop": "Detener",
"cw_files_batch_stopped": "Detenido. {n} sin iniciar.",
"cw_files_batch_stopping": "Se detendrá tras este elemento…",
"cw_files_close": "Cerrar",
"cw_files_copy_to": "Copiar a…",
"cw_files_del_body": "Las carpetas se eliminan con todo su contenido. No se puede deshacer.",
"cw_files_del_list_many": "«{name}» y {more} más.",
"cw_files_del_many": "¿Eliminar {n} elementos?",
"cw_files_del_one": "¿Eliminar «{name}»?",
"cw_files_delete": "Eliminar",
"cw_files_done": "Hecho.",
"cw_files_drives": "Unidades",
"cw_files_empty": "Esta carpeta está vacía.",
"cw_files_empty_next": "Copia archivos aquí desde la app PS5Upload de tu PC o crea una nueva carpeta.",
"cw_files_err_denied": "La consola no permite cambios aquí.",
"cw_files_err_exists": "Ya hay algo con ese nombre.",
"cw_files_err_into_itself": "Una carpeta no puede ir dentro de sí misma ni de una de sus subcarpetas.",
"cw_files_err_load": "No se pudo abrir esta carpeta.",
"cw_files_err_missing": "Ya no está.",
"cw_files_err_read": "No se pudo leer.",
"cw_files_fixperm": "Corregir permisos",
"cw_files_fixperm_batch": "Corrigiendo permisos {at} de {total}…",
"cw_files_fixperm_body": "Hace que todo lo de esta carpeta sea legible y ejecutable por la PS5 (chmod 777). Úsalo cuando un juego no arranque tras copiarlo.",
"cw_files_fixperm_done": "Permisos corregidos.",
"cw_files_free": "{free} libres",
"cw_files_here": "Aquí",
"cw_files_info": "Información",
"cw_files_info_items": "Elementos",
"cw_files_info_mode": "Permisos",
"cw_files_info_modified": "Modificado",
"cw_files_info_size": "Tamaño",
"cw_files_info_type": "Tipo",
"cw_files_info_where": "Ubicación",
"cw_files_items": "{n} elementos",
"cw_files_kind_dir": "Carpeta",
"cw_files_kind_file": "Archivo",
"cw_files_kind_link": "Enlace",
"cw_files_more": "Mostrar más",
"cw_files_move_to": "Mover a…",
"cw_files_name": "Nombre",
"cw_files_new_folder": "Nueva carpeta",
"cw_files_no_folders": "No hay carpetas aquí.",
"cw_files_no_folders_next": "Elige «Aquí» para usar esta carpeta.",
"cw_files_ok": "Aceptar",
"cw_files_pick_drive": "Elige una unidad",
"cw_files_rename": "Cambiar nombre",
"cw_files_retry": "Reintentar",
"cw_files_selected": "{n} seleccionados",
"cw_files_some_failed": "{n} fallaron: {reason}",
"cw_files_tasks": "Tareas en curso: {n}",
"cw_files_too_large": "Demasiado grande para la vista previa.",
"cw_files_truncated": "Se muestra el primer 1 MiB.",
"cw_files_up": "Subir",
"cw_files_view": "Ver",
"cw_help_close": "Cerrar",
"cw_help_controls": "Controles",
"cw_help_pointer": "El joystick izquierdo mueve el puntero de la PS5; ✕ hace clic en lo que señala.",
"cw_help_title": "Botones en esta pantalla",
"cw_help_unconfirmed": "Aún no confirmados en esta PS5:",
"cw_hint_back": "Atrás",
"cw_hint_fullscreen": "Pantalla completa",
"cw_hint_help": "Ayuda",
"cw_hint_open": "Abrir",
"cw_hint_page": "Página arriba/abajo",
"cw_hint_refresh": "Actualizar",
"cw_hint_switch": "Activar/desactivar",
"cw_hint_switch_section": "Cambiar de sección",
"cw_hint_top": "Arriba del todo",
"cw_hints_label": "Botones del mando",
"cw_home_cancel_task": "Cancelar",
"cw_home_cancel_task_confirm": "Cancelar tarea",
"cw_home_cheats": "Trucos",
"cw_home_close_game": "Cerrar juego",
"cw_home_confirm_cancel_body": "Se detiene ahora. No se puede deshacer.",
"cw_home_confirm_cancel_body_pc": "Un PC inició esta tarea. También se detiene en el PC.",
"cw_home_confirm_cancel_title": "¿Cancelar esta tarea?",
"cw_home_confirm_close_body": "Se perderá el progreso no guardado del juego.",
"cw_home_confirm_close_title": "¿Cerrar {name}?",
"cw_home_err_busy": "La consola está ocupada. Inténtalo de nuevo en un momento.",
"cw_home_err_failed": "No ha funcionado ({code}).",
"cw_home_err_gone": "Esa tarea ya ha terminado.",
"cw_home_err_load_storage": "No se pudieron leer las unidades.",
"cw_home_err_load_tasks": "No se pudo leer la lista de tareas.",
"cw_home_err_offline": "La consola no respondió. Inténtalo de nuevo.",
"cw_home_free_of": "{free} libres de {total}",
"cw_home_keep_task": "Continuar",
"cw_home_kind_copy": "Copia",
"cw_home_kind_download": "Descarga",
"cw_home_kind_op": "Operación de archivos",
"cw_home_kind_other": "Tarea",
"cw_home_kind_upload": "Subida",
"cw_home_loading": "Cargando…",
"cw_home_no_game_next": "Inicia un juego desde la pantalla de inicio de la PS5; sus trucos aparecerán aquí.",
"cw_home_no_game_plain": "Inicia un juego desde la pantalla de inicio de la PS5.",
"cw_home_no_tasks": "No hay tareas ahora mismo.",
"cw_home_no_tasks_next": "Las subidas desde la app PS5Upload de tu PC aparecen aquí.",
"cw_home_now_running": "En ejecución",
"cw_home_percent": "{n} %",
"cw_home_progress_bytes": "{done} de {total}",
"cw_home_progress_files": "{done} de {total} archivos",
"cw_home_retrying": "Se reintentará en breve.",
"cw_home_state_done": "Hecho",
"cw_home_state_failed": "Error",
"cw_home_state_running": "En curso",
"cw_home_storage": "Almacenamiento",
"cw_home_tasks": "Tareas",
"cw_home_tasks_fewer": "Mostrar menos",
"cw_home_tasks_more": "+{n} más",
"cw_home_vol_ext": "Almacenamiento ampliado",
"cw_home_vol_internal": "Almacenamiento interno",
"cw_home_vol_m2": "Almacenamiento M.2",
"cw_home_vol_readonly": "Solo lectura",
"cw_home_vol_usb": "Unidad USB",
"cw_home_vol_usb_ext": "Almacenamiento ampliado USB",
"cw_job_actions": "Más acciones",
"cw_job_back": "Atrás",
"cw_job_confirm": "Seleccionar / abrir",
"cw_job_fullscreen": "Pantalla completa sí/no",
"cw_job_help": "Ayuda de esta pantalla",
"cw_job_move": "Mover",
"cw_job_mute": "Silenciar micrófono",
"cw_job_next_section": "Sección siguiente",
"cw_job_page_down": "Página abajo",
"cw_job_page_up": "Página arriba",
"cw_job_pointer": "Puntero de la PS5",
"cw_job_prev_section": "Sección anterior",
"cw_job_ps": "Inicio y menú de la PS5",
"cw_job_rail": "Lista de secciones",
"cw_job_refresh": "Actualizar",
"cw_job_scroll": "Desplazar",
"cw_job_select": "Marcar elementos / activar trucos",
"cw_job_top": "Inicio de la lista",
"cw_nav_files": "Archivos",
"cw_nav_home": "Inicio",
"cw_nav_sections": "Secciones",
"cw_nav_settings": "Configuración",
"cw_reload_body": "Recarga esta página para continuar.",
"cw_reload_button": "Recargar",
"cw_reload_title": "El asistente de PS5Upload se reinició",
"cw_select": "Seleccionar",
"cw_settings_about": "Acerca de",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Alto contraste",
"cw_settings_controls": "Controles",
"cw_settings_controls_note": "Qué hace aquí cada botón del mando. Pulsa un botón para probarlo.",
"cw_settings_err_load": "No se pudieron cargar los ajustes.",
"cw_settings_err_save": "No se pudo guardar el ajuste. Inténtalo de nuevo.",
"cw_settings_err_tile_add": "No se pudo añadir PS5Upload a la pantalla de inicio. Inténtalo de nuevo.",
"cw_settings_err_tile_remove": "No se pudo quitar PS5Upload de la pantalla de inicio. Inténtalo de nuevo.",
"cw_settings_fullscreen": "Pantalla completa",
"cw_settings_fullscreen_note": "Oculta las barras del navegador para que la página ocupe toda la TV. Se aplica en tu próxima pulsación.",
"cw_settings_lan": "Permitir otros dispositivos de la red",
"cw_settings_lan_allow": "Permitir",
"cw_settings_lan_confirm_title": "¿Permitir otros dispositivos?",
"cw_settings_lan_off_note": "Al desactivarlo, los demás dispositivos pierden el acceso; esta consola lo conserva.",
"cw_settings_lan_warning": "Cualquiera en tu red podrá usar esta página y administrar tus archivos.",
"cw_settings_language": "Idioma",
"cw_settings_language_system": "Predeterminado del sistema",
"cw_settings_network": "Red",
"cw_settings_off": "No",
"cw_settings_on": "Sí",
"cw_settings_theme": "Tema",
"cw_settings_tile": "Mostrar PS5Upload en la pantalla de inicio",
"cw_settings_tips": "Volver a mostrar consejos",
"cw_settings_using": "Mando y consejos",
"cw_settings_version": "Versión {version}",
"cw_status_connecting": "Conectando…",
"cw_status_offline": "Sin conexión",
"cw_task_from_console": "Desde esta consola",
"cw_task_from_pc": "Desde un PC",
"cw_theme_dark": "Oscuro",
"cw_theme_light": "Claro",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Melocotón",
"cw_tour1_cheats": "Trucos: activa trucos del juego en curso.",
"cw_tour1_files": "Archivos: explora, copia, mueve y borra en las unidades de la PS5.",
"cw_tour1_home": "Inicio: el juego en curso, las tareas y las unidades.",
"cw_tour1_settings": "Configuración: tema, idioma, pantalla completa y estos consejos.",
"cw_tour1_title": "Cuatro secciones, a la izquierda",
"cw_tour2_circle": "○ vuelve un paso atrás.",
"cw_tour2_cross": "✕ selecciona lo resaltado.",
"cw_tour2_more": "Todo lo demás tiene un botón en pantalla: resáltalo y pulsa ✕. Ayuda, abajo a la izquierda, muestra qué otros botones funcionan.",
"cw_tour2_title": "✕ selecciona, ○ vuelve atrás",
"cw_tour3_fullscreen": "La página ocupa todo el televisor tras tu primera pulsación. Puedes desactivar la pantalla completa en Configuración.",
"cw_tour3_pointer": "Mueve el puntero con el joystick izquierdo: lo que señala se resalta y ✕ hace clic en ello.",
"cw_tour3_title": "El puntero de la PS5 también sirve",
"cw_tour_done": "Entendido",
"cw_tour_label": "Consejos",
"cw_tour_next": "Siguiente",
"cw_tour_skip": "Omitir",
"cw_tour_step": "{n} de {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "کارها",
"cw_cheats_apply": "اعمال",
"cw_cheats_engine_off": "موتور چیت خاموش است. با روشن کردن یک چیت راه‌اندازی می‌شود.",
"cw_cheats_err_changed": "فایل‌های چیت تغییر کردند. فهرست دوباره خوانده شد.",
"cw_cheats_err_load": "خواندن چیت‌ها ممکن نشد ({code}). برای تلاش دوباره تازه‌سازی را بزنید.",
"cw_cheats_err_module": "این چیت به بخشی از بازی نیاز دارد که هنوز بارگیری نشده است. بعداً در بازی دوباره امتحان کنید.",
"cw_cheats_err_toggle": "تغییر وضعیت چیت ممکن نشد ({code}).",
"cw_cheats_exited": "بازی بسته شد.",
"cw_cheats_exited_next": "دوباره اجرایش کنید تا چیت‌هایش دوباره اینجا نمایش داده شوند.",
"cw_cheats_how": "✕ یا □ چیت انتخاب‌شده را روشن یا خاموش می‌کند.",
"cw_cheats_loading": "در حال بارگیری چیت‌ها…",
"cw_cheats_no_game": "هیچ بازی‌ای در حال اجرا نیست.",
"cw_cheats_no_game_next": "یک بازی را اجرا کنید، سپس چیت‌ها را باز کنید.",
"cw_cheats_none": "برای این بازی چیتی وجود ندارد.",
"cw_cheats_none_next": "چیت‌های این بازی را از برنامه PS5Upload روی رایانه‌تان اضافه کنید.",
"cw_cheats_off": "خاموش",
"cw_cheats_on": "روشن",
"cw_cheats_refresh": "تازه‌سازی",
"cw_cheats_switching": "در حال تغییر…",
"cw_cheats_title": "چیت‌ها",
"cw_cheats_truncated": "همه چیت‌ها اینجا جا نمی‌شوند. برنامه PS5Upload روی رایانه‌تان همه را نشان می‌دهد.",
"cw_ctl_last": "آخرین دکمه:",
"cw_ctl_logging": "تا وقتی این صفحه باز است، فشار دکمه‌ها در یک گزارش کوچک روی این کنسول ذخیره می‌شود تا پشتیبانی از دسته بهتر شود.",
"cw_ctl_not_yet": "هنوز دریافت نشده",
"cw_ctl_ok": "کار می‌کند",
"cw_ctl_other_key": "کلید دیگر: {key}",
"cw_ctl_picture": "دسته DualSense",
"cw_ctl_press_each": "هر دکمه را یک بار فشار دهید تا ببینید این صفحه چه دریافت می‌کند. ○ این صفحه را می‌بندد، پس آن را آخر از همه بزنید.",
"cw_ctl_received": "دریافت شد",
"cw_ctl_received_job": "دریافت شد: {job} (هنوز استفاده نمی‌شود)",
"cw_ctl_system": "در اختیار PS5",
"cw_ctl_title": "کنترل‌ها",
"cw_ctl_works": "کار می‌کند: {job}",
"cw_dialog_cancel": "لغو",
"cw_files_bad_name": "نامی بدون «/» انتخاب کنید.",
"cw_files_batch_copy": "در حال کپی {at} از {total}…",
"cw_files_batch_delete": "در حال حذف {at} از {total}…",
"cw_files_batch_failed": "{n} مورد ناموفق بود.",
"cw_files_batch_move": "در حال انتقال {at} از {total}…",
"cw_files_batch_stop": "توقف",
"cw_files_batch_stopped": "متوقف شد. {n} مورد شروع نشد.",
"cw_files_batch_stopping": "پس از این مورد متوقف می‌شود…",
"cw_files_close": "بستن",
"cw_files_copy_to": "کپی در…",
"cw_files_del_body": "پوشه‌ها با همه محتوایشان حذف می‌شوند. این کار برگشت‌پذیر نیست.",
"cw_files_del_list_many": "«{name}» و {more} مورد دیگر.",
"cw_files_del_many": "{n} مورد حذف شود؟",
"cw_files_del_one": "«{name}» حذف شود؟",
"cw_files_delete": "حذف",
"cw_files_done": "انجام شد.",
"cw_files_drives": "درایوها",
"cw_files_empty": "این پوشه خالی است.",
"cw_files_empty_next": "از برنامه PS5Upload روی رایانه، فایل‌ها را به اینجا کپی کنید یا یک پوشه جدید بسازید.",
"cw_files_err_denied": "کنسول اجازه تغییر در اینجا را نمی‌دهد.",
"cw_files_err_exists": "موردی با این نام از قبل وجود دارد.",
"cw_files_err_into_itself": "پوشه را نمی‌توان در خودش یا یکی از زیرپوشه‌هایش قرار داد.",
"cw_files_err_load": "این پوشه باز نشد.",
"cw_files_err_missing": "دیگر وجود ندارد.",
"cw_files_err_read": "خوانده نشد.",
"cw_files_fixperm": "اصلاح مجوزها",
"cw_files_fixperm_batch": "در حال اصلاح مجوزها {at} از {total}…",
"cw_files_fixperm_body": "همه چیز در این پوشه را برای PS5 قابل خواندن و اجرا می‌کند (chmod 777). وقتی بازی بعد از کپی شروع نمی‌شود از آن استفاده کنید.",
"cw_files_fixperm_done": "مجوزها اصلاح شد.",
"cw_files_free": "{free} آزاد",
"cw_files_here": "اینجا",
"cw_files_info": "اطلاعات",
"cw_files_info_items": "موارد",
"cw_files_info_mode": "مجوزها",
"cw_files_info_modified": "تغییر",
"cw_files_info_size": "اندازه",
"cw_files_info_type": "نوع",
"cw_files_info_where": "محل",
"cw_files_items": "{n} مورد",
"cw_files_kind_dir": "پوشه",
"cw_files_kind_file": "فایل",
"cw_files_kind_link": "پیوند",
"cw_files_more": "نمایش بیشتر",
"cw_files_move_to": "انتقال به…",
"cw_files_name": "نام",
"cw_files_new_folder": "پوشه جدید",
"cw_files_no_folders": "اینجا پوشه‌ای نیست.",
"cw_files_no_folders_next": "برای استفاده از این پوشه «اینجا» را انتخاب کنید.",
"cw_files_ok": "تأیید",
"cw_files_pick_drive": "یک درایو انتخاب کنید",
"cw_files_rename": "تغییر نام",
"cw_files_retry": "تلاش دوباره",
"cw_files_selected": "{n} انتخاب شده",
"cw_files_some_failed": "{n} ناموفق: {reason}",
"cw_files_tasks": "کارهای در حال اجرا: {n}",
"cw_files_too_large": "برای پیش‌نمایش بیش از حد بزرگ است.",
"cw_files_truncated": "فقط ۱ مبی‌بایت اول نمایش داده می‌شود.",
"cw_files_up": "بالا",
"cw_files_view": "نمایش",
"cw_help_close": "بستن",
"cw_help_controls": "کنترل‌ها",
"cw_help_pointer": "استیک چپ نشانگر PS5 را حرکت می‌دهد؛ ✕ روی چیزی که زیر آن است کلیک می‌کند.",
"cw_help_title": "دکمه‌های این صفحه",
"cw_help_unconfirmed": "هنوز روی این PS5 تأیید نشده:",
"cw_hint_back": "بازگشت",
"cw_hint_fullscreen": "تمام‌صفحه",
"cw_hint_help": "راهنما",
"cw_hint_open": "باز کردن",
"cw_hint_page": "صفحه بالا/پایین",
"cw_hint_refresh": "تازه‌سازی",
"cw_hint_switch": "روشن/خاموش",
"cw_hint_switch_section": "تغییر بخش",
"cw_hint_top": "بالای صفحه",
"cw_hints_label": "دکمه‌های دسته",
"cw_home_cancel_task": "لغو",
"cw_home_cancel_task_confirm": "لغو کار",
"cw_home_cheats": "چیت‌ها",
"cw_home_close_game": "بستن بازی",
"cw_home_confirm_cancel_body": "همین حالا متوقف می‌شود. این کار برگشت‌پذیر نیست.",
"cw_home_confirm_cancel_body_pc": "این کار را یک رایانه شروع کرده است. روی رایانه هم متوقف می‌شود.",
"cw_home_confirm_cancel_title": "این کار لغو شود؟",
"cw_home_confirm_close_body": "پیشرفت ذخیره‌نشده در بازی از بین می‌رود.",
"cw_home_confirm_close_title": "{name} بسته شود؟",
"cw_home_err_busy": "کنسول مشغول است. کمی بعد دوباره تلاش کنید.",
"cw_home_err_failed": "انجام نشد ({code}).",
"cw_home_err_gone": "این کار قبلاً تمام شده است.",
"cw_home_err_load_storage": "درایوها خوانده نشدند.",
"cw_home_err_load_tasks": "فهرست کارها خوانده نشد.",
"cw_home_err_offline": "کنسول پاسخ نداد. دوباره تلاش کنید.",
"cw_home_free_of": "{free} آزاد از {total}",
"cw_home_keep_task": "ادامه بده",
"cw_home_kind_copy": "کپی",
"cw_home_kind_download": "بارگیری",
"cw_home_kind_op": "عملیات فایل",
"cw_home_kind_other": "کار",
"cw_home_kind_upload": "بارگذاری",
"cw_home_loading": "در حال بارگذاری…",
"cw_home_no_game_next": "یک بازی را از صفحه اصلی PS5 اجرا کنید؛ چیت‌های آن اینجا نمایش داده می‌شود.",
"cw_home_no_game_plain": "یک بازی را از صفحه اصلی PS5 اجرا کنید.",
"cw_home_no_tasks": "در حال حاضر کاری نیست.",
"cw_home_no_tasks_next": "آپلودهای برنامه PS5Upload روی رایانه شما اینجا نمایش داده می‌شوند.",
"cw_home_now_running": "در حال اجرا",
"cw_home_percent": "{n}٪",
"cw_home_progress_bytes": "{done} از {total}",
"cw_home_progress_files": "{done} از {total} فایل",
"cw_home_retrying": "به‌زودی دوباره تلاش می‌شود.",
"cw_home_state_done": "انجام شد",
"cw_home_state_failed": "ناموفق",
"cw_home_state_running": "در حال اجرا",
"cw_home_storage": "حافظه",
"cw_home_tasks": "کارها",
"cw_home_tasks_fewer": "نمایش کمتر",
"cw_home_tasks_more": "+{n} مورد دیگر",
"cw_home_vol_ext": "حافظه توسعه‌یافته",
"cw_home_vol_internal": "حافظه داخلی",
"cw_home_vol_m2": "حافظه M.2",
"cw_home_vol_readonly": "فقط‌خواندنی",
"cw_home_vol_usb": "درایو USB",
"cw_home_vol_usb_ext": "حافظه توسعه‌یافته USB",
"cw_job_actions": "کارهای بیشتر",
"cw_job_back": "بازگشت",
"cw_job_confirm": "انتخاب / باز کردن",
"cw_job_fullscreen": "تمام‌صفحه روشن/خاموش",
"cw_job_help": "راهنمای این صفحه",
"cw_job_move": "حرکت",
"cw_job_mute": "بی‌صدا کردن میکروفون",
"cw_job_next_section": "بخش بعدی",
"cw_job_page_down": "صفحه پایین",
"cw_job_page_up": "صفحه بالا",
"cw_job_pointer": "نشانگر PS5",
"cw_job_prev_section": "بخش قبلی",
"cw_job_ps": "خانه و منوی PS5",
"cw_job_rail": "فهرست بخش‌ها",
"cw_job_refresh": "تازه‌سازی",
"cw_job_scroll": "پیمایش",
"cw_job_select": "علامت‌گذاری / روشن و خاموش کردن چیت",
"cw_job_top": "ابتدای فهرست",
"cw_nav_files": "فایل‌ها",
"cw_nav_home": "خانه",
"cw_nav_sections": "بخش‌ها",
"cw_nav_settings": "تنظیمات",
"cw_reload_body": "برای ادامه، این صفحه را دوباره بارگذاری کنید.",
"cw_reload_button": "بارگذاری دوباره",
"cw_reload_title": "راهنمای PS5Upload دوباره راه‌اندازی شد",
"cw_select": "انتخاب",
"cw_settings_about": "درباره",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "کنتراست بالا",
"cw_settings_controls": "کنترل‌ها",
"cw_settings_controls_note": "کار هر دکمه دسته در اینجا. برای آزمایش، یک دکمه را فشار دهید.",
"cw_settings_err_load": "تنظیمات بارگیری نشد.",
"cw_settings_err_save": "تنظیم ذخیره نشد. دوباره تلاش کنید.",
"cw_settings_err_tile_add": "افزودن PS5Upload به صفحه اصلی انجام نشد. دوباره تلاش کنید.",
"cw_settings_err_tile_remove": "حذف PS5Upload از صفحه اصلی انجام نشد. دوباره تلاش کنید.",
"cw_settings_fullscreen": "تمام‌صفحه",
"cw_settings_fullscreen_note": "نوارهای مرورگر را پنهان می‌کند تا صفحه کل تلویزیون را پر کند. با فشار بعدی دکمه اعمال می‌شود.",
"cw_settings_lan": "اجازه به دستگاه‌های دیگر در شبکه",
"cw_settings_lan_allow": "اجازه",
"cw_settings_lan_confirm_title": "به دستگاه‌های دیگر اجازه داده شود؟",
"cw_settings_lan_off_note": "با خاموش کردن، دستگاه‌های دیگر دسترسی را از دست می‌دهند؛ این کنسول دسترسی را نگه می‌دارد.",
"cw_settings_lan_warning": "آن‌گاه هر کسی در شبکه شما می‌تواند از این صفحه استفاده کند و فایل‌هایتان را مدیریت کند.",
"cw_settings_language": "زبان",
"cw_settings_language_system": "پیش‌فرض سیستم",
"cw_settings_network": "شبکه",
"cw_settings_off": "خاموش",
"cw_settings_on": "روشن",
"cw_settings_theme": "تم",
"cw_settings_tile": "نمایش PS5Upload در صفحه اصلی",
"cw_settings_tips": "نمایش دوباره نکته‌ها",
"cw_settings_using": "دسته و نکته‌ها",
"cw_settings_version": "نسخه {version}",
"cw_status_connecting": "در حال اتصال…",
"cw_status_offline": "متصل نیست",
"cw_task_from_console": "از این کنسول",
"cw_task_from_pc": "از رایانه",
"cw_theme_dark": "تیره",
"cw_theme_light": "روشن",
"cw_theme_oled": "OLED",
"cw_theme_peach": "هلویی",
"cw_tour1_cheats": "چیت‌ها: روشن و خاموش کردن چیت‌های بازی در حال اجرا.",
"cw_tour1_files": "فایل‌ها: مرور، کپی، جابه‌جایی و حذف روی درایوهای PS5.",
"cw_tour1_home": "خانه: بازی در حال اجرا، کارها و درایوها.",
"cw_tour1_settings": "تنظیمات: پوسته، زبان، تمام‌صفحه و همین نکته‌ها.",
"cw_tour1_title": "چهار بخش، در سمت چپ",
"cw_tour2_circle": "○ یک قدم برمی‌گردد.",
"cw_tour2_cross": "✕ مورد برجسته را انتخاب می‌کند.",
"cw_tour2_more": "هر کار دیگری یک دکمه روی صفحه دارد: آن را برجسته کنید و ✕ را بزنید. راهنما، پایین سمت چپ، نشان می‌دهد چه دکمه‌های دیگری کار می‌کنند.",
"cw_tour2_title": "✕ انتخاب، ○ بازگشت",
"cw_tour3_fullscreen": "پس از اولین فشار دکمه، صفحه کل تلویزیون را پر می‌کند. تمام‌صفحه را می‌توانید در تنظیمات خاموش کنید.",
"cw_tour3_pointer": "نشانگر را با استیک چپ حرکت دهید: چیزی که زیر آن است برجسته می‌شود و ✕ روی آن کلیک می‌کند.",
"cw_tour3_title": "نشانگر PS5 هم کار می‌کند",
"cw_tour_done": "فهمیدم",
"cw_tour_label": "نکته‌ها",
"cw_tour_next": "بعدی",
"cw_tour_skip": "رد شدن",
"cw_tour_step": "{n} از {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Actions",
"cw_cheats_apply": "Appliquer",
"cw_cheats_engine_off": "Le moteur de cheats est arrêté. Il démarre dès que vous activez un cheat.",
"cw_cheats_err_changed": "Les fichiers de cheats ont changé. La liste a été relue.",
"cw_cheats_err_load": "Impossible de lire les cheats ({code}). Appuyez sur Actualiser pour réessayer.",
"cw_cheats_err_module": "Ce cheat a besoin d'une partie du jeu qui n'est pas encore chargée. Réessayez plus tard dans le jeu.",
"cw_cheats_err_toggle": "Impossible de changer le cheat ({code}).",
"cw_cheats_exited": "Le jeu a été fermé.",
"cw_cheats_exited_next": "Relancez-le et ses cheats réapparaîtront ici.",
"cw_cheats_how": "✕ ou □ active ou désactive le cheat sélectionné.",
"cw_cheats_loading": "Chargement des cheats…",
"cw_cheats_no_game": "Aucun jeu n'est lancé.",
"cw_cheats_no_game_next": "Lancez un jeu, puis ouvrez Cheats.",
"cw_cheats_none": "Aucun cheat pour ce jeu.",
"cw_cheats_none_next": "Ajoutez des cheats pour ce jeu depuis l'app PS5Upload sur votre PC.",
"cw_cheats_off": "Désactivé",
"cw_cheats_on": "Activé",
"cw_cheats_refresh": "Actualiser",
"cw_cheats_switching": "Changement…",
"cw_cheats_title": "Cheats",
"cw_cheats_truncated": "Tous les cheats ne tiennent pas ici. L'app PS5Upload sur votre PC les affiche tous.",
"cw_ctl_last": "Dernier appui :",
"cw_ctl_logging": "Tant que cet écran est ouvert, les appuis sont enregistrés dans un petit journal sur cette console pour améliorer la prise en charge de la manette.",
"cw_ctl_not_yet": "Pas encore reçu",
"cw_ctl_ok": "Fonctionne",
"cw_ctl_other_key": "Autre touche : {key}",
"cw_ctl_picture": "Manette DualSense",
"cw_ctl_press_each": "Appuyez une fois sur chaque bouton pour voir ce que reçoit cette page. ○ ferme cet écran : appuyez dessus en dernier.",
"cw_ctl_received": "Reçu",
"cw_ctl_received_job": "Reçu : {job} (pas encore utilisé)",
"cw_ctl_system": "Utilisé par la PS5",
"cw_ctl_title": "Commandes",
"cw_ctl_works": "Fonctionne : {job}",
"cw_dialog_cancel": "Annuler",
"cw_files_bad_name": "Utilisez un nom sans « / ».",
"cw_files_batch_copy": "Copie {at} sur {total}…",
"cw_files_batch_delete": "Suppression {at} sur {total}…",
"cw_files_batch_failed": "{n} en échec.",
"cw_files_batch_move": "Déplacement {at} sur {total}…",
"cw_files_batch_stop": "Arrêter",
"cw_files_batch_stopped": "Arrêté. {n} non lancé(s).",
"cw_files_batch_stopping": "Arrêt après cet élément…",
"cw_files_close": "Fermer",
"cw_files_copy_to": "Copier vers…",
"cw_files_del_body": "Les dossiers sont supprimés avec tout leur contenu. C'est irréversible.",
"cw_files_del_list_many": "« {name} » et {more} autre(s).",
"cw_files_del_many": "Supprimer {n} éléments ?",
"cw_files_del_one": "Supprimer « {name} » ?",
"cw_files_delete": "Supprimer",
"cw_files_done": "Terminé.",
"cw_files_drives": "Disques",
"cw_files_empty": "Ce dossier est vide.",
"cw_files_empty_next": "Copiez des fichiers ici depuis l'app PS5Upload sur votre PC, ou créez un nouveau dossier.",
"cw_files_err_denied": "La console n'autorise pas de modifications ici.",
"cw_files_err_exists": "Il existe déjà un élément portant ce nom.",
"cw_files_err_into_itself": "Un dossier ne peut pas aller dans lui-même ni dans l'un de ses sous-dossiers.",
"cw_files_err_load": "Impossible d'ouvrir ce dossier.",
"cw_files_err_missing": "Cet élément n'existe plus.",
"cw_files_err_read": "Lecture impossible.",
"cw_files_fixperm": "Corriger les permissions",
"cw_files_fixperm_batch": "Correction des permissions {at} sur {total}…",
"cw_files_fixperm_body": "Rend tout le contenu de ce dossier lisible et exécutable par la PS5 (chmod 777). À utiliser quand un jeu ne démarre pas après la copie.",
"cw_files_fixperm_done": "Permissions corrigées.",
"cw_files_free": "{free} libres",
"cw_files_here": "Ici",
"cw_files_info": "Infos",
"cw_files_info_items": "Éléments",
"cw_files_info_mode": "Autorisations",
"cw_files_info_modified": "Modifié",
"cw_files_info_size": "Taille",
"cw_files_info_type": "Type",
"cw_files_info_where": "Emplacement",
"cw_files_items": "{n} éléments",
"cw_files_kind_dir": "Dossier",
"cw_files_kind_file": "Fichier",
"cw_files_kind_link": "Lien",
"cw_files_more": "Afficher plus",
"cw_files_move_to": "Déplacer vers…",
"cw_files_name": "Nom",
"cw_files_new_folder": "Nouveau dossier",
"cw_files_no_folders": "Aucun dossier ici.",
"cw_files_no_folders_next": "Choisissez « Ici » pour utiliser ce dossier.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Choisissez un disque",
"cw_files_rename": "Renommer",
"cw_files_retry": "Réessayer",
"cw_files_selected": "{n} sélectionné(s)",
"cw_files_some_failed": "{n} en échec : {reason}",
"cw_files_tasks": "Tâches en cours : {n}",
"cw_files_too_large": "Trop volumineux pour l'aperçu.",
"cw_files_truncated": "Affichage du premier Mio.",
"cw_files_up": "Remonter",
"cw_files_view": "Afficher",
"cw_help_close": "Fermer",
"cw_help_controls": "Commandes",
"cw_help_pointer": "Le joystick gauche déplace le pointeur de la PS5 ; ✕ clique sur ce qu'il survole.",
"cw_help_title": "Boutons de cet écran",
"cw_help_unconfirmed": "Pas encore confirmés sur cette PS5 :",
"cw_hint_back": "Retour",
"cw_hint_fullscreen": "Plein écran",
"cw_hint_help": "Aide",
"cw_hint_open": "Ouvrir",
"cw_hint_page": "Page préc./suiv.",
"cw_hint_refresh": "Actualiser",
"cw_hint_switch": "Activer/désactiver",
"cw_hint_switch_section": "Changer de section",
"cw_hint_top": "Haut",
"cw_hints_label": "Boutons de la manette",
"cw_home_cancel_task": "Annuler",
"cw_home_cancel_task_confirm": "Annuler la tâche",
"cw_home_cheats": "Cheats",
"cw_home_close_game": "Fermer le jeu",
"cw_home_confirm_cancel_body": "Elle s'arrête maintenant. Cette action est irréversible.",
"cw_home_confirm_cancel_body_pc": "Un PC a lancé cette tâche. Elle s'arrête aussi sur le PC.",
"cw_home_confirm_cancel_title": "Annuler cette tâche ?",
"cw_home_confirm_close_body": "La progression non sauvegardée du jeu sera perdue.",
"cw_home_confirm_close_title": "Fermer {name} ?",
"cw_home_err_busy": "La console est occupée. Réessayez dans un instant.",
"cw_home_err_failed": "Cela n'a pas fonctionné ({code}).",
"cw_home_err_gone": "Cette tâche est déjà terminée.",
"cw_home_err_load_storage": "Impossible de lire les disques.",
"cw_home_err_load_tasks": "Impossible de lire la liste des tâches.",
"cw_home_err_offline": "La console n'a pas répondu. Réessayez.",
"cw_home_free_of": "{free} libres sur {total}",
"cw_home_keep_task": "Continuer",
"cw_home_kind_copy": "Copie",
"cw_home_kind_download": "Téléchargement",
"cw_home_kind_op": "Opération sur les fichiers",
"cw_home_kind_other": "Tâche",
"cw_home_kind_upload": "Envoi",
"cw_home_loading": "Chargement…",
"cw_home_no_game_next": "Lancez un jeu depuis l'écran d'accueil de la PS5 ; ses cheats apparaissent ici.",
"cw_home_no_game_plain": "Lancez un jeu depuis l'écran d'accueil de la PS5.",
"cw_home_no_tasks": "Aucune tâche pour le moment.",
"cw_home_no_tasks_next": "Les envois depuis l'app PS5Upload sur votre PC apparaissent ici.",
"cw_home_now_running": "En cours d'exécution",
"cw_home_percent": "{n} %",
"cw_home_progress_bytes": "{done} sur {total}",
"cw_home_progress_files": "{done} fichiers sur {total}",
"cw_home_retrying": "Nouvel essai sous peu.",
"cw_home_state_done": "Terminé",
"cw_home_state_failed": "Échec",
"cw_home_state_running": "En cours",
"cw_home_storage": "Stockage",
"cw_home_tasks": "Tâches",
"cw_home_tasks_fewer": "Afficher moins",
"cw_home_tasks_more": "+{n} de plus",
"cw_home_vol_ext": "Stockage étendu",
"cw_home_vol_internal": "Stockage interne",
"cw_home_vol_m2": "Stockage M.2",
"cw_home_vol_readonly": "Lecture seule",
"cw_home_vol_usb": "Clé USB",
"cw_home_vol_usb_ext": "Stockage étendu USB",
"cw_job_actions": "Plus d'actions",
"cw_job_back": "Retour",
"cw_job_confirm": "Sélectionner / ouvrir",
"cw_job_fullscreen": "Plein écran oui/non",
"cw_job_help": "Aide de cet écran",
"cw_job_move": "Déplacer",
"cw_job_mute": "Couper le micro",
"cw_job_next_section": "Section suivante",
"cw_job_page_down": "Page suivante",
"cw_job_page_up": "Page précédente",
"cw_job_pointer": "Pointeur de la PS5",
"cw_job_prev_section": "Section précédente",
"cw_job_ps": "Accueil et menu de la PS5",
"cw_job_rail": "Liste des sections",
"cw_job_refresh": "Actualiser",
"cw_job_scroll": "Défiler",
"cw_job_select": "Marquer / activer des cheats",
"cw_job_top": "Haut de la liste",
"cw_nav_files": "Fichiers",
"cw_nav_home": "Accueil",
"cw_nav_sections": "Sections",
"cw_nav_settings": "Paramètres",
"cw_reload_body": "Rechargez cette page pour continuer.",
"cw_reload_button": "Recharger",
"cw_reload_title": "L'assistant PS5Upload a redémarré",
"cw_select": "Sélectionner",
"cw_settings_about": "À propos",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Contraste élevé",
"cw_settings_controls": "Commandes",
"cw_settings_controls_note": "Ce que fait ici chaque bouton de la manette. Appuyez sur un bouton pour le tester.",
"cw_settings_err_load": "Impossible de charger les réglages.",
"cw_settings_err_save": "Impossible d'enregistrer le réglage. Réessayez.",
"cw_settings_err_tile_add": "Impossible d'ajouter PS5Upload à l'écran d'accueil. Réessayez.",
"cw_settings_err_tile_remove": "Impossible de retirer PS5Upload de l'écran d'accueil. Réessayez.",
"cw_settings_fullscreen": "Plein écran",
"cw_settings_fullscreen_note": "Masque les barres du navigateur pour que la page remplisse la TV. Prend effet à votre prochaine pression de touche.",
"cw_settings_lan": "Autoriser les autres appareils du réseau",
"cw_settings_lan_allow": "Autoriser",
"cw_settings_lan_confirm_title": "Autoriser les autres appareils ?",
"cw_settings_lan_off_note": "Si vous désactivez ceci, les autres appareils perdent l'accès ; cette console le garde.",
"cw_settings_lan_warning": "Toute personne de votre réseau pourra alors utiliser cette page et gérer vos fichiers.",
"cw_settings_language": "Langue",
"cw_settings_language_system": "Par défaut du système",
"cw_settings_network": "Réseau",
"cw_settings_off": "Désactivé",
"cw_settings_on": "Activé",
"cw_settings_theme": "Thème",
"cw_settings_tile": "Afficher PS5Upload sur l'écran d'accueil",
"cw_settings_tips": "Revoir les astuces",
"cw_settings_using": "Manette et astuces",
"cw_settings_version": "Version : {version}",
"cw_status_connecting": "Connexion…",
"cw_status_offline": "Non connecté",
"cw_task_from_console": "Depuis cette console",
"cw_task_from_pc": "Depuis un PC",
"cw_theme_dark": "Sombre",
"cw_theme_light": "Clair",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Pêche",
"cw_tour1_cheats": "Cheats : activer les cheats du jeu en cours.",
"cw_tour1_files": "Fichiers : parcourir, copier, déplacer et supprimer sur les disques de la PS5.",
"cw_tour1_home": "Accueil : le jeu en cours, les tâches et les disques.",
"cw_tour1_settings": "Paramètres : thème, langue, plein écran et ces astuces.",
"cw_tour1_title": "Quatre sections, à gauche",
"cw_tour2_circle": "○ revient d'une étape.",
"cw_tour2_cross": "✕ sélectionne l'élément en surbrillance.",
"cw_tour2_more": "Tout le reste a un bouton à l'écran : mettez-le en surbrillance et appuyez sur ✕. Aide, en bas à gauche, indique quels autres boutons fonctionnent.",
"cw_tour2_title": "✕ sélectionne, ○ revient",
"cw_tour3_fullscreen": "La page remplit la télé après votre premier appui. Vous pouvez désactiver le plein écran dans Paramètres.",
"cw_tour3_pointer": "Déplacez le pointeur avec le joystick gauche : ce qu'il survole est mis en surbrillance et ✕ clique dessus.",
"cw_tour3_title": "Le pointeur de la PS5 marche aussi",
"cw_tour_done": "Compris",
"cw_tour_label": "Astuces",
"cw_tour_next": "Suivant",
"cw_tour_skip": "Passer",
"cw_tour_step": "{n} sur {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "कार्य",
"cw_cheats_apply": "लागू करें",
"cw_cheats_engine_off": "चीट इंजन बंद है। कोई चीट चालू करने पर यह शुरू हो जाता है।",
"cw_cheats_err_changed": "चीट फ़ाइलें बदल गईं। सूची फिर से पढ़ी गई।",
"cw_cheats_err_load": "चीट नहीं पढ़े जा सके ({code})। फिर से कोशिश करने के लिए रीफ़्रेश दबाएँ।",
"cw_cheats_err_module": "इस चीट को गेम का ऐसा हिस्सा चाहिए जो अभी लोड नहीं हुआ है। गेम में आगे चलकर फिर से कोशिश करें।",
"cw_cheats_err_toggle": "चीट नहीं बदला जा सका ({code})।",
"cw_cheats_exited": "गेम बंद हो गया।",
"cw_cheats_exited_next": "इसे फिर से शुरू करें, इसके चीट यहाँ वापस आ जाएँगे।",
"cw_cheats_how": "✕ या □ चुने गए चीट को चालू या बंद करता है।",
"cw_cheats_loading": "चीट लोड हो रहे हैं…",
"cw_cheats_no_game": "कोई गेम नहीं चल रहा है।",
"cw_cheats_no_game_next": "कोई गेम शुरू करें, फिर चीट खोलें।",
"cw_cheats_none": "इस गेम के लिए कोई चीट नहीं है।",
"cw_cheats_none_next": "इस गेम के चीट अपने PC पर PS5Upload ऐप से जोड़ें।",
"cw_cheats_off": "बंद",
"cw_cheats_on": "चालू",
"cw_cheats_refresh": "रीफ़्रेश करें",
"cw_cheats_switching": "बदला जा रहा है…",
"cw_cheats_title": "चीट",
"cw_cheats_truncated": "सभी चीट यहाँ नहीं समाते। आपके PC पर PS5Upload ऐप सभी दिखाता है।",
"cw_ctl_last": "आख़िरी दबाया:",
"cw_ctl_logging": "जब तक यह स्क्रीन खुली है, कंट्रोलर सपोर्ट बेहतर करने के लिए बटन दबाना इस कंसोल के एक छोटे लॉग में सहेजा जाता है।",
"cw_ctl_not_yet": "अभी नहीं मिला",
"cw_ctl_ok": "काम करता है",
"cw_ctl_other_key": "दूसरी कुंजी: {key}",
"cw_ctl_picture": "DualSense कंट्रोलर",
"cw_ctl_press_each": "हर बटन एक बार दबाएँ और देखें कि यह पेज क्या पाता है। ○ यह स्क्रीन बंद कर देता है, इसलिए उसे सबसे आख़िर में दबाएँ।",
"cw_ctl_received": "मिला",
"cw_ctl_received_job": "मिला: {job} (अभी इस्तेमाल नहीं)",
"cw_ctl_system": "PS5 इस्तेमाल करता है",
"cw_ctl_title": "कंट्रोल",
"cw_ctl_works": "काम करता है: {job}",
"cw_dialog_cancel": "रद्द करें",
"cw_files_bad_name": "ऐसा नाम रखें जिसमें “/” न हो।",
"cw_files_batch_copy": "{total} में से {at} कॉपी हो रहा है…",
"cw_files_batch_delete": "{total} में से {at} हटाया जा रहा है…",
"cw_files_batch_failed": "{n} विफल रहे।",
"cw_files_batch_move": "{total} में से {at} ले जाया जा रहा है…",
"cw_files_batch_stop": "रोकें",
"cw_files_batch_stopped": "रोक दिया गया। {n} शुरू नहीं हुए।",
"cw_files_batch_stopping": "इस आइटम के बाद रुकेगा…",
"cw_files_close": "बंद करें",
"cw_files_copy_to": "यहाँ कॉपी करें…",
"cw_files_del_body": "फ़ोल्डर अपनी पूरी सामग्री के साथ हटाए जाते हैं। इसे पूर्ववत नहीं किया जा सकता।",
"cw_files_del_list_many": "“{name}” और {more} अन्य।",
"cw_files_del_many": "{n} आइटम हटाएँ?",
"cw_files_del_one": "“{name}” हटाएँ?",
"cw_files_delete": "हटाएँ",
"cw_files_done": "हो गया।",
"cw_files_drives": "ड्राइव",
"cw_files_empty": "यह फ़ोल्डर खाली है।",
"cw_files_empty_next": "अपने PC के PS5Upload ऐप से फ़ाइलें यहाँ कॉपी करें, या नया फ़ोल्डर बनाएँ।",
"cw_files_err_denied": "कंसोल यहाँ बदलाव की अनुमति नहीं देता।",
"cw_files_err_exists": "इस नाम का आइटम पहले से मौजूद है।",
"cw_files_err_into_itself": "फ़ोल्डर को उसी के अंदर या उसके किसी सब-फ़ोल्डर में नहीं रखा जा सकता।",
"cw_files_err_load": "यह फ़ोल्डर नहीं खुल सका।",
"cw_files_err_missing": "यह अब मौजूद नहीं है।",
"cw_files_err_read": "पढ़ा नहीं जा सका।",
"cw_files_fixperm": "अनुमतियाँ ठीक करें",
"cw_files_fixperm_batch": "अनुमतियाँ ठीक की जा रही हैं: {total} में से {at}…",
"cw_files_fixperm_body": "इस फ़ोल्डर की हर चीज़ को PS5 के लिए पढ़ने और चलाने योग्य बनाता है (chmod 777)। कॉपी के बाद गेम शुरू न हो तो इसका उपयोग करें।",
"cw_files_fixperm_done": "अनुमतियाँ ठीक कर दी गईं।",
"cw_files_free": "{free} खाली",
"cw_files_here": "यहाँ",
"cw_files_info": "जानकारी",
"cw_files_info_items": "आइटम",
"cw_files_info_mode": "अनुमतियाँ",
"cw_files_info_modified": "बदला गया",
"cw_files_info_size": "आकार",
"cw_files_info_type": "प्रकार",
"cw_files_info_where": "स्थान",
"cw_files_items": "{n} आइटम",
"cw_files_kind_dir": "फ़ोल्डर",
"cw_files_kind_file": "फ़ाइल",
"cw_files_kind_link": "लिंक",
"cw_files_more": "और दिखाएँ",
"cw_files_move_to": "यहाँ ले जाएँ…",
"cw_files_name": "नाम",
"cw_files_new_folder": "नया फ़ोल्डर",
"cw_files_no_folders": "यहाँ कोई फ़ोल्डर नहीं है।",
"cw_files_no_folders_next": "यह फ़ोल्डर इस्तेमाल करने के लिए “यहाँ” चुनें।",
"cw_files_ok": "ठीक है",
"cw_files_pick_drive": "ड्राइव चुनें",
"cw_files_rename": "नाम बदलें",
"cw_files_retry": "फिर से कोशिश करें",
"cw_files_selected": "{n} चुने गए",
"cw_files_some_failed": "{n} विफल: {reason}",
"cw_files_tasks": "चल रहे कार्य: {n}",
"cw_files_too_large": "पूर्वावलोकन के लिए बहुत बड़ा है।",
"cw_files_truncated": "पहला 1 MiB दिखाया जा रहा है।",
"cw_files_up": "ऊपर",
"cw_files_view": "देखें",
"cw_help_close": "बंद करें",
"cw_help_controls": "कंट्रोल",
"cw_help_pointer": "बायाँ स्टिक PS5 पॉइंटर चलाता है; ✕ उस पर क्लिक करता है जिस पर पॉइंटर है।",
"cw_help_title": "इस स्क्रीन के बटन",
"cw_help_unconfirmed": "इस PS5 पर अभी पुष्टि नहीं हुई:",
"cw_hint_back": "वापस",
"cw_hint_fullscreen": "फ़ुल स्क्रीन",
"cw_hint_help": "सहायता",
"cw_hint_open": "खोलें",
"cw_hint_page": "पेज ऊपर/नीचे",
"cw_hint_refresh": "रीफ़्रेश करें",
"cw_hint_switch": "चालू/बंद",
"cw_hint_switch_section": "अनुभाग बदलें",
"cw_hint_top": "सबसे ऊपर",
"cw_hints_label": "कंट्रोलर के बटन",
"cw_home_cancel_task": "रद्द करें",
"cw_home_cancel_task_confirm": "कार्य रद्द करें",
"cw_home_cheats": "चीट",
"cw_home_close_game": "गेम बंद करें",
"cw_home_confirm_cancel_body": "यह अभी रुक जाएगा। इसे पूर्ववत नहीं किया जा सकता।",
"cw_home_confirm_cancel_body_pc": "यह कार्य एक PC ने शुरू किया था। यह PC पर भी रुक जाएगा।",
"cw_home_confirm_cancel_title": "यह कार्य रद्द करें?",
"cw_home_confirm_close_body": "गेम की बिना सहेजी प्रगति खो जाएगी।",
"cw_home_confirm_close_title": "{name} बंद करें?",
"cw_home_err_busy": "कंसोल व्यस्त है। थोड़ी देर बाद फिर से कोशिश करें।",
"cw_home_err_failed": "यह काम नहीं किया ({code})।",
"cw_home_err_gone": "वह कार्य पहले ही खत्म हो चुका है।",
"cw_home_err_load_storage": "ड्राइव पढ़ी नहीं जा सकीं।",
"cw_home_err_load_tasks": "कार्य सूची पढ़ी नहीं जा सकी।",
"cw_home_err_offline": "कंसोल ने जवाब नहीं दिया। फिर से कोशिश करें।",
"cw_home_free_of": "{total} में से {free} खाली",
"cw_home_keep_task": "चलने दें",
"cw_home_kind_copy": "कॉपी",
"cw_home_kind_download": "डाउनलोड",
"cw_home_kind_op": "फ़ाइल कार्रवाई",
"cw_home_kind_other": "कार्य",
"cw_home_kind_upload": "अपलोड",
"cw_home_loading": "लोड हो रहा है…",
"cw_home_no_game_next": "PS5 होम स्क्रीन से कोई गेम शुरू करें; उसके चीट यहाँ दिखेंगे।",
"cw_home_no_game_plain": "PS5 होम स्क्रीन से कोई गेम शुरू करें।",
"cw_home_no_tasks": "अभी कोई कार्य नहीं है।",
"cw_home_no_tasks_next": "आपके PC के PS5Upload ऐप से अपलोड यहाँ दिखते हैं।",
"cw_home_now_running": "अभी चल रहा है",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{total} में से {done}",
"cw_home_progress_files": "{total} में से {done} फ़ाइलें",
"cw_home_retrying": "थोड़ी देर में फिर कोशिश होगी।",
"cw_home_state_done": "पूरा हुआ",
"cw_home_state_failed": "विफल",
"cw_home_state_running": "चल रहा है",
"cw_home_storage": "स्टोरेज",
"cw_home_tasks": "कार्य",
"cw_home_tasks_fewer": "कम दिखाएँ",
"cw_home_tasks_more": "+{n} और",
"cw_home_vol_ext": "विस्तारित स्टोरेज",
"cw_home_vol_internal": "आंतरिक स्टोरेज",
"cw_home_vol_m2": "M.2 स्टोरेज",
"cw_home_vol_readonly": "केवल पढ़ने योग्य",
"cw_home_vol_usb": "USB ड्राइव",
"cw_home_vol_usb_ext": "USB विस्तारित स्टोरेज",
"cw_job_actions": "और कार्रवाइयाँ",
"cw_job_back": "वापस",
"cw_job_confirm": "चुनें / खोलें",
"cw_job_fullscreen": "फ़ुल स्क्रीन चालू/बंद",
"cw_job_help": "इस स्क्रीन की सहायता",
"cw_job_move": "हिलाएँ",
"cw_job_mute": "माइक्रोफ़ोन म्यूट",
"cw_job_next_section": "अगला सेक्शन",
"cw_job_page_down": "पेज नीचे",
"cw_job_page_up": "पेज ऊपर",
"cw_job_pointer": "PS5 पॉइंटर",
"cw_job_prev_section": "पिछला सेक्शन",
"cw_job_ps": "PS5 होम और मेन्यू",
"cw_job_rail": "सेक्शन सूची",
"cw_job_refresh": "रीफ़्रेश",
"cw_job_scroll": "स्क्रॉल",
"cw_job_select": "आइटम चिह्नित करें / चीट चालू-बंद",
"cw_job_top": "सूची की शुरुआत",
"cw_nav_files": "फ़ाइलें",
"cw_nav_home": "होम",
"cw_nav_sections": "अनुभाग",
"cw_nav_settings": "सेटिंग्स",
"cw_reload_body": "जारी रखने के लिए यह पेज फिर से लोड करें।",
"cw_reload_button": "फिर से लोड करें",
"cw_reload_title": "PS5Upload हेल्पर फिर से शुरू हुआ",
"cw_select": "चुनें",
"cw_settings_about": "परिचय",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "उच्च कंट्रास्ट",
"cw_settings_controls": "कंट्रोल",
"cw_settings_controls_note": "यहाँ हर कंट्रोलर बटन क्या करता है। जाँचने के लिए कोई बटन दबाएँ।",
"cw_settings_err_load": "सेटिंग लोड नहीं हो सकीं।",
"cw_settings_err_save": "सेटिंग सहेजी नहीं जा सकी। फिर कोशिश करें।",
"cw_settings_err_tile_add": "होम स्क्रीन पर PS5Upload नहीं जोड़ा जा सका। फिर कोशिश करें।",
"cw_settings_err_tile_remove": "होम स्क्रीन से PS5Upload नहीं हटाया जा सका। फिर कोशिश करें।",
"cw_settings_fullscreen": "फ़ुल स्क्रीन",
"cw_settings_fullscreen_note": "ब्राउज़र की पट्टियाँ छिपाता है ताकि पेज पूरे टीवी पर दिखे। अगली बार बटन दबाने पर लागू होता है।",
"cw_settings_lan": "नेटवर्क के अन्य डिवाइस को अनुमति दें",
"cw_settings_lan_allow": "अनुमति दें",
"cw_settings_lan_confirm_title": "अन्य डिवाइस को अनुमति दें?",
"cw_settings_lan_off_note": "बंद करने पर अन्य डिवाइस की पहुँच चली जाती है; इस कंसोल की पहुँच बनी रहती है।",
"cw_settings_lan_warning": "तब आपके नेटवर्क पर कोई भी इस पेज का उपयोग कर सकेगा और आपकी फ़ाइलें प्रबंधित कर सकेगा।",
"cw_settings_language": "भाषा",
"cw_settings_language_system": "सिस्टम डिफ़ॉल्ट",
"cw_settings_network": "नेटवर्क",
"cw_settings_off": "बंद",
"cw_settings_on": "चालू",
"cw_settings_theme": "थीम",
"cw_settings_tile": "होम स्क्रीन पर PS5Upload दिखाएँ",
"cw_settings_tips": "सुझाव फिर दिखाएँ",
"cw_settings_using": "कंट्रोलर और सुझाव",
"cw_settings_version": "संस्करण {version}",
"cw_status_connecting": "कनेक्ट हो रहा है…",
"cw_status_offline": "कनेक्ट नहीं है",
"cw_task_from_console": "इस कंसोल से",
"cw_task_from_pc": "PC से",
"cw_theme_dark": "गहरा",
"cw_theme_light": "हल्का",
"cw_theme_oled": "OLED",
"cw_theme_peach": "पीच",
"cw_tour1_cheats": "चीट: चल रहे गेम के चीट चालू-बंद करें।",
"cw_tour1_files": "फ़ाइलें: PS5 की ड्राइव पर ब्राउज़, कॉपी, मूव और डिलीट करें।",
"cw_tour1_home": "होम: चल रहा गेम, टास्क और ड्राइव।",
"cw_tour1_settings": "सेटिंग्स: थीम, भाषा, फ़ुल स्क्रीन और ये सुझाव।",
"cw_tour1_title": "बाईं ओर चार सेक्शन",
"cw_tour2_circle": "○ एक कदम वापस जाता है।",
"cw_tour2_cross": "✕ हाइलाइट की गई चीज़ चुनता है।",
"cw_tour2_more": "बाकी हर चीज़ का स्क्रीन पर एक बटन है: उसे हाइलाइट करें और ✕ दबाएँ। नीचे बाईं ओर सहायता बताती है कि और कौन-से बटन काम करते हैं।",
"cw_tour2_title": "✕ चुनता है, ○ वापस जाता है",
"cw_tour3_fullscreen": "पहली बार बटन दबाने के बाद पेज पूरे टीवी पर दिखता है। फ़ुल स्क्रीन को सेटिंग्स में बंद कर सकते हैं।",
"cw_tour3_pointer": "बाएँ स्टिक से पॉइंटर चलाएँ: जिस पर वह है वह हाइलाइट होता है, और ✕ उस पर क्लिक करता है।",
"cw_tour3_title": "PS5 पॉइंटर भी चलता है",
"cw_tour_done": "समझ गया",
"cw_tour_label": "सुझाव",
"cw_tour_next": "आगे",
"cw_tour_skip": "छोड़ें",
"cw_tour_step": "{total} में से {n}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Műveletek",
"cw_cheats_apply": "Alkalmaz",
"cw_cheats_engine_off": "A csalásmotor ki van kapcsolva. Elindul, amikor bekapcsolsz egy csalást.",
"cw_cheats_err_changed": "A csalásfájlok megváltoztak. A lista újra beolvasva.",
"cw_cheats_err_load": "Nem sikerült beolvasni a csalásokat ({code}). Nyomd meg a Frissítést az újrapróbáláshoz.",
"cw_cheats_err_module": "Ehhez a csaláshoz a játék egy még be nem töltött része kell. Próbáld újra később a játékban.",
"cw_cheats_err_toggle": "Nem sikerült átváltani a csalást ({code}).",
"cw_cheats_exited": "A játék bezárult.",
"cw_cheats_exited_next": "Indítsd el újra, és a csalásai ismét itt lesznek.",
"cw_cheats_how": "Az ✕ vagy a □ be- vagy kikapcsolja a kijelölt csalást.",
"cw_cheats_loading": "Csalások betöltése…",
"cw_cheats_no_game": "Nem fut játék.",
"cw_cheats_no_game_next": "Indíts el egy játékot, majd nyisd meg a Csalásokat.",
"cw_cheats_none": "Ehhez a játékhoz nincsenek csalások.",
"cw_cheats_none_next": "Adj hozzá csalásokat ehhez a játékhoz a PC-n futó PS5Upload alkalmazásból.",
"cw_cheats_off": "Ki",
"cw_cheats_on": "Be",
"cw_cheats_refresh": "Frissítés",
"cw_cheats_switching": "Váltás…",
"cw_cheats_title": "Csalások",
"cw_cheats_truncated": "Nem fér ide minden csalás. A PC-n futó PS5Upload alkalmazás mindet mutatja.",
"cw_ctl_last": "Utoljára megnyomva:",
"cw_ctl_logging": "Amíg ez a képernyő nyitva van, a gombnyomások egy kis naplóba kerülnek ezen a konzolon, hogy jobb legyen a kontroller támogatása.",
"cw_ctl_not_yet": "Még nem érkezett",
"cw_ctl_ok": "Működik",
"cw_ctl_other_key": "Más billentyű: {key}",
"cw_ctl_picture": "DualSense kontroller",
"cw_ctl_press_each": "Nyomd meg minden gombot egyszer, hogy lásd, mit kap meg ez az oldal. A ○ bezárja ezt a képernyőt, ezért azt nyomd meg utoljára.",
"cw_ctl_received": "Megérkezett",
"cw_ctl_received_job": "Megérkezett: {job} (még nincs használatban)",
"cw_ctl_system": "A PS5 használja",
"cw_ctl_title": "Irányítás",
"cw_ctl_works": "Működik: {job}",
"cw_dialog_cancel": "Mégse",
"cw_files_bad_name": "A név nem tartalmazhat „/” jelet.",
"cw_files_batch_copy": "Másolás: {at}/{total}…",
"cw_files_batch_delete": "Törlés: {at}/{total}…",
"cw_files_batch_failed": "{n} nem sikerült.",
"cw_files_batch_move": "Áthelyezés: {at}/{total}…",
"cw_files_batch_stop": "Leállítás",
"cw_files_batch_stopped": "Leállítva. {n} nem indult el.",
"cw_files_batch_stopping": "Leáll ennél az elemnél…",
"cw_files_close": "Bezárás",
"cw_files_copy_to": "Másolás ide…",
"cw_files_del_body": "A mappák a teljes tartalmukkal törlődnek. Ez nem vonható vissza.",
"cw_files_del_list_many": "„{name}” és még {more}.",
"cw_files_del_many": "Törölsz {n} elemet?",
"cw_files_del_one": "Törlöd ezt: „{name}”?",
"cw_files_delete": "Törlés",
"cw_files_done": "Kész.",
"cw_files_drives": "Meghajtók",
"cw_files_empty": "Ez a mappa üres.",
"cw_files_empty_next": "Másolj ide fájlokat a számítógépeden futó PS5Upload alkalmazásból, vagy hozz létre új mappát.",
"cw_files_err_denied": "A konzol itt nem enged módosítást.",
"cw_files_err_exists": "Ilyen nevű elem már létezik itt.",
"cw_files_err_into_itself": "Mappa nem kerülhet önmagába vagy egy almappájába.",
"cw_files_err_load": "Nem sikerült megnyitni a mappát.",
"cw_files_err_missing": "Már nincs ott.",
"cw_files_err_read": "Nem sikerült beolvasni.",
"cw_files_fixperm": "Jogosultságok javítása",
"cw_files_fixperm_batch": "Jogosultságok javítása: {at} / {total}…",
"cw_files_fixperm_body": "Az ebben a mappában lévő mindent olvashatóvá és futtathatóvá tesz a PS5 számára (chmod 777). Akkor használd, ha egy játék másolás után nem indul.",
"cw_files_fixperm_done": "Jogosultságok javítva.",
"cw_files_free": "{free} szabad",
"cw_files_here": "Ide",
"cw_files_info": "Adatok",
"cw_files_info_items": "Elemek",
"cw_files_info_mode": "Jogosultságok",
"cw_files_info_modified": "Módosítva",
"cw_files_info_size": "Méret",
"cw_files_info_type": "Típus",
"cw_files_info_where": "Hely",
"cw_files_items": "{n} elem",
"cw_files_kind_dir": "Mappa",
"cw_files_kind_file": "Fájl",
"cw_files_kind_link": "Hivatkozás",
"cw_files_more": "Több",
"cw_files_move_to": "Áthelyezés ide…",
"cw_files_name": "Név",
"cw_files_new_folder": "Új mappa",
"cw_files_no_folders": "Itt nincsenek mappák.",
"cw_files_no_folders_next": "Válaszd az „Ide” lehetőséget ennek a mappának a használatához.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Válassz meghajtót",
"cw_files_rename": "Átnevezés",
"cw_files_retry": "Újra",
"cw_files_selected": "{n} kijelölve",
"cw_files_some_failed": "{n} sikertelen: {reason}",
"cw_files_tasks": "Futó feladatok: {n}",
"cw_files_too_large": "Túl nagy az előnézethez.",
"cw_files_truncated": "Az első 1 MiB látható.",
"cw_files_up": "Fel",
"cw_files_view": "Megtekintés",
"cw_help_close": "Bezárás",
"cw_help_controls": "Irányítás",
"cw_help_pointer": "A bal kar mozgatja a PS5 mutatóját; a ✕ rákattint arra, ami alatta van.",
"cw_help_title": "Gombok ezen a képernyőn",
"cw_help_unconfirmed": "Ezen a PS5-ön még nincs megerősítve:",
"cw_hint_back": "Vissza",
"cw_hint_fullscreen": "Teljes képernyő",
"cw_hint_help": "Súgó",
"cw_hint_open": "Megnyitás",
"cw_hint_page": "Lapozás fel/le",
"cw_hint_refresh": "Frissítés",
"cw_hint_switch": "Be/ki",
"cw_hint_switch_section": "Rész váltása",
"cw_hint_top": "Elejére",
"cw_hints_label": "Kontroller gombjai",
"cw_home_cancel_task": "Megszakítás",
"cw_home_cancel_task_confirm": "Feladat megszakítása",
"cw_home_cheats": "Csalások",
"cw_home_close_game": "Játék bezárása",
"cw_home_confirm_cancel_body": "Azonnal leáll. Ez nem vonható vissza.",
"cw_home_confirm_cancel_body_pc": "Ezt a feladatot egy PC indította. A PC-n is leáll.",
"cw_home_confirm_cancel_title": "Megszakítod ezt a feladatot?",
"cw_home_confirm_close_body": "A játékban el nem mentett haladás elvész.",
"cw_home_confirm_close_title": "Bezárod: {name}?",
"cw_home_err_busy": "A konzol foglalt. Próbáld újra egy pillanat múlva.",
"cw_home_err_failed": "Ez nem sikerült ({code}).",
"cw_home_err_gone": "Ez a feladat már befejeződött.",
"cw_home_err_load_storage": "Nem sikerült beolvasni a meghajtókat.",
"cw_home_err_load_tasks": "Nem sikerült beolvasni a feladatlistát.",
"cw_home_err_offline": "A konzol nem válaszolt. Próbáld újra.",
"cw_home_free_of": "{free} szabad / {total}",
"cw_home_keep_task": "Folytatás",
"cw_home_kind_copy": "Másolás",
"cw_home_kind_download": "Letöltés",
"cw_home_kind_op": "Fájlművelet",
"cw_home_kind_other": "Feladat",
"cw_home_kind_upload": "Feltöltés",
"cw_home_loading": "Betöltés…",
"cw_home_no_game_next": "Indíts el egy játékot a PS5 kezdőképernyőjéről; a csalások itt jelennek meg.",
"cw_home_no_game_plain": "Indíts el egy játékot a PS5 kezdőképernyőjéről.",
"cw_home_no_tasks": "Most nincs feladat.",
"cw_home_no_tasks_next": "A számítógépeden futó PS5Upload alkalmazásból indított feltöltések itt jelennek meg.",
"cw_home_now_running": "Most fut",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} / {total}",
"cw_home_progress_files": "{done} / {total} fájl",
"cw_home_retrying": "Hamarosan újrapróbálja.",
"cw_home_state_done": "Kész",
"cw_home_state_failed": "Sikertelen",
"cw_home_state_running": "Folyamatban",
"cw_home_storage": "Tárhely",
"cw_home_tasks": "Feladatok",
"cw_home_tasks_fewer": "Kevesebb mutatása",
"cw_home_tasks_more": "+{n} további",
"cw_home_vol_ext": "Bővített tárhely",
"cw_home_vol_internal": "Belső tárhely",
"cw_home_vol_m2": "M.2 tárhely",
"cw_home_vol_readonly": "Csak olvasható",
"cw_home_vol_usb": "USB-meghajtó",
"cw_home_vol_usb_ext": "USB bővített tárhely",
"cw_job_actions": "További műveletek",
"cw_job_back": "Vissza",
"cw_job_confirm": "Kiválasztás / megnyitás",
"cw_job_fullscreen": "Teljes képernyő be/ki",
"cw_job_help": "Súgó ehhez a képernyőhöz",
"cw_job_move": "Mozgatás",
"cw_job_mute": "Mikrofon némítása",
"cw_job_next_section": "Következő szakasz",
"cw_job_page_down": "Oldal le",
"cw_job_page_up": "Oldal fel",
"cw_job_pointer": "PS5 mutató",
"cw_job_prev_section": "Előző szakasz",
"cw_job_ps": "PS5 kezdőképernyő és menü",
"cw_job_rail": "Szakaszlista",
"cw_job_refresh": "Frissítés",
"cw_job_scroll": "Görgetés",
"cw_job_select": "Elemek jelölése / csalások kapcsolása",
"cw_job_top": "A lista eleje",
"cw_nav_files": "Fájlok",
"cw_nav_home": "Kezdőlap",
"cw_nav_sections": "Részek",
"cw_nav_settings": "Beállítások",
"cw_reload_body": "A folytatáshoz töltsd újra ezt az oldalt.",
"cw_reload_button": "Újratöltés",
"cw_reload_title": "A PS5Upload segédprogram újraindult",
"cw_select": "Kijelölés",
"cw_settings_about": "Névjegy",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Magas kontraszt",
"cw_settings_controls": "Irányítás",
"cw_settings_controls_note": "Mit csinál itt a kontroller egyes gombja. Nyomj meg egy gombot a kipróbáláshoz.",
"cw_settings_err_load": "A beállításokat nem sikerült betölteni.",
"cw_settings_err_save": "A beállítást nem sikerült menteni. Próbáld újra.",
"cw_settings_err_tile_add": "A PS5Upload nem került fel a kezdőképernyőre. Próbáld újra.",
"cw_settings_err_tile_remove": "A PS5Upload nem került le a kezdőképernyőről. Próbáld újra.",
"cw_settings_fullscreen": "Teljes képernyő",
"cw_settings_fullscreen_note": "Elrejti a böngésző sávjait, hogy az oldal kitöltse a tévét. A következő gombnyomástól érvényes.",
"cw_settings_lan": "Más eszközök engedélyezése a hálózaton",
"cw_settings_lan_allow": "Engedélyez",
"cw_settings_lan_confirm_title": "Engedélyezed más eszközöknek?",
"cw_settings_lan_off_note": "Kikapcsolva a többi eszköz elveszti a hozzáférést; ez a konzol megtartja.",
"cw_settings_lan_warning": "A hálózatodon bárki használhatja ezt az oldalt, és kezelheti a fájljaidat.",
"cw_settings_language": "Nyelv",
"cw_settings_language_system": "Rendszer alapértelmezése",
"cw_settings_network": "Hálózat",
"cw_settings_off": "Ki",
"cw_settings_on": "Be",
"cw_settings_theme": "Téma",
"cw_settings_tile": "PS5Upload megjelenítése a kezdőképernyőn",
"cw_settings_tips": "Tippek újbóli megjelenítése",
"cw_settings_using": "Kontroller és tippek",
"cw_settings_version": "Verzió: {version}",
"cw_status_connecting": "Kapcsolódás…",
"cw_status_offline": "Nincs kapcsolat",
"cw_task_from_console": "Erről a konzolról",
"cw_task_from_pc": "Egy PC-ről",
"cw_theme_dark": "Sötét",
"cw_theme_light": "Világos",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Barack",
"cw_tour1_cheats": "Csalások: a futó játék csalásainak kapcsolása.",
"cw_tour1_files": "Fájlok: böngészés, másolás, áthelyezés és törlés a PS5 meghajtóin.",
"cw_tour1_home": "Kezdőlap: a futó játék, a feladatok és a meghajtók.",
"cw_tour1_settings": "Beállítások: téma, nyelv, teljes képernyő és ezek a tippek.",
"cw_tour1_title": "Négy szakasz, bal oldalon",
"cw_tour2_circle": "A ○ egy lépést visszalép.",
"cw_tour2_cross": "A ✕ kiválasztja a kiemelt elemet.",
"cw_tour2_more": "Minden másnak van gombja a képernyőn: emeld ki, és nyomd meg a ✕-et. A bal alsó Súgó megmutatja, mely más gombok működnek.",
"cw_tour2_title": "✕ kiválaszt, ○ visszalép",
"cw_tour3_fullscreen": "Az első gombnyomás után az oldal kitölti a tévét. A teljes képernyő a Beállításokban kikapcsolható.",
"cw_tour3_pointer": "Mozgasd a mutatót a bal karral: ami alatta van, kiemelődik, és a ✕ rákattint.",
"cw_tour3_title": "A PS5 mutatója is működik",
"cw_tour_done": "Értem",
"cw_tour_label": "Tippek",
"cw_tour_next": "Tovább",
"cw_tour_skip": "Kihagyás",
"cw_tour_step": "{n} / {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Tindakan",
"cw_cheats_apply": "Terapkan",
"cw_cheats_engine_off": "Mesin cheat mati. Mesin menyala saat Anda menyalakan cheat.",
"cw_cheats_err_changed": "File cheat berubah. Daftar telah dibaca ulang.",
"cw_cheats_err_load": "Tidak dapat membaca cheat ({code}). Tekan Muat ulang untuk mencoba lagi.",
"cw_cheats_err_module": "Cheat ini memerlukan bagian game yang belum dimuat. Coba lagi nanti di dalam game.",
"cw_cheats_err_toggle": "Tidak dapat mengalihkan cheat ({code}).",
"cw_cheats_exited": "Game telah ditutup.",
"cw_cheats_exited_next": "Jalankan lagi dan cheat-nya akan muncul kembali di sini.",
"cw_cheats_how": "✕ atau □ menyalakan atau mematikan cheat yang dipilih.",
"cw_cheats_loading": "Memuat cheat…",
"cw_cheats_no_game": "Tidak ada game yang berjalan.",
"cw_cheats_no_game_next": "Jalankan game, lalu buka Cheat.",
"cw_cheats_none": "Tidak ada cheat untuk game ini.",
"cw_cheats_none_next": "Tambahkan cheat untuk game ini dari aplikasi PS5Upload di PC Anda.",
"cw_cheats_off": "Mati",
"cw_cheats_on": "Nyala",
"cw_cheats_refresh": "Muat ulang",
"cw_cheats_switching": "Mengalihkan…",
"cw_cheats_title": "Cheat",
"cw_cheats_truncated": "Tidak semua cheat muat di sini. Aplikasi PS5Upload di PC Anda menampilkan semuanya.",
"cw_ctl_last": "Terakhir ditekan:",
"cw_ctl_logging": "Selama layar ini terbuka, tekanan tombol disimpan ke log kecil di konsol ini untuk meningkatkan dukungan kontroler.",
"cw_ctl_not_yet": "Belum diterima",
"cw_ctl_ok": "Berfungsi",
"cw_ctl_other_key": "Tombol lain: {key}",
"cw_ctl_picture": "Kontroler DualSense",
"cw_ctl_press_each": "Tekan setiap tombol sekali untuk melihat apa yang diterima halaman ini. ○ menutup layar ini, jadi tekan paling akhir.",
"cw_ctl_received": "Diterima",
"cw_ctl_received_job": "Diterima: {job} (belum dipakai)",
"cw_ctl_system": "Dipakai oleh PS5",
"cw_ctl_title": "Kontrol",
"cw_ctl_works": "Berfungsi: {job}",
"cw_dialog_cancel": "Batal",
"cw_files_bad_name": "Gunakan nama tanpa “/”.",
"cw_files_batch_copy": "Menyalin {at} dari {total}…",
"cw_files_batch_delete": "Menghapus {at} dari {total}…",
"cw_files_batch_failed": "{n} gagal.",
"cw_files_batch_move": "Memindahkan {at} dari {total}…",
"cw_files_batch_stop": "Hentikan",
"cw_files_batch_stopped": "Dihentikan. {n} tidak dimulai.",
"cw_files_batch_stopping": "Berhenti setelah item ini…",
"cw_files_close": "Tutup",
"cw_files_copy_to": "Salin ke…",
"cw_files_del_body": "Folder dihapus beserta seluruh isinya. Tindakan ini tidak bisa dibatalkan.",
"cw_files_del_list_many": "“{name}” dan {more} lainnya.",
"cw_files_del_many": "Hapus {n} item?",
"cw_files_del_one": "Hapus “{name}”?",
"cw_files_delete": "Hapus",
"cw_files_done": "Selesai.",
"cw_files_drives": "Drive",
"cw_files_empty": "Folder ini kosong.",
"cw_files_empty_next": "Salin file ke sini dari aplikasi PS5Upload di PC Anda, atau buat folder baru.",
"cw_files_err_denied": "Konsol tidak mengizinkan perubahan di sini.",
"cw_files_err_exists": "Sudah ada item dengan nama itu.",
"cw_files_err_into_itself": "Folder tidak bisa dimasukkan ke dirinya sendiri atau subfoldernya.",
"cw_files_err_load": "Tidak bisa membuka folder ini.",
"cw_files_err_missing": "Item itu sudah tidak ada.",
"cw_files_err_read": "Tidak bisa membaca.",
"cw_files_fixperm": "Perbaiki izin",
"cw_files_fixperm_batch": "Memperbaiki izin {at} dari {total}…",
"cw_files_fixperm_body": "Membuat semua isi folder ini dapat dibaca dan dijalankan oleh PS5 (chmod 777). Gunakan saat game tidak mau mulai setelah disalin.",
"cw_files_fixperm_done": "Izin diperbaiki.",
"cw_files_free": "{free} kosong",
"cw_files_here": "Di sini",
"cw_files_info": "Info",
"cw_files_info_items": "Item",
"cw_files_info_mode": "Izin",
"cw_files_info_modified": "Diubah",
"cw_files_info_size": "Ukuran",
"cw_files_info_type": "Jenis",
"cw_files_info_where": "Lokasi",
"cw_files_items": "{n} item",
"cw_files_kind_dir": "Folder",
"cw_files_kind_file": "File",
"cw_files_kind_link": "Tautan",
"cw_files_more": "Tampilkan lagi",
"cw_files_move_to": "Pindahkan ke…",
"cw_files_name": "Nama",
"cw_files_new_folder": "Folder baru",
"cw_files_no_folders": "Tidak ada folder di sini.",
"cw_files_no_folders_next": "Pilih “Di sini” untuk memakai folder ini.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Pilih drive",
"cw_files_rename": "Ganti nama",
"cw_files_retry": "Coba lagi",
"cw_files_selected": "{n} dipilih",
"cw_files_some_failed": "{n} gagal: {reason}",
"cw_files_tasks": "Tugas berjalan: {n}",
"cw_files_too_large": "Terlalu besar untuk pratinjau.",
"cw_files_truncated": "Menampilkan 1 MiB pertama.",
"cw_files_up": "Naik",
"cw_files_view": "Lihat",
"cw_help_close": "Tutup",
"cw_help_controls": "Kontrol",
"cw_help_pointer": "Stik kiri menggerakkan penunjuk PS5; ✕ mengeklik yang ditunjuknya.",
"cw_help_title": "Tombol di layar ini",
"cw_help_unconfirmed": "Belum dipastikan di PS5 ini:",
"cw_hint_back": "Kembali",
"cw_hint_fullscreen": "Layar penuh",
"cw_hint_help": "Bantuan",
"cw_hint_open": "Buka",
"cw_hint_page": "Halaman atas/bawah",
"cw_hint_refresh": "Muat ulang",
"cw_hint_switch": "Nyala/mati",
"cw_hint_switch_section": "Ganti bagian",
"cw_hint_top": "Paling atas",
"cw_hints_label": "Tombol kontroler",
"cw_home_cancel_task": "Batalkan",
"cw_home_cancel_task_confirm": "Batalkan tugas",
"cw_home_cheats": "Cheat",
"cw_home_close_game": "Tutup game",
"cw_home_confirm_cancel_body": "Tugas berhenti sekarang. Ini tidak bisa dibatalkan.",
"cw_home_confirm_cancel_body_pc": "Tugas ini dimulai dari PC. Tugas juga berhenti di PC.",
"cw_home_confirm_cancel_title": "Batalkan tugas ini?",
"cw_home_confirm_close_body": "Progres game yang belum disimpan akan hilang.",
"cw_home_confirm_close_title": "Tutup {name}?",
"cw_home_err_busy": "Konsol sedang sibuk. Coba lagi sebentar lagi.",
"cw_home_err_failed": "Itu tidak berhasil ({code}).",
"cw_home_err_gone": "Tugas itu sudah berakhir.",
"cw_home_err_load_storage": "Tidak dapat membaca drive.",
"cw_home_err_load_tasks": "Tidak dapat membaca daftar tugas.",
"cw_home_err_offline": "Konsol tidak menjawab. Coba lagi.",
"cw_home_free_of": "{free} kosong dari {total}",
"cw_home_keep_task": "Lanjutkan",
"cw_home_kind_copy": "Salin",
"cw_home_kind_download": "Unduh",
"cw_home_kind_op": "Operasi file",
"cw_home_kind_other": "Tugas",
"cw_home_kind_upload": "Unggah",
"cw_home_loading": "Memuat…",
"cw_home_no_game_next": "Mulai game dari layar utama PS5; cheat-nya muncul di sini.",
"cw_home_no_game_plain": "Mulai game dari layar utama PS5.",
"cw_home_no_tasks": "Tidak ada tugas saat ini.",
"cw_home_no_tasks_next": "Unggahan dari aplikasi PS5Upload di PC Anda muncul di sini.",
"cw_home_now_running": "Sedang berjalan",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} dari {total}",
"cw_home_progress_files": "{done} dari {total} file",
"cw_home_retrying": "Akan dicoba lagi sebentar lagi.",
"cw_home_state_done": "Selesai",
"cw_home_state_failed": "Gagal",
"cw_home_state_running": "Berjalan",
"cw_home_storage": "Penyimpanan",
"cw_home_tasks": "Tugas",
"cw_home_tasks_fewer": "Tampilkan lebih sedikit",
"cw_home_tasks_more": "+{n} lagi",
"cw_home_vol_ext": "Penyimpanan tambahan",
"cw_home_vol_internal": "Penyimpanan internal",
"cw_home_vol_m2": "Penyimpanan M.2",
"cw_home_vol_readonly": "Hanya baca",
"cw_home_vol_usb": "Drive USB",
"cw_home_vol_usb_ext": "Penyimpanan tambahan USB",
"cw_job_actions": "Tindakan lain",
"cw_job_back": "Kembali",
"cw_job_confirm": "Pilih / buka",
"cw_job_fullscreen": "Layar penuh nyala/mati",
"cw_job_help": "Bantuan layar ini",
"cw_job_move": "Pindah",
"cw_job_mute": "Bisukan mikrofon",
"cw_job_next_section": "Bagian berikutnya",
"cw_job_page_down": "Halaman bawah",
"cw_job_page_up": "Halaman atas",
"cw_job_pointer": "Penunjuk PS5",
"cw_job_prev_section": "Bagian sebelumnya",
"cw_job_ps": "Beranda dan menu PS5",
"cw_job_rail": "Daftar bagian",
"cw_job_refresh": "Segarkan",
"cw_job_scroll": "Gulir",
"cw_job_select": "Tandai item / nyalakan cheat",
"cw_job_top": "Awal daftar",
"cw_nav_files": "File",
"cw_nav_home": "Beranda",
"cw_nav_sections": "Bagian",
"cw_nav_settings": "Pengaturan",
"cw_reload_body": "Muat ulang halaman ini untuk melanjutkan.",
"cw_reload_button": "Muat ulang",
"cw_reload_title": "Pembantu PS5Upload dimulai ulang",
"cw_select": "Pilih",
"cw_settings_about": "Tentang",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Kontras tinggi",
"cw_settings_controls": "Kontrol",
"cw_settings_controls_note": "Fungsi setiap tombol kontroler di sini. Tekan tombol untuk mengujinya.",
"cw_settings_err_load": "Pengaturan tidak dapat dimuat.",
"cw_settings_err_save": "Pengaturan tidak dapat disimpan. Coba lagi.",
"cw_settings_err_tile_add": "PS5Upload tidak dapat ditambahkan ke layar utama. Coba lagi.",
"cw_settings_err_tile_remove": "PS5Upload tidak dapat dihapus dari layar utama. Coba lagi.",
"cw_settings_fullscreen": "Layar penuh",
"cw_settings_fullscreen_note": "Menyembunyikan bilah browser agar halaman memenuhi TV. Berlaku saat Anda menekan tombol berikutnya.",
"cw_settings_lan": "Izinkan perangkat lain di jaringan",
"cw_settings_lan_allow": "Izinkan",
"cw_settings_lan_confirm_title": "Izinkan perangkat lain?",
"cw_settings_lan_off_note": "Jika dimatikan, perangkat lain kehilangan akses; konsol ini tetap punya akses.",
"cw_settings_lan_warning": "Siapa pun di jaringan Anda kemudian dapat memakai halaman ini dan mengelola file Anda.",
"cw_settings_language": "Bahasa",
"cw_settings_language_system": "Default sistem",
"cw_settings_network": "Jaringan",
"cw_settings_off": "Mati",
"cw_settings_on": "Nyala",
"cw_settings_theme": "Tema",
"cw_settings_tile": "Tampilkan PS5Upload di layar utama",
"cw_settings_tips": "Tampilkan tips lagi",
"cw_settings_using": "Kontroler dan tips",
"cw_settings_version": "Versi {version}",
"cw_status_connecting": "Menghubungkan…",
"cw_status_offline": "Tidak terhubung",
"cw_task_from_console": "Dari konsol ini",
"cw_task_from_pc": "Dari PC",
"cw_theme_dark": "Gelap",
"cw_theme_light": "Terang",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Peach",
"cw_tour1_cheats": "Cheat: nyalakan cheat untuk game yang berjalan.",
"cw_tour1_files": "File: jelajahi, salin, pindahkan, dan hapus di drive PS5.",
"cw_tour1_home": "Beranda: game yang berjalan, tugas, dan drive.",
"cw_tour1_settings": "Pengaturan: tema, bahasa, layar penuh, dan tips ini.",
"cw_tour1_title": "Empat bagian, di kiri",
"cw_tour2_circle": "○ kembali satu langkah.",
"cw_tour2_cross": "✕ memilih yang disorot.",
"cw_tour2_more": "Semua hal lain punya tombol di layar: sorot lalu tekan ✕. Bantuan, di kiri bawah, menunjukkan tombol lain yang berfungsi.",
"cw_tour2_title": "✕ memilih, ○ kembali",
"cw_tour3_fullscreen": "Halaman memenuhi TV setelah tekanan pertama Anda. Layar penuh bisa dimatikan di Pengaturan.",
"cw_tour3_pointer": "Gerakkan penunjuk dengan stik kiri: yang ditunjuknya disorot, dan ✕ mengekliknya.",
"cw_tour3_title": "Penunjuk PS5 juga bisa",
"cw_tour_done": "Mengerti",
"cw_tour_label": "Tips",
"cw_tour_next": "Berikutnya",
"cw_tour_skip": "Lewati",
"cw_tour_step": "{n} dari {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Azioni",
"cw_cheats_apply": "Applica",
"cw_cheats_engine_off": "Il motore dei cheat è spento. Si avvia quando attivi un cheat.",
"cw_cheats_err_changed": "I file dei cheat sono cambiati. L'elenco è stato riletto.",
"cw_cheats_err_load": "Impossibile leggere i cheat ({code}). Premi Aggiorna per riprovare.",
"cw_cheats_err_module": "Questo cheat richiede una parte del gioco non ancora caricata. Riprova più avanti nel gioco.",
"cw_cheats_err_toggle": "Impossibile cambiare il cheat ({code}).",
"cw_cheats_exited": "Il gioco è stato chiuso.",
"cw_cheats_exited_next": "Riavvialo e i suoi cheat torneranno qui.",
"cw_cheats_how": "✕ o □ attiva o disattiva il cheat selezionato.",
"cw_cheats_loading": "Caricamento dei cheat…",
"cw_cheats_no_game": "Nessun gioco in esecuzione.",
"cw_cheats_no_game_next": "Avvia un gioco, poi apri Cheat.",
"cw_cheats_none": "Nessun cheat per questo gioco.",
"cw_cheats_none_next": "Aggiungi i cheat per questo gioco dall'app PS5Upload sul tuo PC.",
"cw_cheats_off": "Disattivo",
"cw_cheats_on": "Attivo",
"cw_cheats_refresh": "Aggiorna",
"cw_cheats_switching": "Cambio in corso…",
"cw_cheats_title": "Cheat",
"cw_cheats_truncated": "Non tutti i cheat entrano qui. L'app PS5Upload sul tuo PC li mostra tutti.",
"cw_ctl_last": "Ultimo premuto:",
"cw_ctl_logging": "Finché questa schermata è aperta, le pressioni vengono salvate in un piccolo registro su questa console per migliorare il supporto del controller.",
"cw_ctl_not_yet": "Non ancora ricevuto",
"cw_ctl_ok": "Funziona",
"cw_ctl_other_key": "Altro tasto: {key}",
"cw_ctl_picture": "Controller DualSense",
"cw_ctl_press_each": "Premi ogni tasto una volta per vedere cosa riceve questa pagina. ○ chiude questa schermata, quindi premilo per ultimo.",
"cw_ctl_received": "Ricevuto",
"cw_ctl_received_job": "Ricevuto: {job} (non ancora usato)",
"cw_ctl_system": "Usato dalla PS5",
"cw_ctl_title": "Comandi",
"cw_ctl_works": "Funziona: {job}",
"cw_dialog_cancel": "Annulla",
"cw_files_bad_name": "Usa un nome senza “/”.",
"cw_files_batch_copy": "Copia {at} di {total}…",
"cw_files_batch_delete": "Eliminazione {at} di {total}…",
"cw_files_batch_failed": "{n} non riusciti.",
"cw_files_batch_move": "Spostamento {at} di {total}…",
"cw_files_batch_stop": "Interrompi",
"cw_files_batch_stopped": "Interrotto. {n} non avviati.",
"cw_files_batch_stopping": "Interruzione dopo questo elemento…",
"cw_files_close": "Chiudi",
"cw_files_copy_to": "Copia in…",
"cw_files_del_body": "Le cartelle vengono eliminate con tutto il contenuto. Non si può annullare.",
"cw_files_del_list_many": "“{name}” e altri {more}.",
"cw_files_del_many": "Eliminare {n} elementi?",
"cw_files_del_one": "Eliminare “{name}”?",
"cw_files_delete": "Elimina",
"cw_files_done": "Fatto.",
"cw_files_drives": "Unità",
"cw_files_empty": "Questa cartella è vuota.",
"cw_files_empty_next": "Copia qui i file dall'app PS5Upload sul tuo PC o crea una nuova cartella.",
"cw_files_err_denied": "La console non consente modifiche qui.",
"cw_files_err_exists": "Esiste già un elemento con questo nome.",
"cw_files_err_into_itself": "Una cartella non può finire dentro sé stessa o una sua sottocartella.",
"cw_files_err_load": "Impossibile aprire questa cartella.",
"cw_files_err_missing": "Non c'è più.",
"cw_files_err_read": "Impossibile leggere.",
"cw_files_fixperm": "Correggi permessi",
"cw_files_fixperm_batch": "Correzione dei permessi {at} di {total}…",
"cw_files_fixperm_body": "Rende tutto il contenuto di questa cartella leggibile ed eseguibile dalla PS5 (chmod 777). Usalo quando un gioco non si avvia dopo la copia.",
"cw_files_fixperm_done": "Permessi corretti.",
"cw_files_free": "{free} liberi",
"cw_files_here": "Qui",
"cw_files_info": "Info",
"cw_files_info_items": "Elementi",
"cw_files_info_mode": "Permessi",
"cw_files_info_modified": "Modificato",
"cw_files_info_size": "Dimensione",
"cw_files_info_type": "Tipo",
"cw_files_info_where": "Posizione",
"cw_files_items": "{n} elementi",
"cw_files_kind_dir": "Cartella",
"cw_files_kind_file": "File",
"cw_files_kind_link": "Collegamento",
"cw_files_more": "Mostra altro",
"cw_files_move_to": "Sposta in…",
"cw_files_name": "Nome",
"cw_files_new_folder": "Nuova cartella",
"cw_files_no_folders": "Nessuna cartella qui.",
"cw_files_no_folders_next": "Scegli «Qui» per usare questa cartella.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Scegli un'unità",
"cw_files_rename": "Rinomina",
"cw_files_retry": "Riprova",
"cw_files_selected": "{n} selezionati",
"cw_files_some_failed": "{n} non riusciti: {reason}",
"cw_files_tasks": "Attività in corso: {n}",
"cw_files_too_large": "Troppo grande per l'anteprima.",
"cw_files_truncated": "Viene mostrato il primo MiB.",
"cw_files_up": "Su",
"cw_files_view": "Visualizza",
"cw_help_close": "Chiudi",
"cw_help_controls": "Comandi",
"cw_help_pointer": "La levetta sinistra muove il puntatore della PS5; ✕ fa clic su ciò che indica.",
"cw_help_title": "Tasti in questa schermata",
"cw_help_unconfirmed": "Non ancora confermati su questa PS5:",
"cw_hint_back": "Indietro",
"cw_hint_fullscreen": "Schermo intero",
"cw_hint_help": "Guida",
"cw_hint_open": "Apri",
"cw_hint_page": "Pagina su/giù",
"cw_hint_refresh": "Aggiorna",
"cw_hint_switch": "Attiva/disattiva",
"cw_hint_switch_section": "Cambia sezione",
"cw_hint_top": "Inizio",
"cw_hints_label": "Tasti del controller",
"cw_home_cancel_task": "Annulla",
"cw_home_cancel_task_confirm": "Annulla attività",
"cw_home_cheats": "Cheat",
"cw_home_close_game": "Chiudi gioco",
"cw_home_confirm_cancel_body": "Si interrompe subito. L'operazione non può essere annullata.",
"cw_home_confirm_cancel_body_pc": "Questa attività è stata avviata da un PC. Si interrompe anche sul PC.",
"cw_home_confirm_cancel_title": "Annullare questa attività?",
"cw_home_confirm_close_body": "I progressi di gioco non salvati andranno persi.",
"cw_home_confirm_close_title": "Chiudere {name}?",
"cw_home_err_busy": "La console è occupata. Riprova tra un momento.",
"cw_home_err_failed": "Non ha funzionato ({code}).",
"cw_home_err_gone": "Quell'attività è già terminata.",
"cw_home_err_load_storage": "Impossibile leggere le unità.",
"cw_home_err_load_tasks": "Impossibile leggere l'elenco delle attività.",
"cw_home_err_offline": "La console non ha risposto. Riprova.",
"cw_home_free_of": "{free} liberi su {total}",
"cw_home_keep_task": "Continua",
"cw_home_kind_copy": "Copia",
"cw_home_kind_download": "Download",
"cw_home_kind_op": "Operazione sui file",
"cw_home_kind_other": "Attività",
"cw_home_kind_upload": "Caricamento",
"cw_home_loading": "Caricamento…",
"cw_home_no_game_next": "Avvia un gioco dalla schermata iniziale della PS5; i suoi cheat compaiono qui.",
"cw_home_no_game_plain": "Avvia un gioco dalla schermata iniziale della PS5.",
"cw_home_no_tasks": "Nessuna attività al momento.",
"cw_home_no_tasks_next": "I caricamenti dall'app PS5Upload sul tuo PC compaiono qui.",
"cw_home_now_running": "In esecuzione",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} di {total}",
"cw_home_progress_files": "{done} di {total} file",
"cw_home_retrying": "Nuovo tentativo a breve.",
"cw_home_state_done": "Completata",
"cw_home_state_failed": "Non riuscita",
"cw_home_state_running": "In corso",
"cw_home_storage": "Archiviazione",
"cw_home_tasks": "Attività",
"cw_home_tasks_fewer": "Mostra meno",
"cw_home_tasks_more": "+{n} altri",
"cw_home_vol_ext": "Memoria estesa",
"cw_home_vol_internal": "Memoria interna",
"cw_home_vol_m2": "Memoria M.2",
"cw_home_vol_readonly": "Sola lettura",
"cw_home_vol_usb": "Unità USB",
"cw_home_vol_usb_ext": "Memoria estesa USB",
"cw_job_actions": "Altre azioni",
"cw_job_back": "Indietro",
"cw_job_confirm": "Seleziona / apri",
"cw_job_fullscreen": "Schermo intero sì/no",
"cw_job_help": "Guida a questa schermata",
"cw_job_move": "Sposta",
"cw_job_mute": "Microfono muto",
"cw_job_next_section": "Sezione successiva",
"cw_job_page_down": "Pagina giù",
"cw_job_page_up": "Pagina su",
"cw_job_pointer": "Puntatore PS5",
"cw_job_prev_section": "Sezione precedente",
"cw_job_ps": "Home e menu della PS5",
"cw_job_rail": "Elenco sezioni",
"cw_job_refresh": "Aggiorna",
"cw_job_scroll": "Scorri",
"cw_job_select": "Seleziona elementi / attiva cheat",
"cw_job_top": "Inizio dell'elenco",
"cw_nav_files": "File",
"cw_nav_home": "Home",
"cw_nav_sections": "Sezioni",
"cw_nav_settings": "Impostazioni",
"cw_reload_body": "Ricarica questa pagina per continuare.",
"cw_reload_button": "Ricarica",
"cw_reload_title": "L'helper di PS5Upload si è riavviato",
"cw_select": "Seleziona",
"cw_settings_about": "Info",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Contrasto elevato",
"cw_settings_controls": "Comandi",
"cw_settings_controls_note": "Cosa fa qui ogni tasto del controller. Premi un tasto per provarlo.",
"cw_settings_err_load": "Impossibile caricare le impostazioni.",
"cw_settings_err_save": "Impossibile salvare l'impostazione. Riprova.",
"cw_settings_err_tile_add": "Impossibile aggiungere PS5Upload alla schermata Home. Riprova.",
"cw_settings_err_tile_remove": "Impossibile rimuovere PS5Upload dalla schermata Home. Riprova.",
"cw_settings_fullscreen": "Schermo intero",
"cw_settings_fullscreen_note": "Nasconde le barre del browser così la pagina riempie la TV. Si applica alla prossima pressione di un tasto.",
"cw_settings_lan": "Consenti ad altri dispositivi della rete",
"cw_settings_lan_allow": "Consenti",
"cw_settings_lan_confirm_title": "Consentire ad altri dispositivi?",
"cw_settings_lan_off_note": "Se lo disattivi, gli altri dispositivi perdono l'accesso; questa console lo mantiene.",
"cw_settings_lan_warning": "Chiunque sulla tua rete potrà usare questa pagina e gestire i tuoi file.",
"cw_settings_language": "Lingua",
"cw_settings_language_system": "Predefinita del sistema",
"cw_settings_network": "Rete",
"cw_settings_off": "Disattivo",
"cw_settings_on": "Attivo",
"cw_settings_theme": "Tema",
"cw_settings_tile": "Mostra PS5Upload nella schermata Home",
"cw_settings_tips": "Mostra di nuovo i suggerimenti",
"cw_settings_using": "Controller e suggerimenti",
"cw_settings_version": "Versione {version}",
"cw_status_connecting": "Connessione…",
"cw_status_offline": "Non connesso",
"cw_task_from_console": "Da questa console",
"cw_task_from_pc": "Da un PC",
"cw_theme_dark": "Scuro",
"cw_theme_light": "Chiaro",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Pesca",
"cw_tour1_cheats": "Cheat: attiva i cheat del gioco in corso.",
"cw_tour1_files": "File: sfoglia, copia, sposta ed elimina sulle unità della PS5.",
"cw_tour1_home": "Home: il gioco in corso, le attività e le unità.",
"cw_tour1_settings": "Impostazioni: tema, lingua, schermo intero e questi suggerimenti.",
"cw_tour1_title": "Quattro sezioni, a sinistra",
"cw_tour2_circle": "○ torna indietro di un passo.",
"cw_tour2_cross": "✕ seleziona l'elemento evidenziato.",
"cw_tour2_more": "Tutto il resto ha un pulsante sullo schermo: evidenzialo e premi ✕. Guida, in basso a sinistra, mostra quali altri tasti funzionano.",
"cw_tour2_title": "✕ seleziona, ○ torna indietro",
"cw_tour3_fullscreen": "Dopo la prima pressione la pagina riempie la TV. Puoi disattivare lo schermo intero in Impostazioni.",
"cw_tour3_pointer": "Muovi il puntatore con la levetta sinistra: ciò che indica viene evidenziato e ✕ ci fa clic.",
"cw_tour3_title": "Funziona anche il puntatore della PS5",
"cw_tour_done": "Ho capito",
"cw_tour_label": "Suggerimenti",
"cw_tour_next": "Avanti",
"cw_tour_skip": "Salta",
"cw_tour_step": "{n} di {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "操作",
"cw_cheats_apply": "適用",
"cw_cheats_engine_off": "チートエンジンはオフです。チートをオンにすると起動します。",
"cw_cheats_err_changed": "チートファイルが変更されました。一覧を読み込み直しました。",
"cw_cheats_err_load": "チートを読み込めませんでした ({code})。更新を押してもう一度お試しください。",
"cw_cheats_err_module": "このチートには、まだ読み込まれていないゲームの部分が必要です。ゲームを進めてから再度お試しください。",
"cw_cheats_err_toggle": "チートを切り替えられませんでした ({code})。",
"cw_cheats_exited": "ゲームが終了しました。",
"cw_cheats_exited_next": "もう一度起動すると、チートがここに戻ります。",
"cw_cheats_how": "✕ か □ で選択中のチートをオン/オフします。",
"cw_cheats_loading": "チートを読み込み中…",
"cw_cheats_no_game": "ゲームが起動していません。",
"cw_cheats_no_game_next": "ゲームを起動してから、チートを開いてください。",
"cw_cheats_none": "このゲームのチートはありません。",
"cw_cheats_none_next": "このゲームのチートは PC の PS5Upload アプリから追加してください。",
"cw_cheats_off": "オフ",
"cw_cheats_on": "オン",
"cw_cheats_refresh": "更新",
"cw_cheats_switching": "切り替え中…",
"cw_cheats_title": "チート",
"cw_cheats_truncated": "すべてのチートはここに表示しきれません。PC の PS5Upload アプリですべて確認できます。",
"cw_ctl_last": "最後に押したボタン:",
"cw_ctl_logging": "この画面を開いている間、コントローラー対応の改善のため、ボタン入力がこの本体の小さなログに保存されます。",
"cw_ctl_not_yet": "まだ受信していません",
"cw_ctl_ok": "動作します",
"cw_ctl_other_key": "その他のキー: {key}",
"cw_ctl_picture": "DualSenseコントローラー",
"cw_ctl_press_each": "各ボタンを1回ずつ押すと、このページが受け取ったものがわかります。○ はこの画面を閉じるので最後に押してください。",
"cw_ctl_received": "受信済み",
"cw_ctl_received_job": "受信済み: {job}(まだ使われていません)",
"cw_ctl_system": "PS5が使用",
"cw_ctl_title": "操作方法",
"cw_ctl_works": "動作: {job}",
"cw_dialog_cancel": "キャンセル",
"cw_files_bad_name": "「/」を含まない名前にしてください。",
"cw_files_batch_copy": "コピー中 {at}/{total}…",
"cw_files_batch_delete": "削除中 {at}/{total}…",
"cw_files_batch_failed": "{n} 件が失敗しました。",
"cw_files_batch_move": "移動中 {at}/{total}…",
"cw_files_batch_stop": "停止",
"cw_files_batch_stopped": "停止しました。{n} 件は開始されていません。",
"cw_files_batch_stopping": "この項目のあとで停止します…",
"cw_files_close": "閉じる",
"cw_files_copy_to": "コピー先…",
"cw_files_del_body": "フォルダーは中身ごと削除されます。元に戻せません。",
"cw_files_del_list_many": "「{name}」ほか {more} 件。",
"cw_files_del_many": "{n} 件を削除しますか?",
"cw_files_del_one": "「{name}」を削除しますか?",
"cw_files_delete": "削除",
"cw_files_done": "完了しました。",
"cw_files_drives": "ドライブ",
"cw_files_empty": "このフォルダーは空です。",
"cw_files_empty_next": "PCのPS5Uploadアプリからファイルをここにコピーするか、新しいフォルダーを作成してください。",
"cw_files_err_denied": "ここでは本体が変更を許可していません。",
"cw_files_err_exists": "同じ名前の項目がすでにあります。",
"cw_files_err_into_itself": "フォルダーを自分自身やそのサブフォルダーの中には入れられません。",
"cw_files_err_load": "このフォルダーを開けませんでした。",
"cw_files_err_missing": "すでに存在しません。",
"cw_files_err_read": "読み込めませんでした。",
"cw_files_fixperm": "権限を修正",
"cw_files_fixperm_batch": "権限を修正中 {at}/{total}…",
"cw_files_fixperm_body": "このフォルダー内のすべてを PS5 が読み取り・実行できるようにします(chmod 777)。コピー後にゲームが起動しないときに使います。",
"cw_files_fixperm_done": "権限を修正しました。",
"cw_files_free": "空き {free}",
"cw_files_here": "ここ",
"cw_files_info": "情報",
"cw_files_info_items": "項目数",
"cw_files_info_mode": "アクセス権",
"cw_files_info_modified": "更新日時",
"cw_files_info_size": "サイズ",
"cw_files_info_type": "種類",
"cw_files_info_where": "場所",
"cw_files_items": "{n} 件",
"cw_files_kind_dir": "フォルダー",
"cw_files_kind_file": "ファイル",
"cw_files_kind_link": "リンク",
"cw_files_more": "さらに表示",
"cw_files_move_to": "移動先…",
"cw_files_name": "名前",
"cw_files_new_folder": "新しいフォルダー",
"cw_files_no_folders": "フォルダーがありません。",
"cw_files_no_folders_next": "このフォルダーを使うには「ここ」を選んでください。",
"cw_files_ok": "OK",
"cw_files_pick_drive": "ドライブを選択",
"cw_files_rename": "名前を変更",
"cw_files_retry": "再試行",
"cw_files_selected": "{n} 件選択中",
"cw_files_some_failed": "{n} 件失敗: {reason}",
"cw_files_tasks": "実行中のタスク: {n}",
"cw_files_too_large": "大きすぎてプレビューできません。",
"cw_files_truncated": "先頭 1 MiB を表示しています。",
"cw_files_up": "上へ",
"cw_files_view": "表示",
"cw_help_close": "閉じる",
"cw_help_controls": "操作方法",
"cw_help_pointer": "左スティックでPS5のポインターを動かし、✕ で指している物をクリックします。",
"cw_help_title": "この画面のボタン",
"cw_help_unconfirmed": "このPS5ではまだ確認されていません:",
"cw_hint_back": "戻る",
"cw_hint_fullscreen": "全画面",
"cw_hint_help": "ヘルプ",
"cw_hint_open": "開く",
"cw_hint_page": "前/次のページ",
"cw_hint_refresh": "更新",
"cw_hint_switch": "オン/オフ",
"cw_hint_switch_section": "セクションを切り替え",
"cw_hint_top": "先頭へ",
"cw_hints_label": "コントローラーのボタン",
"cw_home_cancel_task": "キャンセル",
"cw_home_cancel_task_confirm": "タスクをキャンセル",
"cw_home_cheats": "チート",
"cw_home_close_game": "ゲームを終了",
"cw_home_confirm_cancel_body": "すぐに停止します。元に戻せません。",
"cw_home_confirm_cancel_body_pc": "このタスクはPCから開始されました。PC側でも停止します。",
"cw_home_confirm_cancel_title": "このタスクをキャンセルしますか?",
"cw_home_confirm_close_body": "ゲーム内の保存していない進行状況は失われます。",
"cw_home_confirm_close_title": "{name} を終了しますか?",
"cw_home_err_busy": "コンソールが処理中です。少ししてからもう一度お試しください。",
"cw_home_err_failed": "うまくいきませんでした({code})。",
"cw_home_err_gone": "そのタスクはすでに終了しています。",
"cw_home_err_load_storage": "ドライブを読み込めませんでした。",
"cw_home_err_load_tasks": "タスク一覧を読み込めませんでした。",
"cw_home_err_offline": "コンソールが応答しませんでした。もう一度お試しください。",
"cw_home_free_of": "空き {free} / {total}",
"cw_home_keep_task": "続ける",
"cw_home_kind_copy": "コピー",
"cw_home_kind_download": "ダウンロード",
"cw_home_kind_op": "ファイル操作",
"cw_home_kind_other": "タスク",
"cw_home_kind_upload": "アップロード",
"cw_home_loading": "読み込み中…",
"cw_home_no_game_next": "PS5のホーム画面でゲームを起動すると、そのチートがここに表示されます。",
"cw_home_no_game_plain": "PS5のホーム画面でゲームを起動してください。",
"cw_home_no_tasks": "現在タスクはありません。",
"cw_home_no_tasks_next": "PCのPS5Uploadアプリからのアップロードがここに表示されます。",
"cw_home_now_running": "実行中",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} / {total}",
"cw_home_progress_files": "{done} / {total} ファイル",
"cw_home_retrying": "まもなく再試行します。",
"cw_home_state_done": "完了",
"cw_home_state_failed": "失敗",
"cw_home_state_running": "実行中",
"cw_home_storage": "ストレージ",
"cw_home_tasks": "タスク",
"cw_home_tasks_fewer": "表示を減らす",
"cw_home_tasks_more": "ほか{n}件",
"cw_home_vol_ext": "拡張ストレージ",
"cw_home_vol_internal": "本体ストレージ",
"cw_home_vol_m2": "M.2ストレージ",
"cw_home_vol_readonly": "読み取り専用",
"cw_home_vol_usb": "USBドライブ",
"cw_home_vol_usb_ext": "USB拡張ストレージ",
"cw_job_actions": "その他の操作",
"cw_job_back": "戻る",
"cw_job_confirm": "選択 / 開く",
"cw_job_fullscreen": "全画面のオン/オフ",
"cw_job_help": "この画面のヘルプ",
"cw_job_move": "移動",
"cw_job_mute": "マイクのミュート",
"cw_job_next_section": "次のセクション",
"cw_job_page_down": "次のページ",
"cw_job_page_up": "前のページ",
"cw_job_pointer": "PS5のポインター",
"cw_job_prev_section": "前のセクション",
"cw_job_ps": "PS5のホームとメニュー",
"cw_job_rail": "セクション一覧",
"cw_job_refresh": "更新",
"cw_job_scroll": "スクロール",
"cw_job_select": "項目の選択 / チートの切り替え",
"cw_job_top": "リストの先頭",
"cw_nav_files": "ファイル",
"cw_nav_home": "ホーム",
"cw_nav_sections": "セクション",
"cw_nav_settings": "設定",
"cw_reload_body": "続けるにはこのページを再読み込みしてください。",
"cw_reload_button": "再読み込み",
"cw_reload_title": "PS5Upload のヘルパーが再起動しました",
"cw_select": "選択",
"cw_settings_about": "情報",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "ハイコントラスト",
"cw_settings_controls": "操作方法",
"cw_settings_controls_note": "ここでの各ボタンの役割。ボタンを押して試せます。",
"cw_settings_err_load": "設定を読み込めませんでした。",
"cw_settings_err_save": "設定を保存できませんでした。もう一度お試しください。",
"cw_settings_err_tile_add": "ホーム画面に PS5Upload を追加できませんでした。もう一度お試しください。",
"cw_settings_err_tile_remove": "ホーム画面から PS5Upload を削除できませんでした。もう一度お試しください。",
"cw_settings_fullscreen": "全画面",
"cw_settings_fullscreen_note": "ブラウザーのバーを隠して、ページをテレビ全体に表示します。次にボタンを押したときに有効になります。",
"cw_settings_lan": "ネットワーク上の他の機器を許可",
"cw_settings_lan_allow": "許可する",
"cw_settings_lan_confirm_title": "他の機器を許可しますか?",
"cw_settings_lan_off_note": "オフにすると他の機器はアクセスできなくなります。このコンソールは引き続き使えます。",
"cw_settings_lan_warning": "ネットワーク内の誰でもこのページを使ってファイルを管理できるようになります。",
"cw_settings_language": "言語",
"cw_settings_language_system": "システムの設定に従う",
"cw_settings_network": "ネットワーク",
"cw_settings_off": "オフ",
"cw_settings_on": "オン",
"cw_settings_theme": "テーマ",
"cw_settings_tile": "ホーム画面に PS5Upload を表示",
"cw_settings_tips": "ヒントをもう一度表示",
"cw_settings_using": "コントローラーとヒント",
"cw_settings_version": "バージョン {version}",
"cw_status_connecting": "接続中…",
"cw_status_offline": "未接続",
"cw_task_from_console": "このコンソールから",
"cw_task_from_pc": "PCから",
"cw_theme_dark": "ダーク",
"cw_theme_light": "ライト",
"cw_theme_oled": "OLED",
"cw_theme_peach": "ピーチ",
"cw_tour1_cheats": "チート: 実行中のゲームのチートを切り替え。",
"cw_tour1_files": "ファイル: PS5のドライブで閲覧、コピー、移動、削除。",
"cw_tour1_home": "ホーム: 実行中のゲーム、タスク、ドライブ。",
"cw_tour1_settings": "設定: テーマ、言語、全画面、そしてこのヒント。",
"cw_tour1_title": "左に4つのセクション",
"cw_tour2_circle": "○ で1つ前に戻ります。",
"cw_tour2_cross": "✕ でハイライトされた物を選択します。",
"cw_tour2_more": "ほかの操作はすべて画面上のボタンにあります。ハイライトして ✕ を押してください。左下のヘルプで、ほかに使えるボタンがわかります。",
"cw_tour2_title": "✕ で選択、○ で戻る",
"cw_tour3_fullscreen": "最初にボタンを押すと、ページがテレビ全体に表示されます。全画面は設定でオフにできます。",
"cw_tour3_pointer": "左スティックでポインターを動かすと、指している物がハイライトされ、✕ でクリックできます。",
"cw_tour3_title": "PS5のポインターも使えます",
"cw_tour_done": "OK",
"cw_tour_label": "ヒント",
"cw_tour_next": "次へ",
"cw_tour_skip": "スキップ",
"cw_tour_step": "{n} / {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "작업",
"cw_cheats_apply": "적용",
"cw_cheats_engine_off": "치트 엔진이 꺼져 있습니다. 치트를 켜면 시작됩니다.",
"cw_cheats_err_changed": "치트 파일이 바뀌었습니다. 목록을 다시 읽었습니다.",
"cw_cheats_err_load": "치트를 읽지 못했습니다 ({code}). 새로 고침을 눌러 다시 시도하세요.",
"cw_cheats_err_module": "이 치트에는 아직 로드되지 않은 게임 부분이 필요합니다. 게임을 더 진행한 뒤 다시 시도하세요.",
"cw_cheats_err_toggle": "치트를 전환하지 못했습니다 ({code}).",
"cw_cheats_exited": "게임이 종료되었습니다.",
"cw_cheats_exited_next": "다시 시작하면 치트가 여기에 다시 나타납니다.",
"cw_cheats_how": "✕ 또는 □ 버튼으로 선택한 치트를 켜거나 끕니다.",
"cw_cheats_loading": "치트를 불러오는 중…",
"cw_cheats_no_game": "실행 중인 게임이 없습니다.",
"cw_cheats_no_game_next": "게임을 시작한 다음 치트를 여세요.",
"cw_cheats_none": "이 게임의 치트가 없습니다.",
"cw_cheats_none_next": "PC의 PS5Upload 앱에서 이 게임의 치트를 추가하세요.",
"cw_cheats_off": "꺼짐",
"cw_cheats_on": "켜짐",
"cw_cheats_refresh": "새로 고침",
"cw_cheats_switching": "전환 중…",
"cw_cheats_title": "치트",
"cw_cheats_truncated": "모든 치트를 여기에 표시할 수 없습니다. PC의 PS5Upload 앱에서 모두 볼 수 있습니다.",
"cw_ctl_last": "마지막으로 누른 버튼:",
"cw_ctl_logging": "이 화면이 열려 있는 동안 컨트롤러 지원 개선을 위해 버튼 입력이 이 본체의 작은 로그에 저장됩니다.",
"cw_ctl_not_yet": "아직 받지 못함",
"cw_ctl_ok": "작동함",
"cw_ctl_other_key": "다른 키: {key}",
"cw_ctl_picture": "DualSense 컨트롤러",
"cw_ctl_press_each": "각 버튼을 한 번씩 눌러 이 페이지가 무엇을 받는지 확인하세요. ○는 이 화면을 닫으므로 마지막에 누르세요.",
"cw_ctl_received": "받음",
"cw_ctl_received_job": "받음: {job} (아직 사용 안 함)",
"cw_ctl_system": "PS5가 사용",
"cw_ctl_title": "조작법",
"cw_ctl_works": "작동: {job}",
"cw_dialog_cancel": "취소",
"cw_files_bad_name": "“/”가 없는 이름을 사용하세요.",
"cw_files_batch_copy": "복사 중 {at}/{total}…",
"cw_files_batch_delete": "삭제 중 {at}/{total}…",
"cw_files_batch_failed": "{n}개가 실패했습니다.",
"cw_files_batch_move": "이동 중 {at}/{total}…",
"cw_files_batch_stop": "중지",
"cw_files_batch_stopped": "중지했습니다. {n}개는 시작하지 않았습니다.",
"cw_files_batch_stopping": "이 항목 다음에 중지합니다…",
"cw_files_close": "닫기",
"cw_files_copy_to": "복사할 위치…",
"cw_files_del_body": "폴더는 안의 모든 내용과 함께 삭제됩니다. 되돌릴 수 없습니다.",
"cw_files_del_list_many": "“{name}” 외 {more}개.",
"cw_files_del_many": "{n}개 항목을 삭제할까요?",
"cw_files_del_one": "“{name}”을(를) 삭제할까요?",
"cw_files_delete": "삭제",
"cw_files_done": "완료했습니다.",
"cw_files_drives": "드라이브",
"cw_files_empty": "이 폴더는 비어 있습니다.",
"cw_files_empty_next": "PC의 PS5Upload 앱에서 파일을 여기로 복사하거나 새 폴더를 만드세요.",
"cw_files_err_denied": "콘솔이 여기에서는 변경을 허용하지 않습니다.",
"cw_files_err_exists": "같은 이름의 항목이 이미 있습니다.",
"cw_files_err_into_itself": "폴더를 자기 자신이나 그 하위 폴더 안에 넣을 수 없습니다.",
"cw_files_err_load": "이 폴더를 열 수 없습니다.",
"cw_files_err_missing": "더 이상 존재하지 않습니다.",
"cw_files_err_read": "읽을 수 없습니다.",
"cw_files_fixperm": "권한 수정",
"cw_files_fixperm_batch": "권한 수정 중 {at}/{total}…",
"cw_files_fixperm_body": "이 폴더의 모든 항목을 PS5가 읽고 실행할 수 있게 합니다(chmod 777). 복사 후 게임이 시작되지 않을 때 사용하세요.",
"cw_files_fixperm_done": "권한을 수정했습니다.",
"cw_files_free": "{free} 남음",
"cw_files_here": "여기",
"cw_files_info": "정보",
"cw_files_info_items": "항목 수",
"cw_files_info_mode": "권한",
"cw_files_info_modified": "수정한 날짜",
"cw_files_info_size": "크기",
"cw_files_info_type": "종류",
"cw_files_info_where": "위치",
"cw_files_items": "{n}개 항목",
"cw_files_kind_dir": "폴더",
"cw_files_kind_file": "파일",
"cw_files_kind_link": "링크",
"cw_files_more": "더 보기",
"cw_files_move_to": "이동할 위치…",
"cw_files_name": "이름",
"cw_files_new_folder": "새 폴더",
"cw_files_no_folders": "폴더가 없습니다.",
"cw_files_no_folders_next": "이 폴더를 사용하려면 '여기'를 선택하세요.",
"cw_files_ok": "확인",
"cw_files_pick_drive": "드라이브 선택",
"cw_files_rename": "이름 바꾸기",
"cw_files_retry": "다시 시도",
"cw_files_selected": "{n}개 선택됨",
"cw_files_some_failed": "{n}개 실패: {reason}",
"cw_files_tasks": "실행 중인 작업: {n}",
"cw_files_too_large": "너무 커서 미리 볼 수 없습니다.",
"cw_files_truncated": "처음 1 MiB를 표시합니다.",
"cw_files_up": "위로",
"cw_files_view": "보기",
"cw_help_close": "닫기",
"cw_help_controls": "조작법",
"cw_help_pointer": "왼쪽 스틱으로 PS5 포인터를 움직이고, ✕로 가리키는 것을 클릭합니다.",
"cw_help_title": "이 화면의 버튼",
"cw_help_unconfirmed": "이 PS5에서 아직 확인되지 않음:",
"cw_hint_back": "뒤로",
"cw_hint_fullscreen": "전체 화면",
"cw_hint_help": "도움말",
"cw_hint_open": "열기",
"cw_hint_page": "페이지 위/아래",
"cw_hint_refresh": "새로 고침",
"cw_hint_switch": "켜기/끄기",
"cw_hint_switch_section": "섹션 전환",
"cw_hint_top": "맨 위로",
"cw_hints_label": "컨트롤러 버튼",
"cw_home_cancel_task": "취소",
"cw_home_cancel_task_confirm": "작업 취소",
"cw_home_cheats": "치트",
"cw_home_close_game": "게임 닫기",
"cw_home_confirm_cancel_body": "지금 바로 멈춥니다. 되돌릴 수 없습니다.",
"cw_home_confirm_cancel_body_pc": "PC에서 시작한 작업입니다. PC에서도 멈춥니다.",
"cw_home_confirm_cancel_title": "이 작업을 취소할까요?",
"cw_home_confirm_close_body": "게임에서 저장하지 않은 진행 상황은 사라집니다.",
"cw_home_confirm_close_title": "{name}을(를) 닫을까요?",
"cw_home_err_busy": "콘솔이 사용 중입니다. 잠시 후 다시 시도하세요.",
"cw_home_err_failed": "실패했습니다({code}).",
"cw_home_err_gone": "이 작업은 이미 끝났습니다.",
"cw_home_err_load_storage": "드라이브를 읽을 수 없습니다.",
"cw_home_err_load_tasks": "작업 목록을 읽을 수 없습니다.",
"cw_home_err_offline": "콘솔이 응답하지 않았습니다. 다시 시도하세요.",
"cw_home_free_of": "{total} 중 {free} 남음",
"cw_home_keep_task": "계속 진행",
"cw_home_kind_copy": "복사",
"cw_home_kind_download": "다운로드",
"cw_home_kind_op": "파일 작업",
"cw_home_kind_other": "작업",
"cw_home_kind_upload": "업로드",
"cw_home_loading": "불러오는 중…",
"cw_home_no_game_next": "PS5 홈 화면에서 게임을 시작하면 해당 치트가 여기에 표시됩니다.",
"cw_home_no_game_plain": "PS5 홈 화면에서 게임을 시작하세요.",
"cw_home_no_tasks": "현재 작업이 없습니다.",
"cw_home_no_tasks_next": "PC의 PS5Upload 앱에서 보낸 업로드가 여기에 표시됩니다.",
"cw_home_now_running": "실행 중",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} / {total}",
"cw_home_progress_files": "{done} / {total}개 파일",
"cw_home_retrying": "곧 다시 시도합니다.",
"cw_home_state_done": "완료",
"cw_home_state_failed": "실패",
"cw_home_state_running": "진행 중",
"cw_home_storage": "저장소",
"cw_home_tasks": "작업",
"cw_home_tasks_fewer": "간략히 보기",
"cw_home_tasks_more": "+{n}개 더",
"cw_home_vol_ext": "확장 저장소",
"cw_home_vol_internal": "내부 저장소",
"cw_home_vol_m2": "M.2 저장소",
"cw_home_vol_readonly": "읽기 전용",
"cw_home_vol_usb": "USB 드라이브",
"cw_home_vol_usb_ext": "USB 확장 저장소",
"cw_job_actions": "추가 작업",
"cw_job_back": "뒤로",
"cw_job_confirm": "선택 / 열기",
"cw_job_fullscreen": "전체 화면 켜기/끄기",
"cw_job_help": "이 화면 도움말",
"cw_job_move": "이동",
"cw_job_mute": "마이크 음소거",
"cw_job_next_section": "다음 섹션",
"cw_job_page_down": "다음 페이지",
"cw_job_page_up": "이전 페이지",
"cw_job_pointer": "PS5 포인터",
"cw_job_prev_section": "이전 섹션",
"cw_job_ps": "PS5 홈과 메뉴",
"cw_job_rail": "섹션 목록",
"cw_job_refresh": "새로 고침",
"cw_job_scroll": "스크롤",
"cw_job_select": "항목 선택 / 치트 전환",
"cw_job_top": "목록 맨 위",
"cw_nav_files": "파일",
"cw_nav_home": "홈",
"cw_nav_sections": "섹션",
"cw_nav_settings": "설정",
"cw_reload_body": "계속하려면 이 페이지를 새로 고치세요.",
"cw_reload_button": "새로 고침",
"cw_reload_title": "PS5Upload 헬퍼가 다시 시작되었습니다",
"cw_select": "선택",
"cw_settings_about": "정보",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "고대비",
"cw_settings_controls": "조작법",
"cw_settings_controls_note": "여기서 각 컨트롤러 버튼이 하는 일. 버튼을 눌러 테스트하세요.",
"cw_settings_err_load": "설정을 불러오지 못했습니다.",
"cw_settings_err_save": "설정을 저장하지 못했습니다. 다시 시도하세요.",
"cw_settings_err_tile_add": "홈 화면에 PS5Upload를 추가하지 못했습니다. 다시 시도하세요.",
"cw_settings_err_tile_remove": "홈 화면에서 PS5Upload를 제거하지 못했습니다. 다시 시도하세요.",
"cw_settings_fullscreen": "전체 화면",
"cw_settings_fullscreen_note": "브라우저 막대를 숨겨 페이지가 TV 화면을 가득 채웁니다. 다음에 버튼을 누를 때 적용됩니다.",
"cw_settings_lan": "네트워크의 다른 기기 허용",
"cw_settings_lan_allow": "허용",
"cw_settings_lan_confirm_title": "다른 기기를 허용할까요?",
"cw_settings_lan_off_note": "끄면 다른 기기는 접근할 수 없습니다. 이 콘솔은 계속 접근할 수 있습니다.",
"cw_settings_lan_warning": "네트워크의 누구나 이 페이지를 사용해 파일을 관리할 수 있게 됩니다.",
"cw_settings_language": "언어",
"cw_settings_language_system": "시스템 기본값",
"cw_settings_network": "네트워크",
"cw_settings_off": "꺼짐",
"cw_settings_on": "켜짐",
"cw_settings_theme": "테마",
"cw_settings_tile": "홈 화면에 PS5Upload 표시",
"cw_settings_tips": "팁 다시 보기",
"cw_settings_using": "컨트롤러와 팁",
"cw_settings_version": "버전 {version}",
"cw_status_connecting": "연결 중…",
"cw_status_offline": "연결되지 않음",
"cw_task_from_console": "이 콘솔에서",
"cw_task_from_pc": "PC에서",
"cw_theme_dark": "다크",
"cw_theme_light": "라이트",
"cw_theme_oled": "OLED",
"cw_theme_peach": "피치",
"cw_tour1_cheats": "치트: 실행 중인 게임의 치트 전환.",
"cw_tour1_files": "파일: PS5 드라이브에서 탐색, 복사, 이동, 삭제.",
"cw_tour1_home": "홈: 실행 중인 게임, 작업, 드라이브.",
"cw_tour1_settings": "설정: 테마, 언어, 전체 화면, 그리고 이 팁.",
"cw_tour1_title": "왼쪽의 네 섹션",
"cw_tour2_circle": "○는 한 단계 뒤로 갑니다.",
"cw_tour2_cross": "✕는 강조된 것을 선택합니다.",
"cw_tour2_more": "그 밖의 모든 기능은 화면에 버튼이 있습니다. 강조한 뒤 ✕를 누르세요. 왼쪽 아래 도움말에서 다른 작동하는 버튼을 볼 수 있습니다.",
"cw_tour2_title": "✕로 선택, ○로 뒤로",
"cw_tour3_fullscreen": "처음 버튼을 누르면 페이지가 TV 전체를 채웁니다. 전체 화면은 설정에서 끌 수 있습니다.",
"cw_tour3_pointer": "왼쪽 스틱으로 포인터를 움직이면 가리키는 것이 강조되고, ✕로 클릭합니다.",
"cw_tour3_title": "PS5 포인터도 됩니다",
"cw_tour_done": "확인",
"cw_tour_label": "팁",
"cw_tour_next": "다음",
"cw_tour_skip": "건너뛰기",
"cw_tour_step": "{n} / {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Działania",
"cw_cheats_apply": "Zastosuj",
"cw_cheats_engine_off": "Silnik kodów jest wyłączony. Uruchomi się, gdy włączysz kod.",
"cw_cheats_err_changed": "Pliki kodów się zmieniły. Lista została wczytana ponownie.",
"cw_cheats_err_load": "Nie udało się odczytać kodów ({code}). Naciśnij Odśwież, aby spróbować ponownie.",
"cw_cheats_err_module": "Ten kod wymaga części gry, która nie jest jeszcze wczytana. Spróbuj później w grze.",
"cw_cheats_err_toggle": "Nie udało się przełączyć kodu ({code}).",
"cw_cheats_exited": "Gra została zamknięta.",
"cw_cheats_exited_next": "Uruchom ją ponownie, a jej kody znów się tu pojawią.",
"cw_cheats_how": "✕ lub □ włącza albo wyłącza zaznaczony kod.",
"cw_cheats_loading": "Wczytywanie kodów…",
"cw_cheats_no_game": "Żadna gra nie jest uruchomiona.",
"cw_cheats_no_game_next": "Uruchom grę, a potem otwórz Kody.",
"cw_cheats_none": "Brak kodów dla tej gry.",
"cw_cheats_none_next": "Dodaj kody dla tej gry w aplikacji PS5Upload na komputerze.",
"cw_cheats_off": "Wył.",
"cw_cheats_on": "Wł.",
"cw_cheats_refresh": "Odśwież",
"cw_cheats_switching": "Przełączanie…",
"cw_cheats_title": "Kody",
"cw_cheats_truncated": "Nie wszystkie kody się tu mieszczą. Aplikacja PS5Upload na komputerze pokazuje wszystkie.",
"cw_ctl_last": "Ostatnio naciśnięty:",
"cw_ctl_logging": "Gdy ten ekran jest otwarty, naciśnięcia są zapisywane w małym dzienniku na tej konsoli, aby ulepszyć obsługę kontrolera.",
"cw_ctl_not_yet": "Jeszcze nie odebrano",
"cw_ctl_ok": "Działa",
"cw_ctl_other_key": "Inny klawisz: {key}",
"cw_ctl_picture": "Kontroler DualSense",
"cw_ctl_press_each": "Naciśnij każdy przycisk raz, aby zobaczyć, co odbiera ta strona. ○ zamyka ten ekran, więc naciśnij go na końcu.",
"cw_ctl_received": "Odebrano",
"cw_ctl_received_job": "Odebrano: {job} (jeszcze nieużywany)",
"cw_ctl_system": "Używany przez PS5",
"cw_ctl_title": "Sterowanie",
"cw_ctl_works": "Działa: {job}",
"cw_dialog_cancel": "Anuluj",
"cw_files_bad_name": "Użyj nazwy bez „/”.",
"cw_files_batch_copy": "Kopiowanie {at} z {total}…",
"cw_files_batch_delete": "Usuwanie {at} z {total}…",
"cw_files_batch_failed": "Niepowodzenia: {n}.",
"cw_files_batch_move": "Przenoszenie {at} z {total}…",
"cw_files_batch_stop": "Zatrzymaj",
"cw_files_batch_stopped": "Zatrzymano. Nie rozpoczęto: {n}.",
"cw_files_batch_stopping": "Zatrzymanie po tym elemencie…",
"cw_files_close": "Zamknij",
"cw_files_copy_to": "Kopiuj do…",
"cw_files_del_body": "Foldery są usuwane z całą zawartością. Tego nie można cofnąć.",
"cw_files_del_list_many": "„{name}” i jeszcze {more}.",
"cw_files_del_many": "Usunąć elementy ({n})?",
"cw_files_del_one": "Usunąć „{name}”?",
"cw_files_delete": "Usuń",
"cw_files_done": "Gotowe.",
"cw_files_drives": "Dyski",
"cw_files_empty": "Ten folder jest pusty.",
"cw_files_empty_next": "Skopiuj tu pliki z aplikacji PS5Upload na komputerze lub utwórz nowy folder.",
"cw_files_err_denied": "Konsola nie pozwala tu na zmiany.",
"cw_files_err_exists": "Coś o tej nazwie już tam jest.",
"cw_files_err_into_itself": "Folderu nie można umieścić w nim samym ani w jego podfolderze.",
"cw_files_err_load": "Nie udało się otworzyć folderu.",
"cw_files_err_missing": "Tego już tam nie ma.",
"cw_files_err_read": "Nie udało się odczytać.",
"cw_files_fixperm": "Napraw uprawnienia",
"cw_files_fixperm_batch": "Naprawianie uprawnień {at} z {total}…",
"cw_files_fixperm_body": "Sprawia, że wszystko w tym folderze jest czytelne i wykonywalne dla PS5 (chmod 777). Użyj, gdy gra nie uruchamia się po skopiowaniu.",
"cw_files_fixperm_done": "Uprawnienia naprawione.",
"cw_files_free": "Wolne: {free}",
"cw_files_here": "Tutaj",
"cw_files_info": "Informacje",
"cw_files_info_items": "Elementy",
"cw_files_info_mode": "Uprawnienia",
"cw_files_info_modified": "Zmodyfikowano",
"cw_files_info_size": "Rozmiar",
"cw_files_info_type": "Typ",
"cw_files_info_where": "Lokalizacja",
"cw_files_items": "Elementy: {n}",
"cw_files_kind_dir": "Folder",
"cw_files_kind_file": "Plik",
"cw_files_kind_link": "Dowiązanie",
"cw_files_more": "Pokaż więcej",
"cw_files_move_to": "Przenieś do…",
"cw_files_name": "Nazwa",
"cw_files_new_folder": "Nowy folder",
"cw_files_no_folders": "Brak folderów.",
"cw_files_no_folders_next": "Wybierz „Tutaj”, aby użyć tego folderu.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Wybierz dysk",
"cw_files_rename": "Zmień nazwę",
"cw_files_retry": "Spróbuj ponownie",
"cw_files_selected": "Zaznaczono: {n}",
"cw_files_some_failed": "Nieudane ({n}): {reason}",
"cw_files_tasks": "Trwające zadania: {n}",
"cw_files_too_large": "Za duży, by pokazać podgląd.",
"cw_files_truncated": "Pokazano pierwszy 1 MiB.",
"cw_files_up": "W górę",
"cw_files_view": "Pokaż",
"cw_help_close": "Zamknij",
"cw_help_controls": "Sterowanie",
"cw_help_pointer": "Lewa gałka porusza wskaźnikiem PS5; ✕ klika to, na co wskazuje.",
"cw_help_title": "Przyciski na tym ekranie",
"cw_help_unconfirmed": "Jeszcze niepotwierdzone na tej PS5:",
"cw_hint_back": "Wstecz",
"cw_hint_fullscreen": "Pełny ekran",
"cw_hint_help": "Pomoc",
"cw_hint_open": "Otwórz",
"cw_hint_page": "Strona w górę/w dół",
"cw_hint_refresh": "Odśwież",
"cw_hint_switch": "Wł./wył.",
"cw_hint_switch_section": "Zmień sekcję",
"cw_hint_top": "Na górę",
"cw_hints_label": "Przyciski kontrolera",
"cw_home_cancel_task": "Anuluj",
"cw_home_cancel_task_confirm": "Anuluj zadanie",
"cw_home_cheats": "Kody",
"cw_home_close_game": "Zamknij grę",
"cw_home_confirm_cancel_body": "Zatrzyma się teraz. Tego nie można cofnąć.",
"cw_home_confirm_cancel_body_pc": "To zadanie uruchomił komputer. Zatrzyma się także na komputerze.",
"cw_home_confirm_cancel_title": "Anulować to zadanie?",
"cw_home_confirm_close_body": "Niezapisane postępy w grze zostaną utracone.",
"cw_home_confirm_close_title": "Zamknąć {name}?",
"cw_home_err_busy": "Konsola jest zajęta. Spróbuj ponownie za chwilę.",
"cw_home_err_failed": "Nie udało się ({code}).",
"cw_home_err_gone": "To zadanie już się zakończyło.",
"cw_home_err_load_storage": "Nie udało się odczytać dysków.",
"cw_home_err_load_tasks": "Nie udało się odczytać listy zadań.",
"cw_home_err_offline": "Konsola nie odpowiedziała. Spróbuj ponownie.",
"cw_home_free_of": "{free} wolne z {total}",
"cw_home_keep_task": "Kontynuuj",
"cw_home_kind_copy": "Kopiowanie",
"cw_home_kind_download": "Pobieranie",
"cw_home_kind_op": "Operacja na plikach",
"cw_home_kind_other": "Zadanie",
"cw_home_kind_upload": "Wysyłanie",
"cw_home_loading": "Wczytywanie…",
"cw_home_no_game_next": "Uruchom grę z ekranu głównego PS5; jej kody pojawią się tutaj.",
"cw_home_no_game_plain": "Uruchom grę z ekranu głównego PS5.",
"cw_home_no_tasks": "Brak zadań.",
"cw_home_no_tasks_next": "Tutaj pojawią się przesyłania z aplikacji PS5Upload na komputerze.",
"cw_home_now_running": "Teraz uruchomione",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} z {total}",
"cw_home_progress_files": "{done} z {total} plików",
"cw_home_retrying": "Ponowna próba za chwilę.",
"cw_home_state_done": "Gotowe",
"cw_home_state_failed": "Niepowodzenie",
"cw_home_state_running": "W toku",
"cw_home_storage": "Pamięć",
"cw_home_tasks": "Zadania",
"cw_home_tasks_fewer": "Pokaż mniej",
"cw_home_tasks_more": "+{n} więcej",
"cw_home_vol_ext": "Rozszerzona pamięć",
"cw_home_vol_internal": "Pamięć wewnętrzna",
"cw_home_vol_m2": "Pamięć M.2",
"cw_home_vol_readonly": "Tylko do odczytu",
"cw_home_vol_usb": "Dysk USB",
"cw_home_vol_usb_ext": "Rozszerzona pamięć USB",
"cw_job_actions": "Więcej działań",
"cw_job_back": "Wstecz",
"cw_job_confirm": "Wybierz / otwórz",
"cw_job_fullscreen": "Pełny ekran wł./wył.",
"cw_job_help": "Pomoc do tego ekranu",
"cw_job_move": "Ruch",
"cw_job_mute": "Wyciszenie mikrofonu",
"cw_job_next_section": "Następna sekcja",
"cw_job_page_down": "Strona w dół",
"cw_job_page_up": "Strona w górę",
"cw_job_pointer": "Wskaźnik PS5",
"cw_job_prev_section": "Poprzednia sekcja",
"cw_job_ps": "Ekran główny i menu PS5",
"cw_job_rail": "Lista sekcji",
"cw_job_refresh": "Odśwież",
"cw_job_scroll": "Przewijanie",
"cw_job_select": "Zaznacz / przełącz kody",
"cw_job_top": "Początek listy",
"cw_nav_files": "Pliki",
"cw_nav_home": "Start",
"cw_nav_sections": "Sekcje",
"cw_nav_settings": "Ustawienia",
"cw_reload_body": "Odśwież tę stronę, aby kontynuować.",
"cw_reload_button": "Odśwież",
"cw_reload_title": "Helper PS5Upload uruchomił się ponownie",
"cw_select": "Zaznacz",
"cw_settings_about": "Informacje",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Wysoki kontrast",
"cw_settings_controls": "Sterowanie",
"cw_settings_controls_note": "Co robi tutaj każdy przycisk kontrolera. Naciśnij przycisk, aby go sprawdzić.",
"cw_settings_err_load": "Nie udało się wczytać ustawień.",
"cw_settings_err_save": "Nie udało się zapisać ustawienia. Spróbuj ponownie.",
"cw_settings_err_tile_add": "Nie udało się dodać PS5Upload do ekranu głównego. Spróbuj ponownie.",
"cw_settings_err_tile_remove": "Nie udało się usunąć PS5Upload z ekranu głównego. Spróbuj ponownie.",
"cw_settings_fullscreen": "Pełny ekran",
"cw_settings_fullscreen_note": "Ukrywa paski przeglądarki, aby strona wypełniała cały telewizor. Działa od następnego naciśnięcia przycisku.",
"cw_settings_lan": "Zezwalaj innym urządzeniom w sieci",
"cw_settings_lan_allow": "Zezwól",
"cw_settings_lan_confirm_title": "Zezwolić innym urządzeniom?",
"cw_settings_lan_off_note": "Po wyłączeniu inne urządzenia stracą dostęp; ta konsola go zachowa.",
"cw_settings_lan_warning": "Każdy w Twojej sieci będzie mógł wtedy używać tej strony i zarządzać Twoimi plikami.",
"cw_settings_language": "Język",
"cw_settings_language_system": "Domyślny systemu",
"cw_settings_network": "Sieć",
"cw_settings_off": "Wył.",
"cw_settings_on": "Wł.",
"cw_settings_theme": "Motyw",
"cw_settings_tile": "Pokaż PS5Upload na ekranie głównym",
"cw_settings_tips": "Pokaż wskazówki ponownie",
"cw_settings_using": "Kontroler i wskazówki",
"cw_settings_version": "Wersja {version}",
"cw_status_connecting": "Łączenie…",
"cw_status_offline": "Brak połączenia",
"cw_task_from_console": "Z tej konsoli",
"cw_task_from_pc": "Z komputera",
"cw_theme_dark": "Ciemny",
"cw_theme_light": "Jasny",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Brzoskwinia",
"cw_tour1_cheats": "Kody: przełączaj kody uruchomionej gry.",
"cw_tour1_files": "Pliki: przeglądaj, kopiuj, przenoś i usuwaj na dyskach PS5.",
"cw_tour1_home": "Start: uruchomiona gra, zadania i dyski.",
"cw_tour1_settings": "Ustawienia: motyw, język, pełny ekran i te wskazówki.",
"cw_tour1_title": "Cztery sekcje po lewej",
"cw_tour2_circle": "○ cofa o jeden krok.",
"cw_tour2_cross": "✕ wybiera to, co podświetlone.",
"cw_tour2_more": "Wszystko inne ma przycisk na ekranie: podświetl go i naciśnij ✕. Pomoc w lewym dolnym rogu pokazuje, które inne przyciski działają.",
"cw_tour2_title": "✕ wybiera, ○ cofa",
"cw_tour3_fullscreen": "Po pierwszym naciśnięciu strona wypełnia cały telewizor. Pełny ekran można wyłączyć w Ustawieniach.",
"cw_tour3_pointer": "Poruszaj wskaźnikiem lewą gałką: to, na co wskazuje, jest podświetlone, a ✕ to klika.",
"cw_tour3_title": "Wskaźnik PS5 też działa",
"cw_tour_done": "Rozumiem",
"cw_tour_label": "Wskazówki",
"cw_tour_next": "Dalej",
"cw_tour_skip": "Pomiń",
"cw_tour_step": "{n} z {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Ações",
"cw_cheats_apply": "Aplicar",
"cw_cheats_engine_off": "O motor de cheats está desligado. Ele inicia quando você liga um cheat.",
"cw_cheats_err_changed": "Os arquivos de cheats mudaram. A lista foi lida de novo.",
"cw_cheats_err_load": "Não foi possível ler os cheats ({code}). Pressione Atualizar para tentar de novo.",
"cw_cheats_err_module": "Este cheat precisa de uma parte do jogo que ainda não foi carregada. Tente de novo mais tarde no jogo.",
"cw_cheats_err_toggle": "Não foi possível alternar o cheat ({code}).",
"cw_cheats_exited": "O jogo foi fechado.",
"cw_cheats_exited_next": "Inicie-o de novo e os cheats dele voltam a aparecer aqui.",
"cw_cheats_how": "✕ ou □ liga ou desliga o cheat selecionado.",
"cw_cheats_loading": "Carregando cheats…",
"cw_cheats_no_game": "Nenhum jogo em execução.",
"cw_cheats_no_game_next": "Inicie um jogo e depois abra Cheats.",
"cw_cheats_none": "Nenhum cheat para este jogo.",
"cw_cheats_none_next": "Adicione cheats para este jogo pelo app PS5Upload no seu PC.",
"cw_cheats_off": "Desligado",
"cw_cheats_on": "Ligado",
"cw_cheats_refresh": "Atualizar",
"cw_cheats_switching": "Alternando…",
"cw_cheats_title": "Cheats",
"cw_cheats_truncated": "Nem todos os cheats cabem aqui. O app PS5Upload no seu PC mostra todos.",
"cw_ctl_last": "Último pressionado:",
"cw_ctl_logging": "Enquanto esta tela estiver aberta, os botões pressionados são salvos em um pequeno registro neste console para melhorar o suporte ao controle.",
"cw_ctl_not_yet": "Ainda não recebido",
"cw_ctl_ok": "Funciona",
"cw_ctl_other_key": "Outra tecla: {key}",
"cw_ctl_picture": "Controle DualSense",
"cw_ctl_press_each": "Pressione cada botão uma vez para ver o que esta página recebe. ○ fecha esta tela, então pressione-o por último.",
"cw_ctl_received": "Recebido",
"cw_ctl_received_job": "Recebido: {job} (ainda não usado)",
"cw_ctl_system": "Usado pelo PS5",
"cw_ctl_title": "Controles",
"cw_ctl_works": "Funciona: {job}",
"cw_dialog_cancel": "Cancelar",
"cw_files_bad_name": "Use um nome sem “/”.",
"cw_files_batch_copy": "Copiando {at} de {total}…",
"cw_files_batch_delete": "Excluindo {at} de {total}…",
"cw_files_batch_failed": "{n} falharam.",
"cw_files_batch_move": "Movendo {at} de {total}…",
"cw_files_batch_stop": "Parar",
"cw_files_batch_stopped": "Parado. {n} não iniciado(s).",
"cw_files_batch_stopping": "Parando após este item…",
"cw_files_close": "Fechar",
"cw_files_copy_to": "Copiar para…",
"cw_files_del_body": "As pastas são excluídas com tudo o que contêm. Isso não pode ser desfeito.",
"cw_files_del_list_many": "“{name}” e mais {more}.",
"cw_files_del_many": "Excluir {n} itens?",
"cw_files_del_one": "Excluir “{name}”?",
"cw_files_delete": "Excluir",
"cw_files_done": "Concluído.",
"cw_files_drives": "Unidades",
"cw_files_empty": "Esta pasta está vazia.",
"cw_files_empty_next": "Copie arquivos para cá pelo app PS5Upload no seu PC ou crie uma nova pasta.",
"cw_files_err_denied": "O console não permite alterações aqui.",
"cw_files_err_exists": "Já existe algo com esse nome.",
"cw_files_err_into_itself": "Uma pasta não pode ir para dentro de si mesma ou de uma subpasta.",
"cw_files_err_load": "Não foi possível abrir esta pasta.",
"cw_files_err_missing": "Não está mais lá.",
"cw_files_err_read": "Não foi possível ler.",
"cw_files_fixperm": "Corrigir permissões",
"cw_files_fixperm_batch": "Corrigindo permissões {at} de {total}…",
"cw_files_fixperm_body": "Torna tudo nesta pasta legível e executável pelo PS5 (chmod 777). Use quando um jogo não iniciar depois de copiar.",
"cw_files_fixperm_done": "Permissões corrigidas.",
"cw_files_free": "{free} livres",
"cw_files_here": "Aqui",
"cw_files_info": "Informações",
"cw_files_info_items": "Itens",
"cw_files_info_mode": "Permissões",
"cw_files_info_modified": "Modificado",
"cw_files_info_size": "Tamanho",
"cw_files_info_type": "Tipo",
"cw_files_info_where": "Local",
"cw_files_items": "{n} itens",
"cw_files_kind_dir": "Pasta",
"cw_files_kind_file": "Arquivo",
"cw_files_kind_link": "Link",
"cw_files_more": "Mostrar mais",
"cw_files_move_to": "Mover para…",
"cw_files_name": "Nome",
"cw_files_new_folder": "Nova pasta",
"cw_files_no_folders": "Nenhuma pasta aqui.",
"cw_files_no_folders_next": "Escolha “Aqui” para usar esta pasta.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Escolha uma unidade",
"cw_files_rename": "Renomear",
"cw_files_retry": "Tentar de novo",
"cw_files_selected": "{n} selecionados",
"cw_files_some_failed": "{n} falharam: {reason}",
"cw_files_tasks": "Tarefas em andamento: {n}",
"cw_files_too_large": "Grande demais para visualizar.",
"cw_files_truncated": "Mostrando o primeiro 1 MiB.",
"cw_files_up": "Acima",
"cw_files_view": "Ver",
"cw_help_close": "Fechar",
"cw_help_controls": "Controles",
"cw_help_pointer": "O analógico esquerdo move o ponteiro do PS5; ✕ clica no que está sob ele.",
"cw_help_title": "Botões nesta tela",
"cw_help_unconfirmed": "Ainda não confirmados neste PS5:",
"cw_hint_back": "Voltar",
"cw_hint_fullscreen": "Tela cheia",
"cw_hint_help": "Ajuda",
"cw_hint_open": "Abrir",
"cw_hint_page": "Página acima/abaixo",
"cw_hint_refresh": "Atualizar",
"cw_hint_switch": "Ligar/desligar",
"cw_hint_switch_section": "Trocar de seção",
"cw_hint_top": "Topo",
"cw_hints_label": "Botões do controle",
"cw_home_cancel_task": "Cancelar",
"cw_home_cancel_task_confirm": "Cancelar tarefa",
"cw_home_cheats": "Cheats",
"cw_home_close_game": "Fechar jogo",
"cw_home_confirm_cancel_body": "Ela para agora. Isso não pode ser desfeito.",
"cw_home_confirm_cancel_body_pc": "Um PC iniciou esta tarefa. Ela também para no PC.",
"cw_home_confirm_cancel_title": "Cancelar esta tarefa?",
"cw_home_confirm_close_body": "O progresso não salvo no jogo será perdido.",
"cw_home_confirm_close_title": "Fechar {name}?",
"cw_home_err_busy": "O console está ocupado. Tente novamente em instantes.",
"cw_home_err_failed": "Não deu certo ({code}).",
"cw_home_err_gone": "Essa tarefa já terminou.",
"cw_home_err_load_storage": "Não foi possível ler as unidades.",
"cw_home_err_load_tasks": "Não foi possível ler a lista de tarefas.",
"cw_home_err_offline": "O console não respondeu. Tente novamente.",
"cw_home_free_of": "{free} livres de {total}",
"cw_home_keep_task": "Continuar",
"cw_home_kind_copy": "Cópia",
"cw_home_kind_download": "Download",
"cw_home_kind_op": "Operação de arquivos",
"cw_home_kind_other": "Tarefa",
"cw_home_kind_upload": "Envio",
"cw_home_loading": "Carregando…",
"cw_home_no_game_next": "Inicie um jogo pela tela inicial do PS5; os cheats dele aparecem aqui.",
"cw_home_no_game_plain": "Inicie um jogo pela tela inicial do PS5.",
"cw_home_no_tasks": "Nenhuma tarefa no momento.",
"cw_home_no_tasks_next": "Os envios do app PS5Upload no seu PC aparecem aqui.",
"cw_home_now_running": "Em execução",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} de {total}",
"cw_home_progress_files": "{done} de {total} arquivos",
"cw_home_retrying": "Tentando de novo em instantes.",
"cw_home_state_done": "Concluída",
"cw_home_state_failed": "Falhou",
"cw_home_state_running": "Em andamento",
"cw_home_storage": "Armazenamento",
"cw_home_tasks": "Tarefas",
"cw_home_tasks_fewer": "Mostrar menos",
"cw_home_tasks_more": "+{n} mais",
"cw_home_vol_ext": "Armazenamento estendido",
"cw_home_vol_internal": "Armazenamento interno",
"cw_home_vol_m2": "Armazenamento M.2",
"cw_home_vol_readonly": "Somente leitura",
"cw_home_vol_usb": "Unidade USB",
"cw_home_vol_usb_ext": "Armazenamento estendido USB",
"cw_job_actions": "Mais ações",
"cw_job_back": "Voltar",
"cw_job_confirm": "Selecionar / abrir",
"cw_job_fullscreen": "Tela cheia liga/desliga",
"cw_job_help": "Ajuda desta tela",
"cw_job_move": "Mover",
"cw_job_mute": "Silenciar microfone",
"cw_job_next_section": "Próxima seção",
"cw_job_page_down": "Página abaixo",
"cw_job_page_up": "Página acima",
"cw_job_pointer": "Ponteiro do PS5",
"cw_job_prev_section": "Seção anterior",
"cw_job_ps": "Início e menu do PS5",
"cw_job_rail": "Lista de seções",
"cw_job_refresh": "Atualizar",
"cw_job_scroll": "Rolar",
"cw_job_select": "Marcar itens / ligar cheats",
"cw_job_top": "Topo da lista",
"cw_nav_files": "Arquivos",
"cw_nav_home": "Início",
"cw_nav_sections": "Seções",
"cw_nav_settings": "Configurações",
"cw_reload_body": "Recarregue esta página para continuar.",
"cw_reload_button": "Recarregar",
"cw_reload_title": "O auxiliar do PS5Upload reiniciou",
"cw_select": "Selecionar",
"cw_settings_about": "Sobre",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Alto contraste",
"cw_settings_controls": "Controles",
"cw_settings_controls_note": "O que cada botão do controle faz aqui. Pressione um botão para testá-lo.",
"cw_settings_err_load": "Não foi possível carregar as configurações.",
"cw_settings_err_save": "Não foi possível salvar a configuração. Tente de novo.",
"cw_settings_err_tile_add": "Não foi possível adicionar o PS5Upload à tela inicial. Tente de novo.",
"cw_settings_err_tile_remove": "Não foi possível remover o PS5Upload da tela inicial. Tente de novo.",
"cw_settings_fullscreen": "Tela cheia",
"cw_settings_fullscreen_note": "Esconde as barras do navegador para a página ocupar a TV inteira. Vale a partir do próximo botão pressionado.",
"cw_settings_lan": "Permitir outros dispositivos da rede",
"cw_settings_lan_allow": "Permitir",
"cw_settings_lan_confirm_title": "Permitir outros dispositivos?",
"cw_settings_lan_off_note": "Ao desativar, os outros dispositivos perdem o acesso; este console mantém o acesso.",
"cw_settings_lan_warning": "Qualquer pessoa na sua rede poderá usar esta página e gerenciar seus arquivos.",
"cw_settings_language": "Idioma",
"cw_settings_language_system": "Padrão do sistema",
"cw_settings_network": "Rede",
"cw_settings_off": "Desativado",
"cw_settings_on": "Ativado",
"cw_settings_theme": "Tema",
"cw_settings_tile": "Mostrar o PS5Upload na tela inicial",
"cw_settings_tips": "Mostrar as dicas de novo",
"cw_settings_using": "Controle e dicas",
"cw_settings_version": "Versão {version}",
"cw_status_connecting": "Conectando…",
"cw_status_offline": "Não conectado",
"cw_task_from_console": "Deste console",
"cw_task_from_pc": "De um PC",
"cw_theme_dark": "Escuro",
"cw_theme_light": "Claro",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Pêssego",
"cw_tour1_cheats": "Cheats: ligue cheats do jogo em execução.",
"cw_tour1_files": "Arquivos: navegue, copie, mova e exclua nas unidades do PS5.",
"cw_tour1_home": "Início: o jogo em execução, as tarefas e as unidades.",
"cw_tour1_settings": "Configurações: tema, idioma, tela cheia e estas dicas.",
"cw_tour1_title": "Quatro seções, à esquerda",
"cw_tour2_circle": "○ volta um passo.",
"cw_tour2_cross": "✕ seleciona o que está destacado.",
"cw_tour2_more": "Todo o resto tem um botão na tela: destaque-o e pressione ✕. Ajuda, no canto inferior esquerdo, mostra quais outros botões funcionam.",
"cw_tour2_title": "✕ seleciona, ○ volta",
"cw_tour3_fullscreen": "A página ocupa a TV inteira depois do primeiro botão pressionado. Você pode desligar a tela cheia em Configurações.",
"cw_tour3_pointer": "Mova o ponteiro com o analógico esquerdo: o que está sob ele fica destacado e ✕ clica nele.",
"cw_tour3_title": "O ponteiro do PS5 também funciona",
"cw_tour_done": "Entendi",
"cw_tour_label": "Dicas",
"cw_tour_next": "Próxima",
"cw_tour_skip": "Pular",
"cw_tour_step": "{n} de {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Действия",
"cw_cheats_apply": "Применить",
"cw_cheats_engine_off": "Движок читов выключен. Он запустится, когда вы включите чит.",
"cw_cheats_err_changed": "Файлы читов изменились. Список прочитан заново.",
"cw_cheats_err_load": "Не удалось прочитать читы ({code}). Нажмите «Обновить», чтобы повторить.",
"cw_cheats_err_module": "Этому читу нужна часть игры, которая ещё не загружена. Попробуйте позже в игре.",
"cw_cheats_err_toggle": "Не удалось переключить чит ({code}).",
"cw_cheats_exited": "Игра закрыта.",
"cw_cheats_exited_next": "Запустите её снова, и её читы снова появятся здесь.",
"cw_cheats_how": "✕ или □ включает или выключает выбранный чит.",
"cw_cheats_loading": "Загрузка читов…",
"cw_cheats_no_game": "Игра не запущена.",
"cw_cheats_no_game_next": "Запустите игру, затем откройте «Читы».",
"cw_cheats_none": "Для этой игры нет читов.",
"cw_cheats_none_next": "Добавьте читы для этой игры в приложении PS5Upload на ПК.",
"cw_cheats_off": "Выкл.",
"cw_cheats_on": "Вкл.",
"cw_cheats_refresh": "Обновить",
"cw_cheats_switching": "Переключение…",
"cw_cheats_title": "Читы",
"cw_cheats_truncated": "Здесь помещаются не все читы. Приложение PS5Upload на ПК показывает все.",
"cw_ctl_last": "Последнее нажатие:",
"cw_ctl_logging": "Пока этот экран открыт, нажатия сохраняются в небольшой журнал на этой консоли, чтобы улучшить поддержку контроллера.",
"cw_ctl_not_yet": "Ещё не получено",
"cw_ctl_ok": "Работает",
"cw_ctl_other_key": "Другая клавиша: {key}",
"cw_ctl_picture": "Контроллер DualSense",
"cw_ctl_press_each": "Нажмите каждую кнопку один раз, чтобы увидеть, что получает эта страница. ○ закрывает этот экран, поэтому нажмите её последней.",
"cw_ctl_received": "Получено",
"cw_ctl_received_job": "Получено: {job} (пока не используется)",
"cw_ctl_system": "Занята PS5",
"cw_ctl_title": "Управление",
"cw_ctl_works": "Работает: {job}",
"cw_dialog_cancel": "Отмена",
"cw_files_bad_name": "Имя не должно содержать «/».",
"cw_files_batch_copy": "Копирование {at} из {total}…",
"cw_files_batch_delete": "Удаление {at} из {total}…",
"cw_files_batch_failed": "С ошибкой: {n}.",
"cw_files_batch_move": "Перемещение {at} из {total}…",
"cw_files_batch_stop": "Остановить",
"cw_files_batch_stopped": "Остановлено. Не начато: {n}.",
"cw_files_batch_stopping": "Остановка после этого элемента…",
"cw_files_close": "Закрыть",
"cw_files_copy_to": "Копировать в…",
"cw_files_del_body": "Папки удаляются вместе со всем содержимым. Это нельзя отменить.",
"cw_files_del_list_many": "«{name}» и ещё {more}.",
"cw_files_del_many": "Удалить элементы ({n})?",
"cw_files_del_one": "Удалить «{name}»?",
"cw_files_delete": "Удалить",
"cw_files_done": "Готово.",
"cw_files_drives": "Накопители",
"cw_files_empty": "Эта папка пуста.",
"cw_files_empty_next": "Скопируйте сюда файлы из приложения PS5Upload на ПК или создайте новую папку.",
"cw_files_err_denied": "Консоль не разрешает изменения здесь.",
"cw_files_err_exists": "Элемент с таким именем уже есть.",
"cw_files_err_into_itself": "Папку нельзя поместить в саму себя или в её подпапку.",
"cw_files_err_load": "Не удалось открыть папку.",
"cw_files_err_missing": "Этого больше нет.",
"cw_files_err_read": "Не удалось прочитать.",
"cw_files_fixperm": "Исправить права",
"cw_files_fixperm_batch": "Исправление прав {at} из {total}…",
"cw_files_fixperm_body": "Делает всё в этой папке доступным для чтения и запуска на PS5 (chmod 777). Используйте, если игра не запускается после копирования.",
"cw_files_fixperm_done": "Права исправлены.",
"cw_files_free": "Свободно: {free}",
"cw_files_here": "Сюда",
"cw_files_info": "Сведения",
"cw_files_info_items": "Элементов",
"cw_files_info_mode": "Права доступа",
"cw_files_info_modified": "Изменён",
"cw_files_info_size": "Размер",
"cw_files_info_type": "Тип",
"cw_files_info_where": "Расположение",
"cw_files_items": "Элементов: {n}",
"cw_files_kind_dir": "Папка",
"cw_files_kind_file": "Файл",
"cw_files_kind_link": "Ссылка",
"cw_files_more": "Показать ещё",
"cw_files_move_to": "Переместить в…",
"cw_files_name": "Имя",
"cw_files_new_folder": "Новая папка",
"cw_files_no_folders": "Здесь нет папок.",
"cw_files_no_folders_next": "Выберите «Сюда», чтобы использовать эту папку.",
"cw_files_ok": "ОК",
"cw_files_pick_drive": "Выберите накопитель",
"cw_files_rename": "Переименовать",
"cw_files_retry": "Повторить",
"cw_files_selected": "Выбрано: {n}",
"cw_files_some_failed": "Не удалось ({n}): {reason}",
"cw_files_tasks": "Выполняется задач: {n}",
"cw_files_too_large": "Слишком большой для просмотра.",
"cw_files_truncated": "Показан первый 1 МиБ.",
"cw_files_up": "Вверх",
"cw_files_view": "Просмотр",
"cw_help_close": "Закрыть",
"cw_help_controls": "Управление",
"cw_help_pointer": "Левый стик двигает указатель PS5; ✕ нажимает то, на что он наведён.",
"cw_help_title": "Кнопки на этом экране",
"cw_help_unconfirmed": "Ещё не подтверждены на этой PS5:",
"cw_hint_back": "Назад",
"cw_hint_fullscreen": "Полный экран",
"cw_hint_help": "Справка",
"cw_hint_open": "Открыть",
"cw_hint_page": "Страница вверх/вниз",
"cw_hint_refresh": "Обновить",
"cw_hint_switch": "Вкл./выкл.",
"cw_hint_switch_section": "Сменить раздел",
"cw_hint_top": "В начало",
"cw_hints_label": "Кнопки геймпада",
"cw_home_cancel_task": "Отменить",
"cw_home_cancel_task_confirm": "Отменить задачу",
"cw_home_cheats": "Читы",
"cw_home_close_game": "Закрыть игру",
"cw_home_confirm_cancel_body": "Она остановится сейчас. Это нельзя отменить.",
"cw_home_confirm_cancel_body_pc": "Эту задачу запустил ПК. На ПК она тоже остановится.",
"cw_home_confirm_cancel_title": "Отменить эту задачу?",
"cw_home_confirm_close_body": "Несохранённый прогресс в игре будет потерян.",
"cw_home_confirm_close_title": "Закрыть {name}?",
"cw_home_err_busy": "Консоль занята. Попробуйте чуть позже.",
"cw_home_err_failed": "Не получилось ({code}).",
"cw_home_err_gone": "Эта задача уже завершилась.",
"cw_home_err_load_storage": "Не удалось прочитать накопители.",
"cw_home_err_load_tasks": "Не удалось прочитать список задач.",
"cw_home_err_offline": "Консоль не ответила. Попробуйте ещё раз.",
"cw_home_free_of": "Свободно {free} из {total}",
"cw_home_keep_task": "Продолжить",
"cw_home_kind_copy": "Копирование",
"cw_home_kind_download": "Скачивание",
"cw_home_kind_op": "Операция с файлами",
"cw_home_kind_other": "Задача",
"cw_home_kind_upload": "Загрузка на консоль",
"cw_home_loading": "Загрузка…",
"cw_home_no_game_next": "Запустите игру с главного экрана PS5, и её читы появятся здесь.",
"cw_home_no_game_plain": "Запустите игру с главного экрана PS5.",
"cw_home_no_tasks": "Сейчас задач нет.",
"cw_home_no_tasks_next": "Здесь появятся загрузки из приложения PS5Upload на вашем ПК.",
"cw_home_now_running": "Сейчас запущено",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} из {total}",
"cw_home_progress_files": "{done} из {total} файлов",
"cw_home_retrying": "Скоро будет новая попытка.",
"cw_home_state_done": "Готово",
"cw_home_state_failed": "Ошибка",
"cw_home_state_running": "Выполняется",
"cw_home_storage": "Хранилище",
"cw_home_tasks": "Задачи",
"cw_home_tasks_fewer": "Показать меньше",
"cw_home_tasks_more": "ещё +{n}",
"cw_home_vol_ext": "Расширенное хранилище",
"cw_home_vol_internal": "Внутреннее хранилище",
"cw_home_vol_m2": "Хранилище M.2",
"cw_home_vol_readonly": "Только чтение",
"cw_home_vol_usb": "USB-накопитель",
"cw_home_vol_usb_ext": "Расширенное хранилище USB",
"cw_job_actions": "Другие действия",
"cw_job_back": "Назад",
"cw_job_confirm": "Выбрать / открыть",
"cw_job_fullscreen": "Полный экран вкл./выкл.",
"cw_job_help": "Справка по экрану",
"cw_job_move": "Перемещение",
"cw_job_mute": "Отключить микрофон",
"cw_job_next_section": "Следующий раздел",
"cw_job_page_down": "Страница вниз",
"cw_job_page_up": "Страница вверх",
"cw_job_pointer": "Указатель PS5",
"cw_job_prev_section": "Предыдущий раздел",
"cw_job_ps": "Главный экран и меню PS5",
"cw_job_rail": "Список разделов",
"cw_job_refresh": "Обновить",
"cw_job_scroll": "Прокрутка",
"cw_job_select": "Отметить / переключить читы",
"cw_job_top": "В начало списка",
"cw_nav_files": "Файлы",
"cw_nav_home": "Главная",
"cw_nav_sections": "Разделы",
"cw_nav_settings": "Настройки",
"cw_reload_body": "Перезагрузите эту страницу, чтобы продолжить.",
"cw_reload_button": "Перезагрузить",
"cw_reload_title": "Помощник PS5Upload перезапустился",
"cw_select": "Выбрать",
"cw_settings_about": "О программе",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Высокая контрастность",
"cw_settings_controls": "Управление",
"cw_settings_controls_note": "Что здесь делает каждая кнопка контроллера. Нажмите кнопку, чтобы проверить её.",
"cw_settings_err_load": "Не удалось загрузить настройки.",
"cw_settings_err_save": "Не удалось сохранить настройку. Повторите попытку.",
"cw_settings_err_tile_add": "Не удалось добавить PS5Upload на главный экран. Повторите попытку.",
"cw_settings_err_tile_remove": "Не удалось убрать PS5Upload с главного экрана. Повторите попытку.",
"cw_settings_fullscreen": "Полный экран",
"cw_settings_fullscreen_note": "Скрывает панели браузера, чтобы страница заполняла весь телевизор. Срабатывает при следующем нажатии кнопки.",
"cw_settings_lan": "Разрешить другим устройствам в сети",
"cw_settings_lan_allow": "Разрешить",
"cw_settings_lan_confirm_title": "Разрешить другим устройствам?",
"cw_settings_lan_off_note": "При выключении другие устройства потеряют доступ; эта консоль сохранит его.",
"cw_settings_lan_warning": "Тогда любой в вашей сети сможет открыть эту страницу и управлять вашими файлами.",
"cw_settings_language": "Язык",
"cw_settings_language_system": "Как в системе",
"cw_settings_network": "Сеть",
"cw_settings_off": "Выкл.",
"cw_settings_on": "Вкл.",
"cw_settings_theme": "Тема",
"cw_settings_tile": "Показывать PS5Upload на главном экране",
"cw_settings_tips": "Показать советы снова",
"cw_settings_using": "Контроллер и советы",
"cw_settings_version": "Версия {version}",
"cw_status_connecting": "Подключение…",
"cw_status_offline": "Нет подключения",
"cw_task_from_console": "С этой консоли",
"cw_task_from_pc": "С ПК",
"cw_theme_dark": "Тёмная",
"cw_theme_light": "Светлая",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Персик",
"cw_tour1_cheats": "Читы: переключение читов запущенной игры.",
"cw_tour1_files": "Файлы: просмотр, копирование, перемещение и удаление на дисках PS5.",
"cw_tour1_home": "Главная: запущенная игра, задачи и диски.",
"cw_tour1_settings": "Настройки: тема, язык, полный экран и эти советы.",
"cw_tour1_title": "Четыре раздела слева",
"cw_tour2_circle": "○ возвращает на шаг назад.",
"cw_tour2_cross": "✕ выбирает выделенное.",
"cw_tour2_more": "У всего остального есть кнопка на экране: выделите её и нажмите ✕. Справка внизу слева показывает, какие ещё кнопки работают.",
"cw_tour2_title": "✕ выбирает, ○ возвращает",
"cw_tour3_fullscreen": "После первого нажатия страница заполняет весь телевизор. Полный экран можно выключить в настройках.",
"cw_tour3_pointer": "Двигайте указатель левым стиком: то, на что он наведён, выделяется, а ✕ нажимает это.",
"cw_tour3_title": "Указатель PS5 тоже работает",
"cw_tour_done": "Понятно",
"cw_tour_label": "Советы",
"cw_tour_next": "Далее",
"cw_tour_skip": "Пропустить",
"cw_tour_step": "{n} из {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "การทำงาน",
"cw_cheats_apply": "ใช้",
"cw_cheats_engine_off": "เอนจินสูตรโกงปิดอยู่ จะเริ่มทำงานเมื่อคุณเปิดสูตรโกง",
"cw_cheats_err_changed": "ไฟล์สูตรโกงเปลี่ยนไป อ่านรายการใหม่แล้ว",
"cw_cheats_err_load": "อ่านสูตรโกงไม่ได้ ({code}) กดรีเฟรชเพื่อลองอีกครั้ง",
"cw_cheats_err_module": "สูตรโกงนี้ต้องใช้ส่วนของเกมที่ยังไม่ได้โหลด ลองอีกครั้งภายหลังในเกม",
"cw_cheats_err_toggle": "สลับสูตรโกงไม่ได้ ({code})",
"cw_cheats_exited": "เกมถูกปิดแล้ว",
"cw_cheats_exited_next": "เริ่มเกมอีกครั้ง แล้วสูตรโกงจะกลับมาที่นี่",
"cw_cheats_how": "✕ หรือ □ เปิดหรือปิดสูตรโกงที่เลือกอยู่",
"cw_cheats_loading": "กำลังโหลดสูตรโกง…",
"cw_cheats_no_game": "ไม่มีเกมที่กำลังทำงาน",
"cw_cheats_no_game_next": "เริ่มเกมก่อน แล้วจึงเปิดเมนูโกง",
"cw_cheats_none": "ไม่มีสูตรโกงสำหรับเกมนี้",
"cw_cheats_none_next": "เพิ่มสูตรโกงสำหรับเกมนี้จากแอป PS5Upload บนพีซีของคุณ",
"cw_cheats_off": "ปิด",
"cw_cheats_on": "เปิด",
"cw_cheats_refresh": "รีเฟรช",
"cw_cheats_switching": "กำลังสลับ…",
"cw_cheats_title": "โกง",
"cw_cheats_truncated": "แสดงสูตรโกงได้ไม่ครบที่นี่ แอป PS5Upload บนพีซีของคุณแสดงได้ทั้งหมด",
"cw_ctl_last": "กดล่าสุด:",
"cw_ctl_logging": "ขณะที่หน้าจอนี้เปิดอยู่ การกดปุ่มจะถูกบันทึกลงล็อกเล็กๆ บนเครื่องนี้เพื่อปรับปรุงการรองรับจอย",
"cw_ctl_not_yet": "ยังไม่ได้รับ",
"cw_ctl_ok": "ใช้ได้",
"cw_ctl_other_key": "ปุ่มอื่น: {key}",
"cw_ctl_picture": "จอยคอนโทรลเลอร์ DualSense",
"cw_ctl_press_each": "กดแต่ละปุ่มหนึ่งครั้งเพื่อดูว่าหน้านี้ได้รับอะไร ○ จะปิดหน้าจอนี้ จึงควรกดเป็นปุ่มสุดท้าย",
"cw_ctl_received": "ได้รับแล้ว",
"cw_ctl_received_job": "ได้รับแล้ว: {job} (ยังไม่ได้ใช้)",
"cw_ctl_system": "PS5 ใช้งานอยู่",
"cw_ctl_title": "การควบคุม",
"cw_ctl_works": "ใช้ได้: {job}",
"cw_dialog_cancel": "ยกเลิก",
"cw_files_bad_name": "ใช้ชื่อที่ไม่มี “/”",
"cw_files_batch_copy": "กำลังคัดลอก {at} จาก {total}…",
"cw_files_batch_delete": "กำลังลบ {at} จาก {total}…",
"cw_files_batch_failed": "ล้มเหลว {n} รายการ",
"cw_files_batch_move": "กำลังย้าย {at} จาก {total}…",
"cw_files_batch_stop": "หยุด",
"cw_files_batch_stopped": "หยุดแล้ว {n} รายการยังไม่เริ่ม",
"cw_files_batch_stopping": "จะหยุดหลังรายการนี้…",
"cw_files_close": "ปิด",
"cw_files_copy_to": "คัดลอกไปที่…",
"cw_files_del_body": "โฟลเดอร์จะถูกลบพร้อมทุกอย่างข้างใน ยกเลิกไม่ได้",
"cw_files_del_list_many": "“{name}” และอีก {more} รายการ",
"cw_files_del_many": "ลบ {n} รายการไหม",
"cw_files_del_one": "ลบ “{name}” ไหม",
"cw_files_delete": "ลบ",
"cw_files_done": "เสร็จแล้ว",
"cw_files_drives": "ไดรฟ์",
"cw_files_empty": "โฟลเดอร์นี้ว่าง",
"cw_files_empty_next": "คัดลอกไฟล์มาที่นี่จากแอป PS5Upload บนพีซีของคุณ หรือสร้างโฟลเดอร์ใหม่",
"cw_files_err_denied": "คอนโซลไม่อนุญาตให้แก้ไขที่นี่",
"cw_files_err_exists": "มีรายการชื่อนี้อยู่แล้ว",
"cw_files_err_into_itself": "ไม่สามารถใส่โฟลเดอร์ไว้ในตัวเองหรือโฟลเดอร์ย่อยของมันได้",
"cw_files_err_load": "เปิดโฟลเดอร์นี้ไม่ได้",
"cw_files_err_missing": "ไม่มีอยู่แล้ว",
"cw_files_err_read": "อ่านไม่ได้",
"cw_files_fixperm": "แก้ไขสิทธิ์",
"cw_files_fixperm_batch": "กำลังแก้ไขสิทธิ์ {at} จาก {total}…",
"cw_files_fixperm_body": "ทำให้ทุกอย่างในโฟลเดอร์นี้ PS5 อ่านและเรียกใช้ได้ (chmod 777) ใช้เมื่อเกมไม่เริ่มหลังคัดลอก",
"cw_files_fixperm_done": "แก้ไขสิทธิ์แล้ว",
"cw_files_free": "ว่าง {free}",
"cw_files_here": "ที่นี่",
"cw_files_info": "ข้อมูล",
"cw_files_info_items": "รายการ",
"cw_files_info_mode": "สิทธิ์",
"cw_files_info_modified": "แก้ไขเมื่อ",
"cw_files_info_size": "ขนาด",
"cw_files_info_type": "ประเภท",
"cw_files_info_where": "ตำแหน่ง",
"cw_files_items": "{n} รายการ",
"cw_files_kind_dir": "โฟลเดอร์",
"cw_files_kind_file": "ไฟล์",
"cw_files_kind_link": "ลิงก์",
"cw_files_more": "แสดงเพิ่ม",
"cw_files_move_to": "ย้ายไปที่…",
"cw_files_name": "ชื่อ",
"cw_files_new_folder": "โฟลเดอร์ใหม่",
"cw_files_no_folders": "ไม่มีโฟลเดอร์ที่นี่",
"cw_files_no_folders_next": "เลือก “ที่นี่” เพื่อใช้โฟลเดอร์นี้",
"cw_files_ok": "ตกลง",
"cw_files_pick_drive": "เลือกไดรฟ์",
"cw_files_rename": "เปลี่ยนชื่อ",
"cw_files_retry": "ลองอีกครั้ง",
"cw_files_selected": "เลือกแล้ว {n}",
"cw_files_some_failed": "ล้มเหลว {n}: {reason}",
"cw_files_tasks": "งานที่กำลังทำ: {n}",
"cw_files_too_large": "ใหญ่เกินกว่าจะแสดงตัวอย่าง",
"cw_files_truncated": "แสดง 1 MiB แรก",
"cw_files_up": "ขึ้น",
"cw_files_view": "ดู",
"cw_help_close": "ปิด",
"cw_help_controls": "การควบคุม",
"cw_help_pointer": "อนาล็อกซ้ายเลื่อนตัวชี้ของ PS5 และ ✕ คลิกสิ่งที่ตัวชี้อยู่",
"cw_help_title": "ปุ่มบนหน้าจอนี้",
"cw_help_unconfirmed": "ยังไม่ได้ยืนยันบน PS5 เครื่องนี้:",
"cw_hint_back": "กลับ",
"cw_hint_fullscreen": "เต็มจอ",
"cw_hint_help": "ความช่วยเหลือ",
"cw_hint_open": "เปิด",
"cw_hint_page": "เลื่อนขึ้น/ลงทีละหน้า",
"cw_hint_refresh": "รีเฟรช",
"cw_hint_switch": "เปิด/ปิด",
"cw_hint_switch_section": "สลับส่วน",
"cw_hint_top": "บนสุด",
"cw_hints_label": "ปุ่มคอนโทรลเลอร์",
"cw_home_cancel_task": "ยกเลิก",
"cw_home_cancel_task_confirm": "ยกเลิกงาน",
"cw_home_cheats": "โกง",
"cw_home_close_game": "ปิดเกม",
"cw_home_confirm_cancel_body": "งานจะหยุดทันทีและย้อนกลับไม่ได้",
"cw_home_confirm_cancel_body_pc": "งานนี้เริ่มจาก PC และจะหยุดบน PC ด้วย",
"cw_home_confirm_cancel_title": "ยกเลิกงานนี้ไหม",
"cw_home_confirm_close_body": "ความคืบหน้าในเกมที่ยังไม่ได้บันทึกจะหายไป",
"cw_home_confirm_close_title": "ปิด {name} ไหม",
"cw_home_err_busy": "คอนโซลไม่ว่าง ลองอีกครั้งในอีกสักครู่",
"cw_home_err_failed": "ไม่สำเร็จ ({code})",
"cw_home_err_gone": "งานนั้นสิ้นสุดไปแล้ว",
"cw_home_err_load_storage": "อ่านไดรฟ์ไม่ได้",
"cw_home_err_load_tasks": "อ่านรายการงานไม่ได้",
"cw_home_err_offline": "คอนโซลไม่ตอบสนอง ลองอีกครั้ง",
"cw_home_free_of": "ว่าง {free} จาก {total}",
"cw_home_keep_task": "ทำงานต่อ",
"cw_home_kind_copy": "คัดลอก",
"cw_home_kind_download": "ดาวน์โหลด",
"cw_home_kind_op": "การจัดการไฟล์",
"cw_home_kind_other": "งาน",
"cw_home_kind_upload": "อัปโหลด",
"cw_home_loading": "กำลังโหลด…",
"cw_home_no_game_next": "เริ่มเกมจากหน้าจอหลักของ PS5 แล้วโกงของเกมนั้นจะแสดงที่นี่",
"cw_home_no_game_plain": "เริ่มเกมจากหน้าจอหลักของ PS5",
"cw_home_no_tasks": "ตอนนี้ไม่มีงาน",
"cw_home_no_tasks_next": "การอัปโหลดจากแอป PS5Upload บนพีซีของคุณจะแสดงที่นี่",
"cw_home_now_running": "กำลังทำงานอยู่",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} จาก {total}",
"cw_home_progress_files": "{done} จาก {total} ไฟล์",
"cw_home_retrying": "จะลองอีกครั้งในไม่ช้า",
"cw_home_state_done": "เสร็จแล้ว",
"cw_home_state_failed": "ล้มเหลว",
"cw_home_state_running": "กำลังทำงาน",
"cw_home_storage": "ที่เก็บข้อมูล",
"cw_home_tasks": "งาน",
"cw_home_tasks_fewer": "แสดงน้อยลง",
"cw_home_tasks_more": "อีก +{n}",
"cw_home_vol_ext": "ที่เก็บข้อมูลเสริม",
"cw_home_vol_internal": "ที่เก็บข้อมูลภายใน",
"cw_home_vol_m2": "ที่เก็บข้อมูล M.2",
"cw_home_vol_readonly": "อ่านอย่างเดียว",
"cw_home_vol_usb": "ไดรฟ์ USB",
"cw_home_vol_usb_ext": "ที่เก็บข้อมูลเสริม USB",
"cw_job_actions": "การทำงานเพิ่มเติม",
"cw_job_back": "ย้อนกลับ",
"cw_job_confirm": "เลือก / เปิด",
"cw_job_fullscreen": "เปิด/ปิดเต็มจอ",
"cw_job_help": "ความช่วยเหลือของหน้าจอนี้",
"cw_job_move": "เลื่อน",
"cw_job_mute": "ปิดเสียงไมโครโฟน",
"cw_job_next_section": "ส่วนถัดไป",
"cw_job_page_down": "หน้าลง",
"cw_job_page_up": "หน้าขึ้น",
"cw_job_pointer": "ตัวชี้ PS5",
"cw_job_prev_section": "ส่วนก่อนหน้า",
"cw_job_ps": "หน้าหลักและเมนูของ PS5",
"cw_job_rail": "รายการส่วน",
"cw_job_refresh": "รีเฟรช",
"cw_job_scroll": "เลื่อนหน้า",
"cw_job_select": "ทำเครื่องหมาย / เปิดปิดโกง",
"cw_job_top": "บนสุดของรายการ",
"cw_nav_files": "ไฟล์",
"cw_nav_home": "หน้าหลัก",
"cw_nav_sections": "ส่วน",
"cw_nav_settings": "การตั้งค่า",
"cw_reload_body": "โหลดหน้านี้ใหม่เพื่อใช้งานต่อ",
"cw_reload_button": "โหลดใหม่",
"cw_reload_title": "ตัวช่วย PS5Upload เริ่มใหม่แล้ว",
"cw_select": "เลือก",
"cw_settings_about": "เกี่ยวกับ",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "คอนทราสต์สูง",
"cw_settings_controls": "การควบคุม",
"cw_settings_controls_note": "ปุ่มแต่ละปุ่มของจอยทำอะไรที่นี่ กดปุ่มเพื่อทดสอบ",
"cw_settings_err_load": "โหลดการตั้งค่าไม่ได้",
"cw_settings_err_save": "บันทึกการตั้งค่าไม่ได้ ลองอีกครั้ง",
"cw_settings_err_tile_add": "เพิ่ม PS5Upload ลงในหน้าจอหลักไม่ได้ ลองอีกครั้ง",
"cw_settings_err_tile_remove": "นำ PS5Upload ออกจากหน้าจอหลักไม่ได้ ลองอีกครั้ง",
"cw_settings_fullscreen": "เต็มจอ",
"cw_settings_fullscreen_note": "ซ่อนแถบของเบราว์เซอร์เพื่อให้หน้าเต็มจอทีวี มีผลเมื่อคุณกดปุ่มครั้งถัดไป",
"cw_settings_lan": "อนุญาตอุปกรณ์อื่นในเครือข่าย",
"cw_settings_lan_allow": "อนุญาต",
"cw_settings_lan_confirm_title": "อนุญาตอุปกรณ์อื่นหรือไม่",
"cw_settings_lan_off_note": "เมื่อปิด อุปกรณ์อื่นจะเข้าถึงไม่ได้ ส่วนเครื่องนี้ยังเข้าถึงได้",
"cw_settings_lan_warning": "ทุกคนในเครือข่ายของคุณจะใช้หน้านี้และจัดการไฟล์ของคุณได้",
"cw_settings_language": "ภาษา",
"cw_settings_language_system": "ค่าเริ่มต้นของระบบ",
"cw_settings_network": "เครือข่าย",
"cw_settings_off": "ปิด",
"cw_settings_on": "เปิด",
"cw_settings_theme": "ธีม",
"cw_settings_tile": "แสดง PS5Upload บนหน้าจอหลัก",
"cw_settings_tips": "แสดงเคล็ดลับอีกครั้ง",
"cw_settings_using": "จอยและเคล็ดลับ",
"cw_settings_version": "เวอร์ชัน {version}",
"cw_status_connecting": "กำลังเชื่อมต่อ…",
"cw_status_offline": "ไม่ได้เชื่อมต่อ",
"cw_task_from_console": "จากคอนโซลนี้",
"cw_task_from_pc": "จาก PC",
"cw_theme_dark": "เข้ม",
"cw_theme_light": "สว่าง",
"cw_theme_oled": "OLED",
"cw_theme_peach": "พีช",
"cw_tour1_cheats": "โกง: เปิดปิดโกงของเกมที่กำลังเล่น",
"cw_tour1_files": "ไฟล์: เรียกดู คัดลอก ย้าย และลบบนไดรฟ์ของ PS5",
"cw_tour1_home": "หน้าหลัก: เกมที่กำลังเล่น งาน และไดรฟ์",
"cw_tour1_settings": "การตั้งค่า: ธีม ภาษา เต็มจอ และเคล็ดลับเหล่านี้",
"cw_tour1_title": "สี่ส่วน ทางด้านซ้าย",
"cw_tour2_circle": "○ ย้อนกลับหนึ่งขั้น",
"cw_tour2_cross": "✕ เลือกสิ่งที่ไฮไลต์อยู่",
"cw_tour2_more": "ทุกอย่างที่เหลือมีปุ่มบนหน้าจอ: ไฮไลต์แล้วกด ✕ ความช่วยเหลือที่มุมซ้ายล่างบอกว่าปุ่มอื่นใดใช้ได้",
"cw_tour2_title": "✕ เลือก ○ ย้อนกลับ",
"cw_tour3_fullscreen": "หลังจากกดปุ่มครั้งแรก หน้านี้จะเต็มจอทีวี ปิดเต็มจอได้ในการตั้งค่า",
"cw_tour3_pointer": "เลื่อนตัวชี้ด้วยอนาล็อกซ้าย: สิ่งที่ตัวชี้อยู่จะถูกไฮไลต์ และ ✕ จะคลิกมัน",
"cw_tour3_title": "ตัวชี้ของ PS5 ก็ใช้ได้",
"cw_tour_done": "เข้าใจแล้ว",
"cw_tour_label": "เคล็ดลับ",
"cw_tour_next": "ถัดไป",
"cw_tour_skip": "ข้าม",
"cw_tour_step": "{n} จาก {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "İşlemler",
"cw_cheats_apply": "Uygula",
"cw_cheats_engine_off": "Hile motoru kapalı. Bir hileyi açtığınızda başlar.",
"cw_cheats_err_changed": "Hile dosyaları değişti. Liste yeniden okundu.",
"cw_cheats_err_load": "Hileler okunamadı ({code}). Yeniden denemek için Yenile'ye basın.",
"cw_cheats_err_module": "Bu hile, oyunun henüz yüklenmemiş bir bölümüne ihtiyaç duyuyor. Oyunda daha sonra tekrar deneyin.",
"cw_cheats_err_toggle": "Hile değiştirilemedi ({code}).",
"cw_cheats_exited": "Oyun kapatıldı.",
"cw_cheats_exited_next": "Yeniden başlatın, hileleri tekrar burada görünür.",
"cw_cheats_how": "✕ veya □ seçili hileyi açar ya da kapatır.",
"cw_cheats_loading": "Hileler yükleniyor…",
"cw_cheats_no_game": "Çalışan oyun yok.",
"cw_cheats_no_game_next": "Bir oyun başlatın, sonra Hileler'i açın.",
"cw_cheats_none": "Bu oyun için hile yok.",
"cw_cheats_none_next": "Bu oyun için hileleri bilgisayarınızdaki PS5Upload uygulamasından ekleyin.",
"cw_cheats_off": "Kapalı",
"cw_cheats_on": "Açık",
"cw_cheats_refresh": "Yenile",
"cw_cheats_switching": "Değiştiriliyor…",
"cw_cheats_title": "Hileler",
"cw_cheats_truncated": "Tüm hileler buraya sığmıyor. Bilgisayarınızdaki PS5Upload uygulaması hepsini gösterir.",
"cw_ctl_last": "Son basılan:",
"cw_ctl_logging": "Bu ekran açıkken, kumanda desteğini iyileştirmek için tuş basışları bu konsoldaki küçük bir günlüğe kaydedilir.",
"cw_ctl_not_yet": "Henüz alınmadı",
"cw_ctl_ok": "Çalışıyor",
"cw_ctl_other_key": "Başka tuş: {key}",
"cw_ctl_picture": "DualSense kumanda",
"cw_ctl_press_each": "Bu sayfanın ne aldığını görmek için her tuşa bir kez basın. ○ bu ekranı kapatır, bu yüzden ona en son basın.",
"cw_ctl_received": "Alındı",
"cw_ctl_received_job": "Alındı: {job} (henüz kullanılmıyor)",
"cw_ctl_system": "PS5 kullanıyor",
"cw_ctl_title": "Kontroller",
"cw_ctl_works": "Çalışıyor: {job}",
"cw_dialog_cancel": "İptal",
"cw_files_bad_name": "“/” içermeyen bir ad kullanın.",
"cw_files_batch_copy": "Kopyalanıyor: {at}/{total}…",
"cw_files_batch_delete": "Siliniyor: {at}/{total}…",
"cw_files_batch_failed": "{n} öğe başarısız oldu.",
"cw_files_batch_move": "Taşınıyor: {at}/{total}…",
"cw_files_batch_stop": "Durdur",
"cw_files_batch_stopped": "Durduruldu. {n} öğe başlatılmadı.",
"cw_files_batch_stopping": "Bu öğeden sonra duracak…",
"cw_files_close": "Kapat",
"cw_files_copy_to": "Şuraya kopyala…",
"cw_files_del_body": "Klasörler içindeki her şeyle birlikte silinir. Bu geri alınamaz.",
"cw_files_del_list_many": "“{name}” ve {more} öğe daha.",
"cw_files_del_many": "{n} öğe silinsin mi?",
"cw_files_del_one": "“{name}” silinsin mi?",
"cw_files_delete": "Sil",
"cw_files_done": "Tamamlandı.",
"cw_files_drives": "Sürücüler",
"cw_files_empty": "Bu klasör boş.",
"cw_files_empty_next": "Bilgisayarınızdaki PS5Upload uygulamasından buraya dosya kopyalayın veya yeni bir klasör oluşturun.",
"cw_files_err_denied": "Konsol burada değişikliğe izin vermiyor.",
"cw_files_err_exists": "Bu adda bir öğe zaten var.",
"cw_files_err_into_itself": "Bir klasör kendi içine veya alt klasörlerinden birine taşınamaz.",
"cw_files_err_load": "Bu klasör açılamadı.",
"cw_files_err_missing": "Artık orada değil.",
"cw_files_err_read": "Okunamadı.",
"cw_files_fixperm": "İzinleri düzelt",
"cw_files_fixperm_batch": "İzinler düzeltiliyor: {at} / {total}…",
"cw_files_fixperm_body": "Bu klasördeki her şeyi PS5 için okunabilir ve çalıştırılabilir yapar (chmod 777). Bir oyun kopyalandıktan sonra başlamazsa kullanın.",
"cw_files_fixperm_done": "İzinler düzeltildi.",
"cw_files_free": "{free} boş",
"cw_files_here": "Buraya",
"cw_files_info": "Bilgi",
"cw_files_info_items": "Öğeler",
"cw_files_info_mode": "İzinler",
"cw_files_info_modified": "Değiştirilme",
"cw_files_info_size": "Boyut",
"cw_files_info_type": "Tür",
"cw_files_info_where": "Konum",
"cw_files_items": "{n} öğe",
"cw_files_kind_dir": "Klasör",
"cw_files_kind_file": "Dosya",
"cw_files_kind_link": "Bağlantı",
"cw_files_more": "Daha fazla göster",
"cw_files_move_to": "Şuraya taşı…",
"cw_files_name": "Ad",
"cw_files_new_folder": "Yeni klasör",
"cw_files_no_folders": "Burada klasör yok.",
"cw_files_no_folders_next": "Bu klasörü kullanmak için “Buraya” seçeneğini seçin.",
"cw_files_ok": "Tamam",
"cw_files_pick_drive": "Bir sürücü seçin",
"cw_files_rename": "Yeniden adlandır",
"cw_files_retry": "Tekrar dene",
"cw_files_selected": "{n} seçili",
"cw_files_some_failed": "{n} başarısız: {reason}",
"cw_files_tasks": "Çalışan görevler: {n}",
"cw_files_too_large": "Önizleme için çok büyük.",
"cw_files_truncated": "İlk 1 MiB gösteriliyor.",
"cw_files_up": "Yukarı",
"cw_files_view": "Görüntüle",
"cw_help_close": "Kapat",
"cw_help_controls": "Kontroller",
"cw_help_pointer": "Sol çubuk PS5 imlecini hareket ettirir; ✕ imlecin üzerindekine tıklar.",
"cw_help_title": "Bu ekrandaki tuşlar",
"cw_help_unconfirmed": "Bu PS5'te henüz doğrulanmadı:",
"cw_hint_back": "Geri",
"cw_hint_fullscreen": "Tam ekran",
"cw_hint_help": "Yardım",
"cw_hint_open": "Aç",
"cw_hint_page": "Sayfa yukarı/aşağı",
"cw_hint_refresh": "Yenile",
"cw_hint_switch": "Aç/kapat",
"cw_hint_switch_section": "Bölüm değiştir",
"cw_hint_top": "En üst",
"cw_hints_label": "Kumanda düğmeleri",
"cw_home_cancel_task": "İptal et",
"cw_home_cancel_task_confirm": "Görevi iptal et",
"cw_home_cheats": "Hileler",
"cw_home_close_game": "Oyunu kapat",
"cw_home_confirm_cancel_body": "Hemen durur. Bu geri alınamaz.",
"cw_home_confirm_cancel_body_pc": "Bu görevi bir PC başlattı. PC'de de durur.",
"cw_home_confirm_cancel_title": "Bu görev iptal edilsin mi?",
"cw_home_confirm_close_body": "Oyunda kaydedilmemiş ilerleme kaybolur.",
"cw_home_confirm_close_title": "{name} kapatılsın mı?",
"cw_home_err_busy": "Konsol meşgul. Birazdan tekrar dene.",
"cw_home_err_failed": "Bu işe yaramadı ({code}).",
"cw_home_err_gone": "Bu görev zaten bitti.",
"cw_home_err_load_storage": "Sürücüler okunamadı.",
"cw_home_err_load_tasks": "Görev listesi okunamadı.",
"cw_home_err_offline": "Konsol yanıt vermedi. Tekrar dene.",
"cw_home_free_of": "{total} alanın {free} kadarı boş",
"cw_home_keep_task": "Devam etsin",
"cw_home_kind_copy": "Kopyalama",
"cw_home_kind_download": "İndirme",
"cw_home_kind_op": "Dosya işlemi",
"cw_home_kind_other": "Görev",
"cw_home_kind_upload": "Yükleme",
"cw_home_loading": "Yükleniyor…",
"cw_home_no_game_next": "PS5 ana ekranından bir oyun başlatın; hileleri burada görünür.",
"cw_home_no_game_plain": "PS5 ana ekranından bir oyun başlatın.",
"cw_home_no_tasks": "Şu anda görev yok.",
"cw_home_no_tasks_next": "Bilgisayarınızdaki PS5Upload uygulamasından yapılan yüklemeler burada görünür.",
"cw_home_now_running": "Şu anda çalışıyor",
"cw_home_percent": "%{n}",
"cw_home_progress_bytes": "{done} / {total}",
"cw_home_progress_files": "{done} / {total} dosya",
"cw_home_retrying": "Birazdan yeniden denenecek.",
"cw_home_state_done": "Bitti",
"cw_home_state_failed": "Başarısız",
"cw_home_state_running": "Çalışıyor",
"cw_home_storage": "Depolama",
"cw_home_tasks": "Görevler",
"cw_home_tasks_fewer": "Daha az göster",
"cw_home_tasks_more": "+{n} tane daha",
"cw_home_vol_ext": "Genişletilmiş depolama",
"cw_home_vol_internal": "Dahili depolama",
"cw_home_vol_m2": "M.2 depolama",
"cw_home_vol_readonly": "Salt okunur",
"cw_home_vol_usb": "USB sürücü",
"cw_home_vol_usb_ext": "USB genişletilmiş depolama",
"cw_job_actions": "Diğer işlemler",
"cw_job_back": "Geri",
"cw_job_confirm": "Seç / aç",
"cw_job_fullscreen": "Tam ekran aç/kapat",
"cw_job_help": "Bu ekranın yardımı",
"cw_job_move": "Taşı",
"cw_job_mute": "Mikrofonu sessize al",
"cw_job_next_section": "Sonraki bölüm",
"cw_job_page_down": "Sayfa aşağı",
"cw_job_page_up": "Sayfa yukarı",
"cw_job_pointer": "PS5 imleci",
"cw_job_prev_section": "Önceki bölüm",
"cw_job_ps": "PS5 ana ekranı ve menüsü",
"cw_job_rail": "Bölüm listesi",
"cw_job_refresh": "Yenile",
"cw_job_scroll": "Kaydır",
"cw_job_select": "Öğe işaretle / hile aç-kapat",
"cw_job_top": "Listenin başı",
"cw_nav_files": "Dosyalar",
"cw_nav_home": "Ana sayfa",
"cw_nav_sections": "Bölümler",
"cw_nav_settings": "Ayarlar",
"cw_reload_body": "Devam etmek için bu sayfayı yeniden yükleyin.",
"cw_reload_button": "Yeniden yükle",
"cw_reload_title": "PS5Upload yardımcısı yeniden başladı",
"cw_select": "Seç",
"cw_settings_about": "Hakkında",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Yüksek kontrast",
"cw_settings_controls": "Kontroller",
"cw_settings_controls_note": "Her kumanda tuşunun burada ne yaptığı. Denemek için bir tuşa basın.",
"cw_settings_err_load": "Ayarlar yüklenemedi.",
"cw_settings_err_save": "Ayar kaydedilemedi. Tekrar deneyin.",
"cw_settings_err_tile_add": "PS5Upload ana ekrana eklenemedi. Tekrar deneyin.",
"cw_settings_err_tile_remove": "PS5Upload ana ekrandan kaldırılamadı. Tekrar deneyin.",
"cw_settings_fullscreen": "Tam ekran",
"cw_settings_fullscreen_note": "Sayfanın tüm TV'yi doldurması için tarayıcı çubuklarını gizler. Bir sonraki tuşa basışınızda etkinleşir.",
"cw_settings_lan": "Ağdaki diğer cihazlara izin ver",
"cw_settings_lan_allow": "İzin ver",
"cw_settings_lan_confirm_title": "Diğer cihazlara izin verilsin mi?",
"cw_settings_lan_off_note": "Kapatırsanız diğer cihazlar erişimi kaybeder; bu konsol erişimi korur.",
"cw_settings_lan_warning": "Ağınızdaki herkes bu sayfayı kullanabilir ve dosyalarınızı yönetebilir.",
"cw_settings_language": "Dil",
"cw_settings_language_system": "Sistem varsayılanı",
"cw_settings_network": "Ağ",
"cw_settings_off": "Kapalı",
"cw_settings_on": "Açık",
"cw_settings_theme": "Tema",
"cw_settings_tile": "PS5Upload'u ana ekranda göster",
"cw_settings_tips": "İpuçlarını yeniden göster",
"cw_settings_using": "Kumanda ve ipuçları",
"cw_settings_version": "Sürüm {version}",
"cw_status_connecting": "Bağlanıyor…",
"cw_status_offline": "Bağlı değil",
"cw_task_from_console": "Bu konsoldan",
"cw_task_from_pc": "Bir PC'den",
"cw_theme_dark": "Koyu",
"cw_theme_light": "Açık",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Şeftali",
"cw_tour1_cheats": "Hileler: çalışan oyunun hilelerini aç ve kapat.",
"cw_tour1_files": "Dosyalar: PS5 sürücülerinde göz at, kopyala, taşı ve sil.",
"cw_tour1_home": "Ana sayfa: çalışan oyun, görevler ve sürücüler.",
"cw_tour1_settings": "Ayarlar: tema, dil, tam ekran ve bu ipuçları.",
"cw_tour1_title": "Solda dört bölüm",
"cw_tour2_circle": "○ bir adım geri gider.",
"cw_tour2_cross": "✕ vurgulananı seçer.",
"cw_tour2_more": "Geri kalan her şeyin ekranda bir düğmesi var: onu vurgulayıp ✕'e basın. Sol alttaki Yardım, başka hangi tuşların çalıştığını gösterir.",
"cw_tour2_title": "✕ seçer, ○ geri gider",
"cw_tour3_fullscreen": "İlk tuş basışınızdan sonra sayfa tüm TV'yi kaplar. Tam ekranı Ayarlar'dan kapatabilirsiniz.",
"cw_tour3_pointer": "İmleci sol çubukla hareket ettirin: üzerindeki vurgulanır ve ✕ ona tıklar.",
"cw_tour3_title": "PS5 imleci de çalışır",
"cw_tour_done": "Anladım",
"cw_tour_label": "İpuçları",
"cw_tour_next": "İleri",
"cw_tour_skip": "Atla",
"cw_tour_step": "{n} / {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "Thao tác",
"cw_cheats_apply": "Áp dụng",
"cw_cheats_engine_off": "Bộ máy cheat đang tắt. Nó sẽ khởi động khi bạn bật một cheat.",
"cw_cheats_err_changed": "Tệp cheat đã thay đổi. Danh sách đã được đọc lại.",
"cw_cheats_err_load": "Không đọc được cheat ({code}). Nhấn Làm mới để thử lại.",
"cw_cheats_err_module": "Cheat này cần một phần của trò chơi chưa được tải. Hãy thử lại sau trong trò chơi.",
"cw_cheats_err_toggle": "Không chuyển được cheat ({code}).",
"cw_cheats_exited": "Trò chơi đã đóng.",
"cw_cheats_exited_next": "Mở lại trò chơi, cheat của nó sẽ hiện lại ở đây.",
"cw_cheats_how": "✕ hoặc □ bật hoặc tắt cheat đang chọn.",
"cw_cheats_loading": "Đang tải cheat…",
"cw_cheats_no_game": "Không có trò chơi nào đang chạy.",
"cw_cheats_no_game_next": "Hãy mở một trò chơi, rồi mở Cheat.",
"cw_cheats_none": "Không có cheat cho trò chơi này.",
"cw_cheats_none_next": "Thêm cheat cho trò chơi này từ ứng dụng PS5Upload trên PC của bạn.",
"cw_cheats_off": "Tắt",
"cw_cheats_on": "Bật",
"cw_cheats_refresh": "Làm mới",
"cw_cheats_switching": "Đang chuyển…",
"cw_cheats_title": "Cheat",
"cw_cheats_truncated": "Không thể hiển thị hết cheat ở đây. Ứng dụng PS5Upload trên PC hiển thị tất cả.",
"cw_ctl_last": "Vừa nhấn:",
"cw_ctl_logging": "Khi màn hình này mở, các lần nhấn nút được lưu vào một nhật ký nhỏ trên máy này để cải thiện hỗ trợ tay cầm.",
"cw_ctl_not_yet": "Chưa nhận được",
"cw_ctl_ok": "Hoạt động",
"cw_ctl_other_key": "Phím khác: {key}",
"cw_ctl_picture": "Tay cầm DualSense",
"cw_ctl_press_each": "Nhấn mỗi nút một lần để xem trang này nhận được gì. ○ sẽ đóng màn hình này, nên hãy nhấn nó cuối cùng.",
"cw_ctl_received": "Đã nhận",
"cw_ctl_received_job": "Đã nhận: {job} (chưa dùng)",
"cw_ctl_system": "PS5 sử dụng",
"cw_ctl_title": "Điều khiển",
"cw_ctl_works": "Hoạt động: {job}",
"cw_dialog_cancel": "Hủy",
"cw_files_bad_name": "Dùng tên không có “/”.",
"cw_files_batch_copy": "Đang sao chép {at}/{total}…",
"cw_files_batch_delete": "Đang xóa {at}/{total}…",
"cw_files_batch_failed": "{n} mục thất bại.",
"cw_files_batch_move": "Đang di chuyển {at}/{total}…",
"cw_files_batch_stop": "Dừng",
"cw_files_batch_stopped": "Đã dừng. {n} mục chưa bắt đầu.",
"cw_files_batch_stopping": "Sẽ dừng sau mục này…",
"cw_files_close": "Đóng",
"cw_files_copy_to": "Sao chép tới…",
"cw_files_del_body": "Thư mục bị xóa cùng toàn bộ nội dung. Không thể hoàn tác.",
"cw_files_del_list_many": "“{name}” và {more} mục khác.",
"cw_files_del_many": "Xóa {n} mục?",
"cw_files_del_one": "Xóa “{name}”?",
"cw_files_delete": "Xóa",
"cw_files_done": "Xong.",
"cw_files_drives": "Ổ đĩa",
"cw_files_empty": "Thư mục này trống.",
"cw_files_empty_next": "Sao chép tệp vào đây từ ứng dụng PS5Upload trên PC, hoặc tạo thư mục mới.",
"cw_files_err_denied": "Máy không cho phép thay đổi ở đây.",
"cw_files_err_exists": "Đã có mục trùng tên ở đó.",
"cw_files_err_into_itself": "Không thể đặt thư mục vào chính nó hoặc thư mục con của nó.",
"cw_files_err_load": "Không mở được thư mục này.",
"cw_files_err_missing": "Mục này không còn nữa.",
"cw_files_err_read": "Không đọc được.",
"cw_files_fixperm": "Sửa quyền",
"cw_files_fixperm_batch": "Đang sửa quyền {at}/{total}…",
"cw_files_fixperm_body": "Làm cho mọi thứ trong thư mục này PS5 có thể đọc và chạy được (chmod 777). Dùng khi game không khởi động sau khi sao chép.",
"cw_files_fixperm_done": "Đã sửa quyền.",
"cw_files_free": "Còn trống {free}",
"cw_files_here": "Tại đây",
"cw_files_info": "Thông tin",
"cw_files_info_items": "Số mục",
"cw_files_info_mode": "Quyền",
"cw_files_info_modified": "Sửa đổi",
"cw_files_info_size": "Kích thước",
"cw_files_info_type": "Loại",
"cw_files_info_where": "Vị trí",
"cw_files_items": "{n} mục",
"cw_files_kind_dir": "Thư mục",
"cw_files_kind_file": "Tệp",
"cw_files_kind_link": "Liên kết",
"cw_files_more": "Hiện thêm",
"cw_files_move_to": "Di chuyển tới…",
"cw_files_name": "Tên",
"cw_files_new_folder": "Thư mục mới",
"cw_files_no_folders": "Không có thư mục nào ở đây.",
"cw_files_no_folders_next": "Chọn “Tại đây” để dùng thư mục này.",
"cw_files_ok": "OK",
"cw_files_pick_drive": "Chọn ổ đĩa",
"cw_files_rename": "Đổi tên",
"cw_files_retry": "Thử lại",
"cw_files_selected": "Đã chọn {n}",
"cw_files_some_failed": "{n} thất bại: {reason}",
"cw_files_tasks": "Tác vụ đang chạy: {n}",
"cw_files_too_large": "Quá lớn để xem trước.",
"cw_files_truncated": "Đang hiện 1 MiB đầu tiên.",
"cw_files_up": "Lên",
"cw_files_view": "Xem",
"cw_help_close": "Đóng",
"cw_help_controls": "Điều khiển",
"cw_help_pointer": "Cần trái di chuyển con trỏ PS5; ✕ nhấp vào thứ nó đang chỉ.",
"cw_help_title": "Các nút trên màn hình này",
"cw_help_unconfirmed": "Chưa xác nhận trên PS5 này:",
"cw_hint_back": "Quay lại",
"cw_hint_fullscreen": "Toàn màn hình",
"cw_hint_help": "Trợ giúp",
"cw_hint_open": "Mở",
"cw_hint_page": "Lên/xuống một trang",
"cw_hint_refresh": "Làm mới",
"cw_hint_switch": "Bật/tắt",
"cw_hint_switch_section": "Chuyển mục",
"cw_hint_top": "Lên đầu",
"cw_hints_label": "Nút tay cầm",
"cw_home_cancel_task": "Hủy",
"cw_home_cancel_task_confirm": "Hủy tác vụ",
"cw_home_cheats": "Cheat",
"cw_home_close_game": "Đóng game",
"cw_home_confirm_cancel_body": "Tác vụ dừng ngay. Không thể hoàn tác.",
"cw_home_confirm_cancel_body_pc": "Một PC đã bắt đầu tác vụ này. Tác vụ cũng dừng trên PC.",
"cw_home_confirm_cancel_title": "Hủy tác vụ này?",
"cw_home_confirm_close_body": "Tiến trình chưa lưu trong game sẽ mất.",
"cw_home_confirm_close_title": "Đóng {name}?",
"cw_home_err_busy": "Máy đang bận. Hãy thử lại sau giây lát.",
"cw_home_err_failed": "Không thành công ({code}).",
"cw_home_err_gone": "Tác vụ đó đã kết thúc.",
"cw_home_err_load_storage": "Không đọc được các ổ đĩa.",
"cw_home_err_load_tasks": "Không đọc được danh sách tác vụ.",
"cw_home_err_offline": "Máy không phản hồi. Hãy thử lại.",
"cw_home_free_of": "Còn trống {free} / {total}",
"cw_home_keep_task": "Tiếp tục",
"cw_home_kind_copy": "Sao chép",
"cw_home_kind_download": "Tải xuống",
"cw_home_kind_op": "Thao tác tệp",
"cw_home_kind_other": "Tác vụ",
"cw_home_kind_upload": "Tải lên",
"cw_home_loading": "Đang tải…",
"cw_home_no_game_next": "Hãy mở một trò chơi từ màn hình chính PS5; cheat của nó sẽ hiện ở đây.",
"cw_home_no_game_plain": "Hãy mở một trò chơi từ màn hình chính PS5.",
"cw_home_no_tasks": "Hiện không có tác vụ nào.",
"cw_home_no_tasks_next": "Các lượt tải lên từ ứng dụng PS5Upload trên PC của bạn sẽ hiện ở đây.",
"cw_home_now_running": "Đang chạy",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} / {total}",
"cw_home_progress_files": "{done} / {total} tệp",
"cw_home_retrying": "Sẽ thử lại ngay.",
"cw_home_state_done": "Xong",
"cw_home_state_failed": "Thất bại",
"cw_home_state_running": "Đang chạy",
"cw_home_storage": "Bộ nhớ",
"cw_home_tasks": "Tác vụ",
"cw_home_tasks_fewer": "Thu gọn",
"cw_home_tasks_more": "+{n} nữa",
"cw_home_vol_ext": "Bộ nhớ mở rộng",
"cw_home_vol_internal": "Bộ nhớ trong",
"cw_home_vol_m2": "Bộ nhớ M.2",
"cw_home_vol_readonly": "Chỉ đọc",
"cw_home_vol_usb": "Ổ USB",
"cw_home_vol_usb_ext": "Bộ nhớ mở rộng USB",
"cw_job_actions": "Thao tác khác",
"cw_job_back": "Quay lại",
"cw_job_confirm": "Chọn / mở",
"cw_job_fullscreen": "Bật/tắt toàn màn hình",
"cw_job_help": "Trợ giúp cho màn hình này",
"cw_job_move": "Di chuyển",
"cw_job_mute": "Tắt micrô",
"cw_job_next_section": "Mục sau",
"cw_job_page_down": "Xuống một trang",
"cw_job_page_up": "Lên một trang",
"cw_job_pointer": "Con trỏ PS5",
"cw_job_prev_section": "Mục trước",
"cw_job_ps": "Trang chủ và menu PS5",
"cw_job_rail": "Danh sách mục",
"cw_job_refresh": "Làm mới",
"cw_job_scroll": "Cuộn",
"cw_job_select": "Đánh dấu mục / bật tắt cheat",
"cw_job_top": "Đầu danh sách",
"cw_nav_files": "Tệp",
"cw_nav_home": "Trang chủ",
"cw_nav_sections": "Mục",
"cw_nav_settings": "Cài đặt",
"cw_reload_body": "Tải lại trang này để tiếp tục.",
"cw_reload_button": "Tải lại",
"cw_reload_title": "Trình trợ giúp PS5Upload đã khởi động lại",
"cw_select": "Chọn",
"cw_settings_about": "Giới thiệu",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "Tương phản cao",
"cw_settings_controls": "Điều khiển",
"cw_settings_controls_note": "Mỗi nút tay cầm làm gì ở đây. Nhấn một nút để thử.",
"cw_settings_err_load": "Không thể tải cài đặt.",
"cw_settings_err_save": "Không thể lưu cài đặt. Hãy thử lại.",
"cw_settings_err_tile_add": "Không thể thêm PS5Upload vào màn hình chính. Hãy thử lại.",
"cw_settings_err_tile_remove": "Không thể gỡ PS5Upload khỏi màn hình chính. Hãy thử lại.",
"cw_settings_fullscreen": "Toàn màn hình",
"cw_settings_fullscreen_note": "Ẩn các thanh của trình duyệt để trang lấp đầy TV. Có hiệu lực ở lần bấm nút tiếp theo.",
"cw_settings_lan": "Cho phép thiết bị khác trong mạng",
"cw_settings_lan_allow": "Cho phép",
"cw_settings_lan_confirm_title": "Cho phép thiết bị khác?",
"cw_settings_lan_off_note": "Tắt mục này thì các thiết bị khác mất quyền truy cập; máy console này vẫn giữ.",
"cw_settings_lan_warning": "Khi đó bất kỳ ai trong mạng của bạn đều có thể dùng trang này và quản lý tệp của bạn.",
"cw_settings_language": "Ngôn ngữ",
"cw_settings_language_system": "Mặc định hệ thống",
"cw_settings_network": "Mạng",
"cw_settings_off": "Tắt",
"cw_settings_on": "Bật",
"cw_settings_theme": "Giao diện",
"cw_settings_tile": "Hiện PS5Upload trên màn hình chính",
"cw_settings_tips": "Hiện lại các mẹo",
"cw_settings_using": "Tay cầm và mẹo",
"cw_settings_version": "Phiên bản {version}",
"cw_status_connecting": "Đang kết nối…",
"cw_status_offline": "Chưa kết nối",
"cw_task_from_console": "Từ máy này",
"cw_task_from_pc": "Từ PC",
"cw_theme_dark": "Tối",
"cw_theme_light": "Sáng",
"cw_theme_oled": "OLED",
"cw_theme_peach": "Đào",
"cw_tour1_cheats": "Cheat: bật tắt cheat cho game đang chạy.",
"cw_tour1_files": "Tệp: duyệt, sao chép, di chuyển và xóa trên ổ đĩa của PS5.",
"cw_tour1_home": "Trang chủ: game đang chạy, tác vụ và ổ đĩa.",
"cw_tour1_settings": "Cài đặt: giao diện, ngôn ngữ, toàn màn hình và các mẹo này.",
"cw_tour1_title": "Bốn mục, ở bên trái",
"cw_tour2_circle": "○ quay lại một bước.",
"cw_tour2_cross": "✕ chọn mục đang được tô sáng.",
"cw_tour2_more": "Mọi thứ khác đều có nút trên màn hình: tô sáng nó rồi nhấn ✕. Trợ giúp ở góc dưới bên trái cho biết các nút nào khác hoạt động.",
"cw_tour2_title": "✕ để chọn, ○ để quay lại",
"cw_tour3_fullscreen": "Trang sẽ phủ kín TV sau lần nhấn đầu tiên. Bạn có thể tắt toàn màn hình trong Cài đặt.",
"cw_tour3_pointer": "Di chuyển con trỏ bằng cần trái: thứ nó chỉ vào được tô sáng, và ✕ sẽ nhấp vào đó.",
"cw_tour3_title": "Con trỏ PS5 cũng dùng được",
"cw_tour_done": "Đã hiểu",
"cw_tour_label": "Mẹo",
"cw_tour_next": "Tiếp",
"cw_tour_skip": "Bỏ qua",
"cw_tour_step": "{n} / {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "操作",
"cw_cheats_apply": "应用",
"cw_cheats_engine_off": "金手指引擎已关闭。开启任一金手指时会自动启动。",
"cw_cheats_err_changed": "金手指文件已更改,已重新读取列表。",
"cw_cheats_err_load": "无法读取金手指({code})。请按刷新重试。",
"cw_cheats_err_module": "此金手指需要游戏中尚未加载的部分。请在游戏中稍后再试。",
"cw_cheats_err_toggle": "无法切换金手指({code})。",
"cw_cheats_exited": "游戏已关闭。",
"cw_cheats_exited_next": "再次启动游戏,它的金手指会重新显示在这里。",
"cw_cheats_how": "按 ✕ 或 □ 开启或关闭选中的金手指。",
"cw_cheats_loading": "正在加载金手指…",
"cw_cheats_no_game": "没有正在运行的游戏。",
"cw_cheats_no_game_next": "请先启动游戏,再打开金手指。",
"cw_cheats_none": "此游戏没有金手指。",
"cw_cheats_none_next": "请在电脑上的 PS5Upload 应用中为此游戏添加金手指。",
"cw_cheats_off": "关",
"cw_cheats_on": "开",
"cw_cheats_refresh": "刷新",
"cw_cheats_switching": "正在切换…",
"cw_cheats_title": "金手指",
"cw_cheats_truncated": "此处无法显示全部金手指。电脑上的 PS5Upload 应用可显示全部。",
"cw_ctl_last": "最后按下:",
"cw_ctl_logging": "此屏幕打开期间,按键会记录到这台主机上的一个小日志中,用于改进手柄支持。",
"cw_ctl_not_yet": "尚未收到",
"cw_ctl_ok": "可用",
"cw_ctl_other_key": "其他按键:{key}",
"cw_ctl_picture": "DualSense 手柄",
"cw_ctl_press_each": "每个按键按一次,即可看到此页面收到了什么。○ 会关闭此屏幕,请最后按。",
"cw_ctl_received": "已收到",
"cw_ctl_received_job": "已收到:{job}(尚未使用)",
"cw_ctl_system": "由 PS5 使用",
"cw_ctl_title": "按键说明",
"cw_ctl_works": "可用:{job}",
"cw_dialog_cancel": "取消",
"cw_files_bad_name": "名称中不能包含“/”。",
"cw_files_batch_copy": "正在复制 {at}/{total}…",
"cw_files_batch_delete": "正在删除 {at}/{total}…",
"cw_files_batch_failed": "{n} 项失败。",
"cw_files_batch_move": "正在移动 {at}/{total}…",
"cw_files_batch_stop": "停止",
"cw_files_batch_stopped": "已停止。{n} 项未开始。",
"cw_files_batch_stopping": "将在此项之后停止…",
"cw_files_close": "关闭",
"cw_files_copy_to": "复制到…",
"cw_files_del_body": "文件夹会连同其中的所有内容一起删除,且无法撤销。",
"cw_files_del_list_many": "“{name}”等 {more} 项。",
"cw_files_del_many": "删除 {n} 项?",
"cw_files_del_one": "删除“{name}”?",
"cw_files_delete": "删除",
"cw_files_done": "完成。",
"cw_files_drives": "驱动器",
"cw_files_empty": "此文件夹为空。",
"cw_files_empty_next": "从电脑上的 PS5Upload 应用把文件复制到这里,或新建文件夹。",
"cw_files_err_denied": "主机不允许在此处修改。",
"cw_files_err_exists": "已存在同名项目。",
"cw_files_err_into_itself": "不能把文件夹放进它自身或它的子文件夹。",
"cw_files_err_load": "无法打开此文件夹。",
"cw_files_err_missing": "它已不存在。",
"cw_files_err_read": "无法读取。",
"cw_files_fixperm": "修复权限",
"cw_files_fixperm_batch": "正在修复权限 {at}/{total}…",
"cw_files_fixperm_body": "让此文件夹中的所有内容可被 PS5 读取和运行(chmod 777)。复制后游戏无法启动时使用。",
"cw_files_fixperm_done": "权限已修复。",
"cw_files_free": "可用 {free}",
"cw_files_here": "这里",
"cw_files_info": "信息",
"cw_files_info_items": "项目数",
"cw_files_info_mode": "权限",
"cw_files_info_modified": "修改时间",
"cw_files_info_size": "大小",
"cw_files_info_type": "类型",
"cw_files_info_where": "位置",
"cw_files_items": "{n} 项",
"cw_files_kind_dir": "文件夹",
"cw_files_kind_file": "文件",
"cw_files_kind_link": "链接",
"cw_files_more": "显示更多",
"cw_files_move_to": "移动到…",
"cw_files_name": "名称",
"cw_files_new_folder": "新建文件夹",
"cw_files_no_folders": "这里没有文件夹。",
"cw_files_no_folders_next": "选择“这里”即可使用此文件夹。",
"cw_files_ok": "确定",
"cw_files_pick_drive": "选择驱动器",
"cw_files_rename": "重命名",
"cw_files_retry": "重试",
"cw_files_selected": "已选 {n} 项",
"cw_files_some_failed": "{n} 项失败:{reason}",
"cw_files_tasks": "运行中的任务:{n}",
"cw_files_too_large": "文件太大,无法预览。",
"cw_files_truncated": "仅显示前 1 MiB。",
"cw_files_up": "上一级",
"cw_files_view": "查看",
"cw_help_close": "关闭",
"cw_help_controls": "按键说明",
"cw_help_pointer": "左摇杆移动 PS5 指针;✕ 点击指针所指之处。",
"cw_help_title": "此屏幕的按键",
"cw_help_unconfirmed": "尚未在这台 PS5 上确认:",
"cw_hint_back": "返回",
"cw_hint_fullscreen": "全屏",
"cw_hint_help": "帮助",
"cw_hint_open": "打开",
"cw_hint_page": "上一页/下一页",
"cw_hint_refresh": "刷新",
"cw_hint_switch": "开/关",
"cw_hint_switch_section": "切换分区",
"cw_hint_top": "顶部",
"cw_hints_label": "手柄按键",
"cw_home_cancel_task": "取消",
"cw_home_cancel_task_confirm": "取消任务",
"cw_home_cheats": "金手指",
"cw_home_close_game": "关闭游戏",
"cw_home_confirm_cancel_body": "任务会立即停止,且无法撤销。",
"cw_home_confirm_cancel_body_pc": "此任务由电脑发起,电脑端也会停止。",
"cw_home_confirm_cancel_title": "取消此任务?",
"cw_home_confirm_close_body": "游戏中未保存的进度将丢失。",
"cw_home_confirm_close_title": "关闭 {name}?",
"cw_home_err_busy": "主机正忙,请稍后重试。",
"cw_home_err_failed": "操作未成功({code})。",
"cw_home_err_gone": "该任务已经结束。",
"cw_home_err_load_storage": "无法读取驱动器。",
"cw_home_err_load_tasks": "无法读取任务列表。",
"cw_home_err_offline": "主机没有响应,请重试。",
"cw_home_free_of": "可用 {free},共 {total}",
"cw_home_keep_task": "继续运行",
"cw_home_kind_copy": "复制",
"cw_home_kind_download": "下载",
"cw_home_kind_op": "文件操作",
"cw_home_kind_other": "任务",
"cw_home_kind_upload": "上传",
"cw_home_loading": "正在加载…",
"cw_home_no_game_next": "在 PS5 主屏幕启动一款游戏,它的金手指会显示在这里。",
"cw_home_no_game_plain": "在 PS5 主屏幕启动一款游戏。",
"cw_home_no_tasks": "当前没有任务。",
"cw_home_no_tasks_next": "从电脑上的 PS5Upload 应用上传的内容会显示在这里。",
"cw_home_now_running": "正在运行",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} / {total}",
"cw_home_progress_files": "{done} / {total} 个文件",
"cw_home_retrying": "稍后会自动重试。",
"cw_home_state_done": "已完成",
"cw_home_state_failed": "失败",
"cw_home_state_running": "进行中",
"cw_home_storage": "存储",
"cw_home_tasks": "任务",
"cw_home_tasks_fewer": "收起",
"cw_home_tasks_more": "另外 {n} 项",
"cw_home_vol_ext": "扩展存储",
"cw_home_vol_internal": "内置存储",
"cw_home_vol_m2": "M.2 存储",
"cw_home_vol_readonly": "只读",
"cw_home_vol_usb": "USB 驱动器",
"cw_home_vol_usb_ext": "USB 扩展存储",
"cw_job_actions": "更多操作",
"cw_job_back": "返回",
"cw_job_confirm": "选择 / 打开",
"cw_job_fullscreen": "全屏开/关",
"cw_job_help": "此屏幕的帮助",
"cw_job_move": "移动",
"cw_job_mute": "麦克风静音",
"cw_job_next_section": "下一个分区",
"cw_job_page_down": "下一页",
"cw_job_page_up": "上一页",
"cw_job_pointer": "PS5 指针",
"cw_job_prev_section": "上一个分区",
"cw_job_ps": "PS5 主页和菜单",
"cw_job_rail": "分区列表",
"cw_job_refresh": "刷新",
"cw_job_scroll": "滚动",
"cw_job_select": "选择项目 / 开关金手指",
"cw_job_top": "列表顶部",
"cw_nav_files": "文件",
"cw_nav_home": "主页",
"cw_nav_sections": "分区",
"cw_nav_settings": "设置",
"cw_reload_body": "重新加载此页面以继续。",
"cw_reload_button": "重新加载",
"cw_reload_title": "PS5Upload 助手已重启",
"cw_select": "选择",
"cw_settings_about": "关于",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "高对比度",
"cw_settings_controls": "按键说明",
"cw_settings_controls_note": "各手柄按键在这里的作用。按下按键即可测试。",
"cw_settings_err_load": "无法加载设置。",
"cw_settings_err_save": "无法保存设置,请重试。",
"cw_settings_err_tile_add": "无法将 PS5Upload 添加到主屏幕,请重试。",
"cw_settings_err_tile_remove": "无法从主屏幕移除 PS5Upload,请重试。",
"cw_settings_fullscreen": "全屏",
"cw_settings_fullscreen_note": "隐藏浏览器的工具栏,让页面占满电视。在你下次按键时生效。",
"cw_settings_lan": "允许网络中的其他设备",
"cw_settings_lan_allow": "允许",
"cw_settings_lan_confirm_title": "允许其他设备?",
"cw_settings_lan_off_note": "关闭后其他设备将失去访问权限;这台主机仍可访问。",
"cw_settings_lan_warning": "这样网络中的任何人都可以使用此页面并管理你的文件。",
"cw_settings_language": "语言",
"cw_settings_language_system": "跟随系统",
"cw_settings_network": "网络",
"cw_settings_off": "关",
"cw_settings_on": "开",
"cw_settings_theme": "主题",
"cw_settings_tile": "在主屏幕显示 PS5Upload",
"cw_settings_tips": "再次显示提示",
"cw_settings_using": "手柄与提示",
"cw_settings_version": "版本 {version}",
"cw_status_connecting": "正在连接…",
"cw_status_offline": "未连接",
"cw_task_from_console": "来自本主机",
"cw_task_from_pc": "来自电脑",
"cw_theme_dark": "深色",
"cw_theme_light": "浅色",
"cw_theme_oled": "OLED",
"cw_theme_peach": "蜜桃",
"cw_tour1_cheats": "金手指:开关正在运行的游戏的金手指。",
"cw_tour1_files": "文件:在 PS5 的磁盘上浏览、复制、移动和删除。",
"cw_tour1_home": "主页:正在运行的游戏、任务和磁盘。",
"cw_tour1_settings": "设置:主题、语言、全屏以及这些提示。",
"cw_tour1_title": "左侧有四个分区",
"cw_tour2_circle": "○ 返回上一步。",
"cw_tour2_cross": "✕ 选择高亮的项目。",
"cw_tour2_more": "其他功能都有屏幕上的按钮:高亮后按 ✕。左下角的“帮助”会显示还有哪些按键可用。",
"cw_tour2_title": "✕ 选择,○ 返回",
"cw_tour3_fullscreen": "第一次按键后页面会铺满电视。可在“设置”中关闭全屏。",
"cw_tour3_pointer": "用左摇杆移动指针:指针所指之处会高亮,按 ✕ 即可点击。",
"cw_tour3_title": "PS5 指针也可以用",
"cw_tour_done": "知道了",
"cw_tour_label": "提示",
"cw_tour_next": "下一步",
"cw_tour_skip": "跳过",
"cw_tour_step": "{n} / {total}"
}
+232
View File
@@ -0,0 +1,232 @@
{
"cw_actions": "操作",
"cw_cheats_apply": "套用",
"cw_cheats_engine_off": "金手指引擎已關閉。開啟任一金手指時會自動啟動。",
"cw_cheats_err_changed": "金手指檔案已變更,已重新讀取清單。",
"cw_cheats_err_load": "無法讀取金手指({code})。請按重新整理再試一次。",
"cw_cheats_err_module": "此金手指需要遊戲中尚未載入的部分。請在遊戲中稍後再試。",
"cw_cheats_err_toggle": "無法切換金手指({code})。",
"cw_cheats_exited": "遊戲已關閉。",
"cw_cheats_exited_next": "再次啟動遊戲,它的金手指會重新顯示在這裡。",
"cw_cheats_how": "按 ✕ 或 □ 開啟或關閉選取的金手指。",
"cw_cheats_loading": "正在載入金手指…",
"cw_cheats_no_game": "沒有正在執行的遊戲。",
"cw_cheats_no_game_next": "請先啟動遊戲,再開啟金手指。",
"cw_cheats_none": "此遊戲沒有金手指。",
"cw_cheats_none_next": "請在電腦上的 PS5Upload 應用程式中為此遊戲新增金手指。",
"cw_cheats_off": "關",
"cw_cheats_on": "開",
"cw_cheats_refresh": "重新整理",
"cw_cheats_switching": "正在切換…",
"cw_cheats_title": "金手指",
"cw_cheats_truncated": "此處無法顯示全部金手指。電腦上的 PS5Upload 應用程式可顯示全部。",
"cw_ctl_last": "最後按下:",
"cw_ctl_logging": "此畫面開啟期間,按鍵會記錄到這台主機上的一個小日誌,用於改善控制器支援。",
"cw_ctl_not_yet": "尚未收到",
"cw_ctl_ok": "可用",
"cw_ctl_other_key": "其他按鍵:{key}",
"cw_ctl_picture": "DualSense 控制器",
"cw_ctl_press_each": "每個按鍵按一次,即可看到此頁面收到了什麼。○ 會關閉此畫面,請最後再按。",
"cw_ctl_received": "已收到",
"cw_ctl_received_job": "已收到:{job}(尚未使用)",
"cw_ctl_system": "由 PS5 使用",
"cw_ctl_title": "按鍵說明",
"cw_ctl_works": "可用:{job}",
"cw_dialog_cancel": "取消",
"cw_files_bad_name": "名稱不能包含「/」。",
"cw_files_batch_copy": "正在複製 {at}/{total}…",
"cw_files_batch_delete": "正在刪除 {at}/{total}…",
"cw_files_batch_failed": "{n} 項失敗。",
"cw_files_batch_move": "正在移動 {at}/{total}…",
"cw_files_batch_stop": "停止",
"cw_files_batch_stopped": "已停止。{n} 項尚未開始。",
"cw_files_batch_stopping": "將在此項目之後停止…",
"cw_files_close": "關閉",
"cw_files_copy_to": "複製到…",
"cw_files_del_body": "資料夾會連同其中所有內容一併刪除,且無法復原。",
"cw_files_del_list_many": "「{name}」等 {more} 項。",
"cw_files_del_many": "刪除 {n} 項?",
"cw_files_del_one": "刪除「{name}」?",
"cw_files_delete": "刪除",
"cw_files_done": "完成。",
"cw_files_drives": "磁碟機",
"cw_files_empty": "此資料夾是空的。",
"cw_files_empty_next": "從電腦上的 PS5Upload 應用程式把檔案複製到這裡,或新增資料夾。",
"cw_files_err_denied": "主機不允許在此處變更。",
"cw_files_err_exists": "已有同名項目。",
"cw_files_err_into_itself": "無法將資料夾放進它自己或它的子資料夾。",
"cw_files_err_load": "無法開啟此資料夾。",
"cw_files_err_missing": "它已不存在。",
"cw_files_err_read": "無法讀取。",
"cw_files_fixperm": "修正權限",
"cw_files_fixperm_batch": "正在修正權限 {at}/{total}…",
"cw_files_fixperm_body": "讓此資料夾中的所有內容可被 PS5 讀取和執行(chmod 777)。複製後遊戲無法啟動時使用。",
"cw_files_fixperm_done": "權限已修正。",
"cw_files_free": "可用 {free}",
"cw_files_here": "這裡",
"cw_files_info": "資訊",
"cw_files_info_items": "項目數",
"cw_files_info_mode": "權限",
"cw_files_info_modified": "修改時間",
"cw_files_info_size": "大小",
"cw_files_info_type": "類型",
"cw_files_info_where": "位置",
"cw_files_items": "{n} 項",
"cw_files_kind_dir": "資料夾",
"cw_files_kind_file": "檔案",
"cw_files_kind_link": "連結",
"cw_files_more": "顯示更多",
"cw_files_move_to": "移動到…",
"cw_files_name": "名稱",
"cw_files_new_folder": "新增資料夾",
"cw_files_no_folders": "這裡沒有資料夾。",
"cw_files_no_folders_next": "選擇「這裡」即可使用此資料夾。",
"cw_files_ok": "確定",
"cw_files_pick_drive": "選擇磁碟機",
"cw_files_rename": "重新命名",
"cw_files_retry": "重試",
"cw_files_selected": "已選取 {n} 項",
"cw_files_some_failed": "{n} 項失敗:{reason}",
"cw_files_tasks": "執行中的工作:{n}",
"cw_files_too_large": "檔案太大,無法預覽。",
"cw_files_truncated": "只顯示前 1 MiB。",
"cw_files_up": "上一層",
"cw_files_view": "檢視",
"cw_help_close": "關閉",
"cw_help_controls": "按鍵說明",
"cw_help_pointer": "左類比搖桿移動 PS5 指標;✕ 點選指標所指之處。",
"cw_help_title": "此畫面的按鍵",
"cw_help_unconfirmed": "尚未在這台 PS5 上確認:",
"cw_hint_back": "返回",
"cw_hint_fullscreen": "全螢幕",
"cw_hint_help": "說明",
"cw_hint_open": "開啟",
"cw_hint_page": "上一頁/下一頁",
"cw_hint_refresh": "重新整理",
"cw_hint_switch": "開/關",
"cw_hint_switch_section": "切換分區",
"cw_hint_top": "頂端",
"cw_hints_label": "控制器按鍵",
"cw_home_cancel_task": "取消",
"cw_home_cancel_task_confirm": "取消工作",
"cw_home_cheats": "金手指",
"cw_home_close_game": "關閉遊戲",
"cw_home_confirm_cancel_body": "工作會立即停止,且無法復原。",
"cw_home_confirm_cancel_body_pc": "這項工作由電腦啟動,電腦端也會停止。",
"cw_home_confirm_cancel_title": "要取消這項工作嗎?",
"cw_home_confirm_close_body": "遊戲中未儲存的進度將會遺失。",
"cw_home_confirm_close_title": "要關閉 {name} 嗎?",
"cw_home_err_busy": "主機忙碌中,請稍後再試。",
"cw_home_err_failed": "操作未成功({code})。",
"cw_home_err_gone": "這項工作已經結束。",
"cw_home_err_load_storage": "無法讀取磁碟機。",
"cw_home_err_load_tasks": "無法讀取工作清單。",
"cw_home_err_offline": "主機沒有回應,請再試一次。",
"cw_home_free_of": "可用 {free},共 {total}",
"cw_home_keep_task": "繼續執行",
"cw_home_kind_copy": "複製",
"cw_home_kind_download": "下載",
"cw_home_kind_op": "檔案操作",
"cw_home_kind_other": "工作",
"cw_home_kind_upload": "上傳",
"cw_home_loading": "載入中…",
"cw_home_no_game_next": "從 PS5 主畫面啟動遊戲,它的金手指會顯示在這裡。",
"cw_home_no_game_plain": "從 PS5 主畫面啟動遊戲。",
"cw_home_no_tasks": "目前沒有工作。",
"cw_home_no_tasks_next": "從電腦上的 PS5Upload 應用程式上傳的內容會顯示在這裡。",
"cw_home_now_running": "執行中",
"cw_home_percent": "{n}%",
"cw_home_progress_bytes": "{done} / {total}",
"cw_home_progress_files": "{done} / {total} 個檔案",
"cw_home_retrying": "稍後會自動重試。",
"cw_home_state_done": "已完成",
"cw_home_state_failed": "失敗",
"cw_home_state_running": "進行中",
"cw_home_storage": "儲存空間",
"cw_home_tasks": "工作",
"cw_home_tasks_fewer": "收合",
"cw_home_tasks_more": "另外 {n} 項",
"cw_home_vol_ext": "延伸儲存空間",
"cw_home_vol_internal": "內建儲存空間",
"cw_home_vol_m2": "M.2 儲存空間",
"cw_home_vol_readonly": "唯讀",
"cw_home_vol_usb": "USB 磁碟機",
"cw_home_vol_usb_ext": "USB 延伸儲存空間",
"cw_job_actions": "更多動作",
"cw_job_back": "返回",
"cw_job_confirm": "選擇 / 開啟",
"cw_job_fullscreen": "全螢幕開/關",
"cw_job_help": "此畫面的說明",
"cw_job_move": "移動",
"cw_job_mute": "麥克風靜音",
"cw_job_next_section": "下一個區塊",
"cw_job_page_down": "下一頁",
"cw_job_page_up": "上一頁",
"cw_job_pointer": "PS5 指標",
"cw_job_prev_section": "上一個區塊",
"cw_job_ps": "PS5 主畫面與選單",
"cw_job_rail": "區塊清單",
"cw_job_refresh": "重新整理",
"cw_job_scroll": "捲動",
"cw_job_select": "選取項目 / 開關金手指",
"cw_job_top": "清單頂端",
"cw_nav_files": "檔案",
"cw_nav_home": "首頁",
"cw_nav_sections": "分區",
"cw_nav_settings": "設定",
"cw_reload_body": "重新載入此頁面以繼續。",
"cw_reload_button": "重新載入",
"cw_reload_title": "PS5Upload 助手已重新啟動",
"cw_select": "選取",
"cw_settings_about": "關於",
"cw_settings_app_name": "PS5Upload",
"cw_settings_contrast": "高對比",
"cw_settings_controls": "按鍵說明",
"cw_settings_controls_note": "各控制器按鍵在這裡的作用。按下按鍵即可測試。",
"cw_settings_err_load": "無法載入設定。",
"cw_settings_err_save": "無法儲存設定,請再試一次。",
"cw_settings_err_tile_add": "無法將 PS5Upload 加到主畫面,請再試一次。",
"cw_settings_err_tile_remove": "無法從主畫面移除 PS5Upload,請再試一次。",
"cw_settings_fullscreen": "全螢幕",
"cw_settings_fullscreen_note": "隱藏瀏覽器的工具列,讓頁面佔滿電視。在你下次按鍵時生效。",
"cw_settings_lan": "允許網路中的其他裝置",
"cw_settings_lan_allow": "允許",
"cw_settings_lan_confirm_title": "允許其他裝置?",
"cw_settings_lan_off_note": "關閉後其他裝置將失去存取權限;這台主機仍可存取。",
"cw_settings_lan_warning": "這樣網路中的任何人都可以使用此頁面並管理你的檔案。",
"cw_settings_language": "語言",
"cw_settings_language_system": "跟隨系統",
"cw_settings_network": "網路",
"cw_settings_off": "關",
"cw_settings_on": "開",
"cw_settings_theme": "佈景主題",
"cw_settings_tile": "在主畫面顯示 PS5Upload",
"cw_settings_tips": "再次顯示提示",
"cw_settings_using": "控制器與提示",
"cw_settings_version": "版本 {version}",
"cw_status_connecting": "正在連線…",
"cw_status_offline": "未連線",
"cw_task_from_console": "來自本主機",
"cw_task_from_pc": "來自電腦",
"cw_theme_dark": "深色",
"cw_theme_light": "淺色",
"cw_theme_oled": "OLED",
"cw_theme_peach": "蜜桃",
"cw_tour1_cheats": "金手指:開關執行中遊戲的金手指。",
"cw_tour1_files": "檔案:在 PS5 的磁碟上瀏覽、複製、移動和刪除。",
"cw_tour1_home": "首頁:執行中的遊戲、工作和磁碟。",
"cw_tour1_settings": "設定:主題、語言、全螢幕以及這些提示。",
"cw_tour1_title": "左側有四個區塊",
"cw_tour2_circle": "○ 返回上一步。",
"cw_tour2_cross": "✕ 選擇反白的項目。",
"cw_tour2_more": "其他功能都有畫面上的按鈕:反白後按 ✕。左下角的「說明」會顯示還有哪些按鍵可用。",
"cw_tour2_title": "✕ 選擇,○ 返回",
"cw_tour3_fullscreen": "第一次按鍵後頁面會填滿電視。可在「設定」中關閉全螢幕。",
"cw_tour3_pointer": "用左類比搖桿移動指標:指標所指之處會反白,按 ✕ 即可點選。",
"cw_tour3_title": "PS5 指標也能用",
"cw_tour_done": "知道了",
"cw_tour_label": "提示",
"cw_tour_next": "下一步",
"cw_tour_skip": "略過",
"cw_tour_step": "{n} / {total}"
}
+8 -6
View File
@@ -1,4 +1,4 @@
import { StrictMode, useEffect, useState } from "react";
import { StrictMode, useSyncExternalStore } from "react";
import { createRoot } from "react-dom/client";
import "virtual:pc-tokens.css";
import "./console.css";
@@ -7,20 +7,22 @@ import { installBackHistory } from "./backHistory";
import { installFullscreen } from "./fullscreen";
import { DEFAULT_INPUT_MAP, dispatchNav, installNavigation } from "./nav";
import { applyStoredTheme } from "./theme";
import { getLanguage, onLanguageChange, setLanguage } from "./strings";
import { getLanguage, onLanguageChange, setLanguage, stringsVersion } from "./strings";
applyStoredTheme(); // before the first paint: no flash of the wrong theme
setLanguage(getLanguage()); // sets <html lang/dir> for the detected language
// English is in the page; the detected (or stored) language loads from the helper and the page
// re-renders in it when it arrives (<html lang/dir> follow).
setLanguage(getLanguage());
installNavigation(DEFAULT_INPUT_MAP);
// Full screen on the first press while the Settings switch is on (the default).
installFullscreen();
// The browser's Back (the PS5's ○) steps back inside the page: see backHistory.ts.
installBackHistory(() => dispatchNav("back"));
/** Re-renders the whole page when Settings changes the language. */
/** Re-renders the whole page when its strings change (a language loaded or chosen in Settings). */
function Root() {
const [, setTick] = useState(0);
useEffect(() => onLanguageChange(() => setTick((n) => n + 1)), []);
// An external store, so a load that lands before the first commit is not missed.
useSyncExternalStore(onLanguageChange, stringsVersion);
return <App inputMap={DEFAULT_INPUT_MAP} />;
}
@@ -1,6 +1,7 @@
import { isValidElement, type ReactElement, type ReactNode } from "react";
import { afterEach, describe, expect, it, vi } from "vitest";
import { chooseLanguage, getLanguage, storedLanguage, t } from "../strings";
import de from "../locales/de.json";
import { _setStringsLoaderForTests, chooseLanguage, getLanguage, storedLanguage, stringsReady, t } from "../strings";
import { ConfirmDialog } from "../ui/ConfirmDialog";
import { lanToggleStep, SettingsView, waitTileApplied, type SettingsViewProps, type WebSettings } from "./Settings";
@@ -34,6 +35,8 @@ const base = (over: Partial<SettingsViewProps> = {}): SettingsViewProps => ({
afterEach(() => {
vi.unstubAllGlobals();
vi.restoreAllMocks();
_setStringsLoaderForTests(null);
chooseLanguage("");
});
@@ -90,7 +93,9 @@ describe("settings", () => {
expect(hidden).toBeUndefined();
});
it("language_choice_persists_and_survives_storage_errors", () => {
it("language_choice_persists_and_survives_storage_errors", async () => {
_setStringsLoaderForTests((code) => (code === "de" ? Promise.resolve(de) : Promise.reject(new Error("offline"))));
vi.spyOn(console, "warn").mockImplementation(() => {});
const store = new Map<string, string>();
vi.stubGlobal("localStorage", {
getItem: (k: string) => store.get(k) ?? null,
@@ -100,6 +105,8 @@ describe("settings", () => {
chooseLanguage("de");
expect(getLanguage()).toBe("de");
expect(storedLanguage()).toBe("de");
await stringsReady();
expect(t("cw_nav_settings")).toBe(de.cw_nav_settings);
expect(t("cw_nav_settings")).not.toBe("Settings");
chooseLanguage("");
expect(storedLanguage()).toBe("");
File diff suppressed because it is too large. Load diff
+182 -18
View File
@@ -1,18 +1,59 @@
import { describe, expect, it } from "vitest";
import { makeT, pickLanguage } from "./strings";
import generated from "./strings.gen.json";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import {
_setStringsLoaderForTests,
chooseLanguage,
cleanStrings,
getLanguage,
LANGUAGES,
makeT,
onLanguageChange,
pickLanguage,
setLanguage,
stringsReady,
stringsUrl,
stringsVersion,
t,
} from "./strings";
import en from "./locales/en.json";
import de from "./locales/de.json";
// @ts-expect-error plain .mjs build script shared with this test, no type declarations
import { extractConsoleStrings } from "../../../scripts/build-console-strings.mjs";
import { consoleStringFiles, extractConsoleStrings } from "../../../scripts/build-console-strings.mjs";
/** The committed locales/<code>.json files, as text. */
const committed = import.meta.glob("./locales/*.json", { query: "?raw", import: "default", eager: true }) as Record<
string,
string
>;
// Vitest runs in node here: <html> is a plain object with the two attributes strings.ts sets.
let html: { lang: string; dir: string };
beforeEach(() => {
html = { lang: "en", dir: "ltr" };
vi.stubGlobal("document", { documentElement: html });
});
afterEach(() => {
vi.restoreAllMocks();
_setStringsLoaderForTests(null);
chooseLanguage("");
vi.unstubAllGlobals();
});
/** A loader that answers from the committed files and records what was asked. */
function fileLoader(asked: string[], fail: string[] = []) {
return (code: string) => {
asked.push(code);
if (fail.includes(code)) return Promise.reject(new Error("HTTP 404"));
const text = committed[`./locales/${code}.json`];
return text ? Promise.resolve(JSON.parse(text) as Record<string, string>) : Promise.reject(new Error("none"));
};
}
describe("console strings", () => {
it("t_falls_back_to_english", () => {
const t = makeT(
{ en: { cw_x: "Hello {name}", cw_y: "Both" }, "zh-CN": { cw_y: "两者" } },
"zh-CN",
);
expect(t("cw_x", { name: "Ana" })).toBe("Hello Ana");
expect(t("cw_y")).toBe("两者");
expect(t("cw_missing_everywhere")).toBe("cw_missing_everywhere");
const say = makeT({ en: { cw_x: "Hello {name}", cw_y: "Both" }, "zh-CN": { cw_y: "两者" } }, "zh-CN");
expect(say("cw_x", { name: "Ana" })).toBe("Hello Ana");
expect(say("cw_y")).toBe("两者");
expect(say("cw_missing_everywhere")).toBe("cw_missing_everywhere");
});
it("picks the closest shipped language for the browser's", () => {
@@ -27,16 +68,139 @@ describe("console strings", () => {
expect(pickLanguage(undefined, have)).toBe("en");
});
it("the committed strings module matches the locale files (run npm run build:console)", () => {
expect(generated).toEqual(extractConsoleStrings());
it("the committed locale files match the locale sources (run npm run build:console)", () => {
const want = consoleStringFiles() as Record<string, string>;
const have = Object.fromEntries(Object.entries(committed).map(([p, text]) => [p.replace("./locales/", ""), text]));
expect(Object.keys(have).sort()).toEqual(Object.keys(want).sort());
for (const [f, text] of Object.entries(want)) expect(have[f], f).toBe(text);
});
it("the build script emits one file per locale, and LANGUAGES lists exactly those", () => {
const all = extractConsoleStrings() as Record<string, Record<string, string>>;
expect(Object.keys(consoleStringFiles() as object).sort()).toEqual(Object.keys(all).map((c) => `${c}.json`).sort());
expect(LANGUAGES).toEqual(Object.keys(all).sort());
expect(LANGUAGES).toHaveLength(21);
});
it("every shipped locale translates every console key", () => {
const maps = generated as Record<string, Record<string, string>>;
const en = Object.keys(maps.en).sort();
expect(en.length).toBeGreaterThan(0);
for (const [code, map] of Object.entries(maps)) {
expect(Object.keys(map).sort(), code).toEqual(en);
const keys = Object.keys(en).sort();
expect(keys.length).toBeGreaterThan(0);
for (const [p, text] of Object.entries(committed)) {
expect(Object.keys(JSON.parse(text) as object).sort(), p).toEqual(keys);
}
});
it("asks the helper for /strings/<code>.json with the build hash", () => {
expect(stringsUrl("zh-CN")).toMatch(/^\/strings\/zh-CN\.json\?v=[\w-]+$/);
});
it("keeps only string cw_ values from a strings file", () => {
expect(cleanStrings({ cw_a: "A", cw_b: 3, other: "x", cw_c: null })).toEqual({ cw_a: "A" });
expect(cleanStrings(["cw_a"])).toEqual({});
expect(cleanStrings(null)).toEqual({});
});
it("shows English until the chosen language loads, then switches and re-renders", async () => {
const asked: string[] = [];
let release: (v: Record<string, string>) => void = () => {};
_setStringsLoaderForTests((code) => {
asked.push(code);
return new Promise((resolve) => {
release = resolve;
});
});
const seen = vi.fn();
const off = onLanguageChange(seen);
const before = stringsVersion();
chooseLanguage("de");
expect(getLanguage()).toBe("de");
expect(asked).toEqual(["de"]);
// Loading: English, never raw keys.
expect(t("cw_nav_settings")).toBe(en.cw_nav_settings);
expect(html.lang).toBe("en");
seen.mockClear();
release(de);
await stringsReady();
expect(t("cw_nav_settings")).toBe(de.cw_nav_settings);
expect(html.lang).toBe("de");
expect(seen).toHaveBeenCalled();
expect(stringsVersion()).toBeGreaterThan(before);
off();
});
it("a key the language lacks falls back to English", async () => {
_setStringsLoaderForTests(() => Promise.resolve({ cw_nav_settings: "Einstellungen!" }));
setLanguage("de");
await stringsReady();
expect(t("cw_nav_settings")).toBe("Einstellungen!");
expect(t("cw_settings_language_system")).toBe(en.cw_settings_language_system);
});
it("loads each language once, applies right-to-left, and switches back at once", async () => {
const asked: string[] = [];
_setStringsLoaderForTests(fileLoader(asked));
setLanguage("ar");
await stringsReady();
expect(html.dir).toBe("rtl");
setLanguage("en");
expect(asked).toEqual(["ar"]);
expect(html.dir).toBe("ltr");
expect(t("cw_nav_settings")).toBe(en.cw_nav_settings);
setLanguage("ar");
expect(html.lang).toBe("ar"); // cached: no wait
expect(asked).toEqual(["ar"]);
});
it("a load that lands after another choice does not take over", async () => {
let releaseDe: (v: Record<string, string>) => void = () => {};
_setStringsLoaderForTests((code) =>
code === "de"
? new Promise((resolve) => {
releaseDe = resolve;
})
: Promise.resolve(JSON.parse(committed[`./locales/${code}.json`]) as Record<string, string>),
);
setLanguage("de");
setLanguage("fr");
await stringsReady();
expect(html.lang).toBe("fr");
releaseDe(de);
await Promise.resolve();
await Promise.resolve();
expect(html.lang).toBe("fr");
expect(getLanguage()).toBe("fr");
});
it("a failed load stays in English and logs once", async () => {
const warn = vi.spyOn(console, "warn").mockImplementation(() => {});
const asked: string[] = [];
_setStringsLoaderForTests(fileLoader(asked, ["de", "fr"]));
setLanguage("de");
await stringsReady();
setLanguage("fr");
await stringsReady();
expect(t("cw_nav_settings")).toBe(en.cw_nav_settings);
expect(html.lang).toBe("en");
expect(warn).toHaveBeenCalledTimes(1);
// A later choice retries (the failure is not remembered).
setLanguage("de");
expect(asked).toEqual(["de", "fr", "de"]);
});
it("the real loader fetches the helper's URL and keeps English when it fails", async () => {
const warn = vi.spyOn(console, "warn").mockImplementation(() => {});
const fetchMock = vi.fn(() => Promise.resolve(new Response("nope", { status: 404 })));
vi.stubGlobal("fetch", fetchMock);
setLanguage("ja");
await stringsReady();
expect(fetchMock).toHaveBeenCalledWith(stringsUrl("ja"), { credentials: "same-origin" });
expect(t("cw_nav_settings")).toBe(en.cw_nav_settings);
expect(warn).toHaveBeenCalledTimes(1);
fetchMock.mockImplementation(() =>
Promise.resolve(new Response(committed["./locales/ja.json"], { status: 200, headers: { "Content-Type": "application/json" } })),
);
setLanguage("ja");
await stringsReady();
expect(html.lang).toBe("ja");
});
});
+123 -17
View File
@@ -1,16 +1,24 @@
/**
* Translations for the console page: the `cw_*` keys of the PC app's 21
* locale files, extracted by scripts/build-console-strings.mjs into
* strings.gen.json. English is the fallback for any key a locale lacks.
* The language follows the PS5's system language (navigator.language) until
* setLanguage overrides it.
* locales/<code>.json. Only English is part of the page; every other
* language is fetched from the helper (GET /strings/<code>.json?v=<hash>,
* gzip'd into the ELF) when it is chosen, at start or in Settings.
*
* Until a language's strings arrive the page stays in English (no flash of
* raw keys), keys a language lacks fall back to English, and a failed load
* leaves the page in English (logged once). The language follows the PS5's
* system language (navigator.language) until setLanguage overrides it.
*/
import generated from "./strings.gen.json";
import { LANGUAGE_NAMES } from "./languages";
import en from "./locales/en.json";
export type StringMaps = Record<string, Record<string, string>>;
export type Vars = Record<string, string | number>;
/** Fetches one language's strings (never English). Rejects on any failure. */
export type StringsLoader = (code: string) => Promise<Record<string, string>>;
const MAPS = generated as StringMaps;
const EN: Record<string, string> = en;
/** `{name}` placeholders replaced from vars; unknown ones stay as written. */
function interpolate(raw: string, vars?: Vars): string {
@@ -23,8 +31,8 @@ function interpolate(raw: string, vars?: Vars): string {
/** A translator over `maps` for `lang`, falling back to English, then to the key. */
export function makeT(maps: StringMaps, lang: string): (key: string, vars?: Vars) => string {
const own = maps[lang] ?? {};
const en = maps.en ?? {};
return (key, vars) => interpolate(own[key] ?? en[key] ?? key, vars);
const fallback = maps.en ?? {};
return (key, vars) => interpolate(own[key] ?? fallback[key] ?? key, vars);
}
/**
@@ -48,7 +56,35 @@ export function pickLanguage(tag: string | undefined | null, have: string[]): st
return same ?? "en";
}
export const LANGUAGES: string[] = Object.keys(MAPS);
/** Every shipped language code, sorted (the locale files' order). */
export const LANGUAGES: string[] = Object.keys(LANGUAGE_NAMES).sort();
/**
* The strings' build hash (vite.console.config.ts defines it from the emitted files), so the
* helper's year-long immutable cache never serves another build's strings.
*/
export const STRINGS_VERSION: string = typeof __CW_STRINGS_V__ === "string" ? __CW_STRINGS_V__ : "dev";
/** The URL of one language's strings on the helper. */
export function stringsUrl(code: string): string {
return `/strings/${encodeURIComponent(code)}.json?v=${encodeURIComponent(STRINGS_VERSION)}`;
}
/** Only string values of `cw_*` keys survive: a damaged file cannot inject anything else. */
export function cleanStrings(raw: unknown): Record<string, string> {
const out: Record<string, string> = {};
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return out;
for (const [k, v] of Object.entries(raw as Record<string, unknown>)) {
if (k.startsWith("cw_") && typeof v === "string") out[k] = v;
}
return out;
}
const fetchStrings: StringsLoader = async (code) => {
const res = await fetch(stringsUrl(code), { credentials: "same-origin" });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return cleanStrings(await res.json());
};
const STORAGE_KEY = "ps5upload.console.lang";
@@ -66,11 +102,20 @@ function systemLanguage(): string {
return pickLanguage(typeof navigator !== "undefined" ? navigator.language : "en", LANGUAGES);
}
let loader: StringsLoader = fetchStrings;
/** Languages whose strings arrived (English is always there). */
const loaded: StringMaps = { en: EN };
/** In-flight loads, one per language. */
const pending = new Map<string, Promise<void>>();
let loggedFailure = false;
/** The chosen language (what Settings shows), and the one the page currently speaks. */
let current = storedLanguage() || systemLanguage();
let translate = makeT(MAPS, current);
let shown = "en";
let translate = makeT(loaded, shown);
let version = 0;
const listeners = new Set<() => void>();
/** Called after the language changes (the page re-renders). Returns the unsubscribe function. */
/** Called after the shown strings change (the page re-renders). Returns the unsubscribe function. */
export function onLanguageChange(fn: () => void): () => void {
listeners.add(fn);
return () => {
@@ -78,22 +123,74 @@ export function onLanguageChange(fn: () => void): () => void {
};
}
/** Bumped on every change of the shown strings (for useSyncExternalStore). */
export function stringsVersion(): number {
return version;
}
/** The chosen language (it may still be loading: the page shows English meanwhile). */
export function getLanguage(): string {
return current;
}
/** Switch the page's language (Settings' manual override). Re-render after calling. */
export function setLanguage(code: string): void {
current = pickLanguage(code, LANGUAGES);
translate = makeT(MAPS, current);
/** Speak `code` now (its strings are loaded) and tell the listeners. */
function show(code: string): void {
shown = code;
translate = makeT(loaded, code);
if (typeof document !== "undefined") {
document.documentElement.lang = current;
document.documentElement.dir = current === "ar" || current === "fa" ? "rtl" : "ltr";
document.documentElement.lang = code;
document.documentElement.dir = code === "ar" || code === "fa" ? "rtl" : "ltr";
}
version++;
listeners.forEach((fn) => fn());
}
/** Fetch `code` once at a time; a failure is forgotten so a later choice can retry it. */
function load(code: string): Promise<void> {
const inflight = pending.get(code);
if (inflight) return inflight;
const p = loader(code)
.then(
(map) => {
loaded[code] = cleanStrings(map);
},
(err: unknown) => {
if (!loggedFailure) {
loggedFailure = true;
console.warn(`console page: ${code} strings did not load, staying in English`, err);
}
},
)
.then(() => {
pending.delete(code);
if (current === code && loaded[code] && shown !== code) show(code);
});
pending.set(code, p);
return p;
}
/**
* Settings' choice: a shipped code, or "" for the system default. Applies at
* Switch the page's language (Settings' manual override, and main.tsx at start). A language
* already loaded applies at once; another one is fetched and applies when it arrives, English
* until then. Re-renders through the listeners whenever the shown strings change.
*/
export function setLanguage(code: string): void {
current = pickLanguage(code, LANGUAGES);
if (loaded[current]) {
show(current);
return;
}
if (shown !== "en") show("en");
void load(current);
}
/** Resolves when the chosen language's load (if any) has settled. */
export function stringsReady(): Promise<void> {
return pending.get(current) ?? Promise.resolve();
}
/**
* Settings' choice: a shipped code, or "" for the system default. Applies (or starts loading) at
* once and remembers it; a storage failure only loses the memory.
*/
export function chooseLanguage(code: string): void {
@@ -104,6 +201,7 @@ export function chooseLanguage(code: string): void {
/* private mode or blocked storage: the choice holds until the page closes */
}
setLanguage(code || systemLanguage());
version++;
listeners.forEach((fn) => fn());
}
@@ -111,3 +209,11 @@ export function chooseLanguage(code: string): void {
export function t(key: string, vars?: Vars): string {
return translate(key, vars);
}
/** Tests: replace the network loader and forget every loaded language but English. */
export function _setStringsLoaderForTests(next: StringsLoader | null): void {
loader = next ?? fetchStrings;
for (const k of Object.keys(loaded)) if (k !== "en") delete loaded[k];
pending.clear();
loggedFailure = false;
}
+45 -5
View File
@@ -9,10 +9,14 @@
* - The PC app's theme tokens (dark, light, peach, OLED, high contrast) come from src/index.css itself (pcTokens),
* not a copy, so the page follows the app's colours.
* - Size budget: the build FAILS over 640 KiB raw or 220 KiB gzip. Ruling R19 raised the gzip
* cap from 150 KiB: 21 inlined locales of console strings (the Controls screen, tips and help
* added ~60 keys each) compress poorly across scripts; the ELF embeds the gzip, still small.
* cap from 150 KiB when all 21 locales were inlined; since then only English is (consoleStrings).
* - Strings: every other locale is emitted next to the page as strings/<code>.json (minified, cw_*
* keys only); payload/Makefile gzips each into the ELF (build/webui_strings.c) and the helper
* serves them at GET /strings/<code>.json. The page fetches them with ?v=<hash of these files>
* (__CW_STRINGS_V__), so the helper's immutable caching never mixes builds.
*/
import { readFileSync } from "node:fs";
import { createHash } from "node:crypto";
import { readdirSync, readFileSync } from "node:fs";
import { fileURLToPath } from "node:url";
import { gzipSync } from "node:zlib";
import { defineConfig, type Plugin } from "vite";
@@ -107,6 +111,41 @@ function pcTokens(): Plugin {
};
}
const LOCALES_DIR = fileURLToPath(new URL("./src/console/locales", import.meta.url));
/** Every committed locale but English (inlined), minified: { code: json text }. */
function otherLocales(): Record<string, string> {
const out: Record<string, string> = {};
for (const f of readdirSync(LOCALES_DIR).filter((n) => n.endsWith(".json")).sort()) {
const code = f.slice(0, -".json".length);
if (code === "en") continue;
if (!/^[a-z]{2}(-[A-Z]{2})?$/.test(code)) throw new Error(`consoleStrings: locale file name ${f} is not <ll> or <ll>-<RR>`);
out[code] = JSON.stringify(JSON.parse(readFileSync(`${LOCALES_DIR}/${f}`, "utf8")));
}
return out;
}
/** Defines __CW_STRINGS_V__ and emits strings/<code>.json for every locale but English. */
function consoleStrings(): Plugin {
const files = otherLocales();
const hash = createHash("sha256");
for (const [code, json] of Object.entries(files)) hash.update(`${code}\0${json}\0`);
const version = hash.digest("hex").slice(0, 12);
return {
name: "ps5upload-console-strings",
config: () => ({ define: { __CW_STRINGS_V__: JSON.stringify(version) } }),
generateBundle() {
if (Object.keys(files).length === 0) this.error("consoleStrings: no locales besides English in src/console/locales");
let gz = 0;
for (const [code, json] of Object.entries(files)) {
this.emitFile({ type: "asset", fileName: `strings/${code}.json`, source: json });
gz += gzipSync(json, { level: 9 }).length;
}
this.info(`console strings: ${Object.keys(files).length} locales, ${(gz / 1024).toFixed(1)} KiB gzip together, v=${version}`);
},
};
}
/** Move every emitted script and stylesheet into index.html, then enforce the budget. */
function singleFile(): Plugin {
return {
@@ -133,7 +172,8 @@ function singleFile(): Plugin {
delete bundle[name];
}
}
const left = Object.keys(bundle).filter((n) => n !== "index.html");
// consoleStrings' strings/<code>.json stay separate files (the helper serves them).
const left = Object.keys(bundle).filter((n) => n !== "index.html" && !/^strings\/[^/]+\.json$/.test(n));
if (left.length) return this.error(`singleFile: files left outside index.html: ${left.join(", ")}`);
html.source = page;
@@ -156,7 +196,7 @@ export default defineConfig({
root: fileURLToPath(new URL("./src/console", import.meta.url)),
base: "./",
publicDir: false,
plugins: [react(), pcTokens(), singleFile()],
plugins: [react(), pcTokens(), consoleStrings(), singleFile()],
clearScreen: false,
build: {
outDir: fileURLToPath(new URL("./dist-console", import.meta.url)),
+12 -2
View File
@@ -170,6 +170,10 @@ WEBUI_TILE_ICON_C := build/webui_tile_icon.c
# node_modules (`npm ci` in client/). Rebuilt when the page's sources, the locale files (its
# strings), the PC app's tokens (src/index.css) or the build config change.
WEBUI_PAGE_C := build/webui_page.c
# The same build writes client/dist-console/strings/<lang>.json (every language but English, which
# is inside the page); scripts/embed-console-strings.mjs gzips each into build/webui_strings.c
# (include/webui_strings.h), served at GET /strings/<lang>.json.
WEBUI_STRINGS_C := build/webui_strings.c
CLIENT_DIR := ../client
WEBUI_PAGE_DEPS := $(shell find $(CLIENT_DIR)/src/console -type f ! -name '*.test.ts' 2>/dev/null) \
$(wildcard $(CLIENT_DIR)/src/i18n/locales/*.ts) $(CLIENT_DIR)/src/index.css \
@@ -186,7 +190,8 @@ SRCS := src/main.c src/runtime.c src/shell_builtin.c src/takeover.c src/takeover
src/tmdb.c src/fw_spoof.c src/focus_probe.c \
src/content_db.c src/mgmt_rpc.c src/fs_jobs.c src/net_probe.c src/net_ports.c src/mgmt_fs.c src/path_policy.c \
src/webui_http.c src/webui_auth.c src/webui_server.c src/webui_codec.c src/webui_api.c \
src/webui_settings.c src/webui_inputlog.c src/webui_tile.c $(WEBUI_TILE_ICON_C) $(WEBUI_PAGE_C) \
src/webui_settings.c src/webui_inputlog.c src/webui_tile.c src/webui_strings.c $(WEBUI_TILE_ICON_C) \
$(WEBUI_PAGE_C) $(WEBUI_STRINGS_C) \
third_party/tiny_aes/aes.c \
$(BLAKE3_SRCS)
@@ -244,6 +249,11 @@ $(WEBUI_PAGE_C): $(WEBUI_PAGE_DEPS) Makefile
mv build/webui_page.gz.tmp build/webui_page.gz
(cd build && xxd -i webui_page.gz) > $@.tmp && mv $@.tmp $@
# Written from the dist-console/strings the page rule's build just produced.
$(WEBUI_STRINGS_C): $(WEBUI_PAGE_C) ../scripts/embed-console-strings.mjs Makefile
@mkdir -p $(dir $@)
node ../scripts/embed-console-strings.mjs $(CLIENT_DIR)/dist-console/strings $@
# Gzipped copy for the Tauri bundle resource. linuxdeploy (Linux
# AppImage bundler) walks every ELF in the AppDir and tries to
# resolve its .so deps via `patchelf --print-needed`. The PS5
@@ -258,7 +268,7 @@ $(ELF).gz: $(ELF)
clean:
rm -f $(ELF) $(ELF).gz $(SQLITE_OBJ) $(MONO_OBJ)
rm -rf build/ava1 $(SDK_CRT_BUILD)
rm -f $(WEBUI_TILE_ICON_C) $(WEBUI_PAGE_C) build/webui_page.gz
rm -f $(WEBUI_TILE_ICON_C) $(WEBUI_PAGE_C) $(WEBUI_STRINGS_C) build/webui_page.gz
send: $(ELF)
@echo "Sending $(ELF) to $(PS5_HOST):$(PS5_PORT) ..."
+4 -2
View File
@@ -10,8 +10,10 @@
* appends the page's controller-input measurements to WEBUI_INPUTLOG_PATH (webui_inputlog.h),
* bodies over WEBUI_INPUTLOG_BODY_MAX answer 413, calls closer than 500 ms apart 429.
*
* Two GET routes sit outside the table: GET / serves the embedded page (webui_page.h) and
* GET /api/token answers {"token":"<hex>"}, both after the server's Host/Origin check only. */
* Three GET routes sit outside the table: GET / serves the embedded page (webui_page.h),
* GET /api/token answers {"token":"<hex>"} and GET /strings/<lang>.json one language's embedded
* strings (webui_strings.h; an id not in that table answers 404), all after the server's
* Host/Origin check only. */
#ifndef PS5UPLOAD_WEBUI_API_H
#define PS5UPLOAD_WEBUI_API_H
+2 -1
View File
@@ -34,7 +34,8 @@ enum {
int webui_http_parse(const char *buf, size_t len, webui_req_t *out);
/* Write "HTTP/1.1 <status>" + headers + blank line. extra_headers, if given,
* is zero or more complete "Name: value\r\n" lines. Returns bytes written
* is zero or more complete "Name: value\r\n" lines; when one of them is a
* Cache-Control line it replaces the default "Cache-Control: no-store". Returns bytes written
* (excluding NUL) or -1 if it does not fit. */
int webui_http_head(char *out, size_t cap, int status, const char *content_type,
size_t body_len, const char *extra_headers);
+26
View File
@@ -0,0 +1,26 @@
/* The console page's translations, one gzip'd JSON per language except English (which is inside
* the page): client/dist-console/strings/<lang>.json, gzip'd and embedded by
* scripts/embed-console-strings.mjs as build/webui_strings.c (payload/Makefile). The helper serves
* them at GET /strings/<lang>.json with Content-Encoding: gzip and a year-long immutable cache: the
* page asks with ?v=<hash of the strings>, so a new build is a new URL. */
#ifndef PS5UPLOAD_WEBUI_STRINGS_H
#define PS5UPLOAD_WEBUI_STRINGS_H
#include <stddef.h>
typedef struct {
const char *lang; /* "de", "zh-CN": [a-z]{2} or [a-z]{2}-[A-Z]{2} */
const unsigned char *data; /* gzip of the language's {"cw_…":"…"} JSON */
size_t len;
} webui_strings_entry_t;
/* The generated table (build/webui_strings.c). */
extern const webui_strings_entry_t webui_strings_table[];
extern const size_t webui_strings_count;
/* The entry a request path "/strings/<lang>.json" names, or NULL: <lang> must be two lowercase
* letters, optionally "-" and two uppercase letters, and be in `tab`. Anything else ("../", other
* case, other suffixes, an empty or longer id) is NULL. */
const webui_strings_entry_t *webui_strings_find(const webui_strings_entry_t *tab, size_t n, const char *path);
#endif
+22 -6
View File
@@ -29,6 +29,7 @@
#include "webui_page.h"
#include "webui_server.h"
#include "webui_settings.h"
#include "webui_strings.h"
#include "webui_tile.h"
#define API_OUT_MAX (256u * 1024u) /* an AVA1 reply's ceiling (the server's RPC_OUT_MAX) */
@@ -953,18 +954,33 @@ static const struct {
* nosniff, final CRLF) is under 200 bytes, so the extra lines get at most 300. */
_Static_assert(sizeof(PAGE_HEADERS) <= 300, "PAGE_HEADERS must fit webui_send_ex's 512-byte head");
/* GET / and GET /api/token: the server checked Host/Origin but no token (is_api is 0 for both).
* Neither reaches a helper method, so they stay outside the in-flight RPC gate. The token goes
* out as JSON with no CORS headers: another site's page cannot read the reply, and loaded through
* a <script> tag it executes nothing. Never serve it as JavaScript. */
/* One language's strings (webui_strings.h): gzip'd JSON, cached for a year. The page asks with
* ?v=<hash of the strings> (the query is not read here), so every build is a new URL. */
#define STRINGS_HEADERS \
"Content-Encoding: gzip\r\n" \
"Cache-Control: public, max-age=31536000, immutable\r\n"
_Static_assert(sizeof(STRINGS_HEADERS) <= 300, "STRINGS_HEADERS must fit webui_send_ex's 512-byte head");
#define STRINGS_PREFIX "/strings/"
/* GET /, GET /api/token and GET /strings/<lang>.json: the server checked Host/Origin but no token
* (is_api is 0 for all three). None reaches a helper method, so they stay outside the in-flight RPC
* gate. The token goes out as JSON with no CORS headers: another site's page cannot read the reply,
* and loaded through a <script> tag it executes nothing. Never serve it as JavaScript. A strings
* path names one of the embedded languages exactly (webui_strings_find) or answers 404. */
static int serve_static(const webui_req_t *r, int fd) {
int page = strcmp(r->path, "/") == 0;
if (!page && strcmp(r->path, "/api/token") != 0) return 0;
int strings = strncmp(r->path, STRINGS_PREFIX, sizeof STRINGS_PREFIX - 1) == 0;
if (!page && !strings && strcmp(r->path, "/api/token") != 0) return 0;
if (strcmp(r->method, "GET") != 0) {
webui_send_json(fd, 405, "{\"error\":\"method_not_allowed\"}");
return 1;
}
if (page) {
if (strings) {
const webui_strings_entry_t *e = webui_strings_find(webui_strings_table, webui_strings_count, r->path);
if (!e) webui_send_json(fd, 404, "{\"error\":\"not_found\"}");
else webui_send_ex(fd, 200, "application/json", e->data, e->len, STRINGS_HEADERS);
} else if (page) {
webui_send_ex(fd, 200, "text/html; charset=utf-8", webui_page_gz, webui_page_gz_len, PAGE_HEADERS);
} else {
char tok[65], json[96];
+6 -3
View File
@@ -190,19 +190,22 @@ static const char *status_text(int status) {
int webui_http_head(char *out, size_t cap, int status, const char *content_type,
size_t body_len, const char *extra_headers) {
int n;
int n, own_cache;
size_t used;
if (!out || cap == 0) return -1;
/* no-store unless the extra headers carry their own Cache-Control line (the strings files). */
own_cache = extra_headers && (strncmp(extra_headers, "Cache-Control:", 14) == 0 ||
strstr(extra_headers, "\r\nCache-Control:") != NULL);
n = snprintf(out, cap,
"HTTP/1.1 %d %s\r\n"
"Content-Type: %s\r\n"
"Content-Length: %lu\r\n"
"Connection: close\r\n"
"Cache-Control: no-store\r\n"
"%s"
"X-Content-Type-Options: nosniff\r\n",
status, status_text(status),
content_type ? content_type : "application/octet-stream",
(unsigned long)body_len);
(unsigned long)body_len, own_cache ? "" : "Cache-Control: no-store\r\n");
if (n < 0 || (size_t)n >= cap) return -1;
used = (size_t)n;
if (extra_headers && *extra_headers) {
+28
View File
@@ -0,0 +1,28 @@
/* GET /strings/<lang>.json's lookup: see include/webui_strings.h. */
#include "webui_strings.h"
#include <string.h>
#define STRINGS_PREFIX "/strings/"
#define STRINGS_SUFFIX ".json"
static int lower(char c) { return c >= 'a' && c <= 'z'; }
static int upper(char c) { return c >= 'A' && c <= 'Z'; }
const webui_strings_entry_t *webui_strings_find(const webui_strings_entry_t *tab, size_t n, const char *path) {
const char *id;
size_t len, i;
if (!tab || !path || strncmp(path, STRINGS_PREFIX, sizeof STRINGS_PREFIX - 1) != 0) return NULL;
id = path + sizeof STRINGS_PREFIX - 1;
len = strlen(id);
if (len < sizeof STRINGS_SUFFIX - 1 || strcmp(id + len - (sizeof STRINGS_SUFFIX - 1), STRINGS_SUFFIX) != 0) return NULL;
len -= sizeof STRINGS_SUFFIX - 1;
/* ll or ll-RR, nothing else */
if (len != 2 && len != 5) return NULL;
if (!lower(id[0]) || !lower(id[1])) return NULL;
if (len == 5 && (id[2] != '-' || !upper(id[3]) || !upper(id[4]))) return NULL;
for (i = 0; i < n; i++) {
if (tab[i].lang && strlen(tab[i].lang) == len && memcmp(tab[i].lang, id, len) == 0) return &tab[i];
}
return NULL;
}
+14
View File
@@ -148,6 +148,20 @@ static void head_has_connection_close(void) {
CHECK(n > 0 && strstr(out, "404 Not Found") != NULL);
CHECK(strstr(out, "X-Foo: bar\r\n") != NULL);
CHECK(strstr(out, "Cache-Control: no-store\r\n") != NULL);
/* An own Cache-Control line replaces no-store (first line or a later one). */
n = webui_http_head(out, sizeof out, 200, "application/json", 9,
"Content-Encoding: gzip\r\nCache-Control: public, max-age=31536000, immutable\r\n");
CHECK(n > 0 && strstr(out, "no-store") == NULL);
CHECK(strstr(out, "Cache-Control: public, max-age=31536000, immutable\r\n") != NULL);
CHECK(strstr(out, "Content-Encoding: gzip\r\n") != NULL);
n = webui_http_head(out, sizeof out, 200, "application/json", 9, "Cache-Control: max-age=5\r\n");
CHECK(n > 0 && strstr(out, "no-store") == NULL && strstr(out, "Cache-Control: max-age=5\r\n") != NULL);
/* "Cache-Control" inside another header's value is not a Cache-Control line. */
n = webui_http_head(out, sizeof out, 200, "text/plain", 0, "X-Note: Cache-Control: nope\r\n");
CHECK(n > 0 && strstr(out, "Cache-Control: no-store\r\n") != NULL);
CHECK(webui_http_head(out, 20, 200, "text/plain", 1, NULL) == -1);
CHECK(webui_http_head(out, sizeof out, 200, NULL, 1, NULL) > 0);
}
+70
View File
@@ -0,0 +1,70 @@
/* Host-side tests for GET /strings/<lang>.json's lookup (webui_strings.c): only ll / ll-RR ids
* that are in the table resolve; traversal, other case, other suffixes and unknown ids do not.
* Build: see the root Makefile test-payload. */
#include <stdio.h>
#include <string.h>
#include "webui_strings.h"
static int failures = 0;
#define CHECK(expr) \
do { \
if (!(expr)) { \
fprintf(stderr, "FAIL line %d: %s\n", __LINE__, #expr); \
failures++; \
} \
} while (0)
static const unsigned char k_de[] = { 0x1f, 0x8b, 1 };
static const unsigned char k_zh[] = { 0x1f, 0x8b, 2 };
static const unsigned char k_pt[] = { 0x1f, 0x8b, 3 };
static const webui_strings_entry_t k_tab[] = {
{ "de", k_de, sizeof k_de },
{ "zh-CN", k_zh, sizeof k_zh },
{ "pt-BR", k_pt, sizeof k_pt },
};
#define N (sizeof k_tab / sizeof k_tab[0])
static const webui_strings_entry_t *find(const char *p) { return webui_strings_find(k_tab, N, p); }
static void known_languages_resolve(void) {
CHECK(find("/strings/de.json") == &k_tab[0]);
CHECK(find("/strings/zh-CN.json") == &k_tab[1]);
CHECK(find("/strings/pt-BR.json") == &k_tab[2]);
CHECK(find("/strings/de.json")->len == 3);
}
static void unknown_or_malformed_ids_do_not(void) {
static const char *bad[] = {
"/strings/fr.json", /* well-formed, not in the table */
"/strings/en.json", /* English lives in the page */
"/strings/DE.json", "/strings/zh-cn.json", "/strings/ZH-CN.json", "/strings/zh_CN.json",
"/strings/../de.json", "/strings/..%2fde.json", "/strings/de/../de.json", "/strings//de.json",
"/strings/de.json/", "/strings/de.jsonx", "/strings/de.JSON", "/strings/de", "/strings/.json",
"/strings/", "/strings", "/strings/d.json", "/strings/deu.json", "/strings/zh-CNN.json",
"/strings/zh-C.json", "/strings/de.json.gz", "/strings/de\x01.json", "strings/de.json",
"/Strings/de.json", "/api/strings/de.json", "//strings/de.json", "/strings/zh-CN.json\x80", "",
};
size_t i;
for (i = 0; i < sizeof bad / sizeof bad[0]; i++) {
if (find(bad[i]) != NULL) {
fprintf(stderr, "FAIL: \"%s\" resolved\n", bad[i]);
failures++;
}
}
CHECK(webui_strings_find(k_tab, N, NULL) == NULL);
CHECK(webui_strings_find(NULL, 0, "/strings/de.json") == NULL);
CHECK(webui_strings_find(k_tab, 0, "/strings/de.json") == NULL);
}
int main(void) {
known_languages_resolve();
unknown_or_malformed_ids_do_not();
if (failures) {
fprintf(stderr, "webui_strings_selftest: %d failure(s)\n", failures);
return 1;
}
printf("webui_strings_selftest: ok\n");
return 0;
}
+30 -15
View File
@@ -1,13 +1,15 @@
#!/usr/bin/env node
/*
* The console web page's translations: every `cw_*` key from all 21 locale
* files under client/src/i18n/locales/, written to
* client/src/console/strings.gen.json as { "<locale>": { "cw_…": "…" } }.
* files under client/src/i18n/locales/, written one file per locale to
* client/src/console/locales/<locale>.json as { "cw_…": "…" }.
*
* The page (client/src/console/strings.ts) imports that JSON instead of the
* PC app's locale modules, so it ships only its own strings. `npm run
* build:console` runs this first; the file is committed so typecheck and
* tests work without a build, and strings.test.ts fails when it is stale.
* The page (client/src/console/strings.ts) embeds only en.json; the build
* (vite.console.config.ts, consoleStrings) emits every other locale as
* dist-console/strings/<locale>.json, which payload/Makefile gzips into the
* helper and the page fetches from GET /strings/<locale>.json. `npm run
* build:console` runs this first; the files are committed so typecheck and
* tests work without a build, and strings.test.ts fails when they are stale.
*
* Locale files are read the way scripts/i18n-coverage.mjs reads them: the
* `const <id>: Translations = { … }` literal evaluated in an isolated vm
@@ -24,7 +26,7 @@ import { fileURLToPath } from "node:url";
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
const LOCALES_DIR = path.join(repoRoot, "client/src/i18n/locales");
const OUT_PATH = path.join(repoRoot, "client/src/console/strings.gen.json");
const OUT_DIR = path.join(repoRoot, "client/src/console/locales");
const PREFIX = "cw_";
function loadLocale(fp) {
@@ -57,20 +59,33 @@ export function extractConsoleStrings() {
return out;
}
/** { "<locale>.json": file text } for every locale, as committed under OUT_DIR. */
export function consoleStringFiles() {
const out = {};
for (const [code, map] of Object.entries(extractConsoleStrings())) {
out[`${code}.json`] = `${JSON.stringify(map, null, 2)}\n`;
}
return out;
}
function main() {
const text = `${JSON.stringify(extractConsoleStrings(), null, 2)}\n`;
const old = fs.existsSync(OUT_PATH) ? fs.readFileSync(OUT_PATH, "utf8") : null;
const want = consoleStringFiles();
const have = fs.existsSync(OUT_DIR) ? fs.readdirSync(OUT_DIR).filter((f) => f.endsWith(".json")) : [];
const stale = Object.keys(want).filter((f) => !have.includes(f) || fs.readFileSync(path.join(OUT_DIR, f), "utf8") !== want[f]);
const extra = have.filter((f) => !(f in want));
if (process.argv.includes("--check")) {
if (old !== text) {
console.error(`${path.relative(repoRoot, OUT_PATH)} is stale: run node scripts/build-console-strings.mjs`);
if (stale.length || extra.length) {
console.error(`${path.relative(repoRoot, OUT_DIR)} is stale (${[...stale, ...extra].join(", ")}): run node scripts/build-console-strings.mjs`);
process.exit(1);
}
return;
}
// Rewrite only on a change, so the payload's make rule does not see a new mtime for nothing.
if (old !== text) fs.writeFileSync(OUT_PATH, text);
const n = Object.keys(JSON.parse(text).en).length;
console.log(`console strings: ${n} keys × ${Object.keys(JSON.parse(text)).length} locales`);
// Rewrite only what changed, so the payload's make rule does not see a new mtime for nothing.
fs.mkdirSync(OUT_DIR, { recursive: true });
for (const f of stale) fs.writeFileSync(path.join(OUT_DIR, f), want[f]);
for (const f of extra) fs.unlinkSync(path.join(OUT_DIR, f));
const n = Object.keys(JSON.parse(want["en.json"])).length;
console.log(`console strings: ${n} keys × ${Object.keys(want).length} locales`);
}
if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) main();
+60
View File
@@ -0,0 +1,60 @@
#!/usr/bin/env node
/*
* Embeds the console page's per-language strings in the helper: every
* <dir>/<lang>.json (client/dist-console/strings/, written by
* `npm run build:console`) gzip'd at level 9 (no name, mtime 0, so the output
* is reproducible) into one C file with the table webui_strings.h declares:
* { "<lang>", <gzip bytes>, <length> }, sorted by language.
* payload/Makefile runs it after the page build; the helper serves each entry
* at GET /strings/<lang>.json (webui_api.c).
*
* Usage: node scripts/embed-console-strings.mjs <strings dir> <out.c>
*/
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { gzipSync } from "node:zlib";
const LANG_RE = /^[a-z]{2}(-[A-Z]{2})?$/;
/** The C source for { lang: json text }. */
export function stringsTableC(files) {
const langs = Object.keys(files).sort();
if (langs.length === 0) throw new Error("embed-console-strings: no strings files");
const out = [
"/* Generated by scripts/embed-console-strings.mjs from client/dist-console/strings: do not edit. */",
'#include "webui_strings.h"',
"",
];
langs.forEach((lang, i) => {
if (!LANG_RE.test(lang)) throw new Error(`embed-console-strings: "${lang}" is not <ll> or <ll>-<RR>`);
const gz = gzipSync(Buffer.from(files[lang], "utf8"), { level: 9 });
const rows = [];
for (let at = 0; at < gz.length; at += 16) {
rows.push(` ${Array.from(gz.subarray(at, at + 16), (b) => `0x${b.toString(16).padStart(2, "0")}`).join(", ")},`);
}
out.push(`static const unsigned char s_${i}[] = { /* ${lang}: ${gz.length} bytes */`, ...rows, "};");
});
out.push("", "const webui_strings_entry_t webui_strings_table[] = {");
langs.forEach((lang, i) => out.push(` { "${lang}", s_${i}, sizeof s_${i} },`));
out.push("};", "const size_t webui_strings_count = sizeof webui_strings_table / sizeof webui_strings_table[0];", "");
return out.join("\n");
}
function main() {
const [dir, outPath] = process.argv.slice(2);
if (!dir || !outPath) {
console.error("usage: node scripts/embed-console-strings.mjs <strings dir> <out.c>");
process.exit(2);
}
const files = {};
for (const f of fs.readdirSync(dir).filter((n) => n.endsWith(".json"))) {
files[f.slice(0, -".json".length)] = fs.readFileSync(path.join(dir, f), "utf8");
}
const c = stringsTableC(files);
fs.writeFileSync(`${outPath}.tmp`, c);
fs.renameSync(`${outPath}.tmp`, outPath);
console.log(`console strings embedded: ${Object.keys(files).length} languages`);
}
if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) main();
+1 -1
View File
@@ -183,7 +183,7 @@ function loadEnKeys() {
/** The console web page (client/src/console/) passes its `cw_*` keys around in
* tables (`labelKey: "cw_nav_home"`, hint labels) and resolves them with
* `t(labelKey)`, so in that tree any quoted `cw_*` literal counts as a use. Its
* generated strings.gen.json is not scanned (only .ts/.tsx are). */
* generated locales/<code>.json files are not scanned (only .ts/.tsx are). */
const CONSOLE_ROOT = path.join(SRC_ROOT, "console") + path.sep;
function extractConsoleKeys(file, content) {
const keys = new Set();