mirror of
https://github.com/phantomptr/ps5upload.git
synced 2026-10-19 02:20:02 -05:00
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:
1 parent
4d7575ec3b
commit
d435ac27db
41 files changed
+5522
-4952
No files matched your search
@@ -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 \
|
||||
|
||||
Vendored
+2
@@ -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;
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
@@ -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
@@ -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) ..."
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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];
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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();
|
||||
@@ -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();
|
||||
@@ -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();
|
||||
|
||||
Reference in new issue
Block a user