feat(frontend): i18n expansion, admin/profile i18n, grid/list view fix, empty state

- Add 5 new locales (hi, ar, ru, ja, ko) — now 14 total
- Admin panel: 117 i18n keys, confirm modal, animated tabs, no inline handlers
- Profile page: 58 i18n keys with data-i18n attributes
- Fix i18n safeT() shadowing bug and translationsLoaded timing
- Fix grid/list view: list header no longer shows in grid mode on login
- Fix classList.toggle hidden sync for view switching across all nav functions
- Revert .hidden important that broke login page rendering
- Add files empty state (no_files + empty_hint) with translations
- Fix language selector dropdown scroll and styling
- Fix admin panel scroll with sticky tabs
This commit is contained in:
Diocrafts
2026-03-09 00:08:34 +01:00
parent f409a9edd7
commit df336da679
43 changed files with 6645 additions and 2043 deletions
+185 -4
View File
@@ -180,6 +180,8 @@
"size": "اندازه",
"modified": "تاریخ تغییر",
"no_files": "هنوز هیچ پرونده‌ای در این پوشه وجود ندارد",
"empty_hint": "برای شروع، فایل‌ها را آپلود کنید یا پوشه بسازید",
"loading": "در حال بارگذاری فایل‌ها…",
"view_grid": "نمای شبکه‌ای",
"view_list": "نمای فهرستی",
"file_types": {
@@ -213,7 +215,7 @@
"share_file": "هم‌رسانی پرونده",
"existing_shares": "هم‌رسانی موجود",
"share_options": "گزینه‌های هم‌رسانی",
"password": "گذرواژه",
"password": "گذرواژه",
"expiration": "تاریخ انقضا",
"permissions": "دسترسی‌ها",
"generated_link": "پیوند تولید شده",
@@ -303,8 +305,8 @@
"zoom_reset": "بازنشانی بزرگ‌نمایی"
},
"language_selector": {
"title": "خوش آمدید به OxiCloud",
"subtitle": "لطفا زبان خود را انتخاب کنید",
"title": "!خوش آمدید",
"subtitle": "زبان خود را برای ادامه انتخاب کنید",
"continue": "ادامه",
"languages": {
"en": "English",
@@ -340,5 +342,184 @@
"move_title": "انتقال {{count}} مورد",
"add_favorites": "افزودن به موارد علاقه‌مند",
"move_copy": "انتقال یا کپی"
},
"admin": {
"page_title": "پنل مدیریت",
"back_to_app": "بازگشت به OxiCloud",
"loading": "در حال بارگذاری…",
"access_denied": "دسترسی ممنوع",
"access_denied_desc": "امتیازات مدیر لازم است.",
"sign_in": "ورود",
"tab_dashboard": "داشبورد",
"tab_users": "کاربران",
"tab_oidc": "SSO / OIDC",
"total_users": "کل کاربران",
"active_users": "کاربران فعال",
"admins": "مدیران",
"version": "نسخه",
"storage_overview": "نمای کلی فضا",
"used": "استفاده شده",
"total_quota": "سهمیه کل",
"usage_pct": "درصد استفاده",
"users_over_80": "کاربران بالای ۸۰٪",
"users_over_quota": "کاربران بالای سهمیه",
"system": "سیستم",
"auth_label": "احراز هویت",
"oidc_label": "OIDC",
"quotas_label": "سهمیه‌ها",
"enabled": "فعال",
"disabled": "غیرفعال",
"active": "فعال",
"off": "خاموش",
"allow_registration": "اجازه ثبت‌نام عمومی",
"registration_warning": "ثبت‌نام عمومی غیرفعال است. فقط مدیران می‌توانند کاربر جدید بسازند.",
"user_management": "مدیریت کاربران",
"create_user": "ایجاد کاربر",
"col_user": "کاربر",
"col_role": "نقش",
"col_auth": "احراز هویت",
"col_status": "وضعیت",
"col_storage": "فضا",
"col_last_login": "آخرین ورود",
"col_actions": "عملیات",
"loading_users": "در حال بارگذاری…",
"failed_load_users": "خطا در بارگذاری",
"no_users_found": "کاربری یافت نشد",
"showing_users": "نمایش {{from}}-{{to}} از {{total}}",
"prev": "قبلی",
"next": "بعدی",
"inactive": "غیرفعال",
"you_badge": "(شما)",
"local": "محلی",
"never": "هرگز",
"just_now": "همین الان",
"minutes_ago": "{{n}} دقیقه پیش",
"hours_ago": "{{n}} ساعت پیش",
"days_ago": "{{n}} روز پیش",
"edit_quota_title": "ویرایش سهمیه",
"reset_password_title": "بازنشانی رمز",
"toggle_role_title": "تغییر نقش",
"deactivate_title": "غیرفعال کردن",
"activate_title": "فعال کردن",
"delete_title": "حذف",
"sso_title": "ورود یکپارچه (OIDC / SSO)",
"enable_sso": "فعال‌سازی SSO",
"provider_name": "نام ارائه‌دهنده",
"issuer_url": "آدرس صادرکننده",
"issuer_url_hint": "آدرس صادرکننده OpenID Connect",
"auto_discover": "کشف خودکار",
"discovering": "در حال کشف…",
"client_id": "شناسه مشتری",
"client_secret": "رمز مشتری",
"client_secret_placeholder": "خالی بگذارید تا مقدار فعلی حفظ شود",
"secret_configured": "رمز مشتری قبلاً پیکربندی شده",
"callback_url": "آدرس بازگشت",
"callback_url_hint": "(در IdP ثبت کنید)",
"advanced_settings": "تنظیمات پیشرفته",
"scopes": "محدوده‌ها",
"auto_provision": "تامین خودکار کاربران",
"admin_groups": "گروه‌های مدیر",
"admin_groups_hint": "نام گروه‌های OIDC جدا شده با کاما",
"disable_password": "غیرفعال‌سازی ورود با رمز (فقط OIDC)",
"password_warning": "تمام ورودهای رمزی متوقف می‌شود!",
"test_btn": "آزمایش",
"save_btn": "ذخیره",
"saving": "در حال ذخیره…",
"settings_saved": "تنظیمات ذخیره شد — OIDC اکنون {{status}}",
"quota_modal_title": "به‌روزرسانی سهمیه",
"quota_user_label": "کاربر:",
"new_quota": "سهمیه جدید",
"quota_unlimited_hint": "۰ برای نامحدود",
"cancel": "انصراف",
"create_user_title": "ایجاد کاربر جدید",
"username_label": "نام کاربری",
"username_placeholder": "نام‌کاربری",
"username_hint": "۳ تا ۳۲ کاراکتر",
"password_label": "رمز عبور",
"password_placeholder": "حداقل ۸ کاراکتر",
"email_label": "ایمیل",
"email_optional": "(اختیاری)",
"email_placeholder": "user@example.com (خودکار اگر خالی)",
"role_label": "نقش",
"role_user": "کاربر",
"role_admin": "مدیر",
"quota_label": "سهمیه",
"creating": "در حال ایجاد…",
"reset_pw_title": "بازنشانی رمز عبور",
"new_password_label": "رمز عبور جدید",
"resetting": "در حال بازنشانی…",
"reset_btn": "بازنشانی",
"confirm_role_change": "نقش به {{role}} تغییر یابد؟",
"confirm_deactivate": "آیا از غیرفعال‌سازی این کاربر مطمئنید؟",
"confirm_activate": "آیا از فعال‌سازی این کاربر مطمئنید؟",
"confirm_delete_user": "کاربر «{{name}}» حذف شود؟ قابل بازگشت نیست!",
"confirm_action": "تأیید عملیات",
"confirm_yes": "تأیید",
"confirm_no": "انصراف",
"error_username_short": "نام کاربری حداقل ۳ کاراکتر",
"error_password_short": "رمز عبور حداقل ۸ کاراکتر",
"error_generic": "خطا",
"error_network": "خطای شبکه: {{message}}",
"error_create_user": "خطا در ایجاد کاربر"
},
"profile": {
"page_title": "پروفایل",
"back_to_app": "بازگشت به OxiCloud",
"loading": "در حال بارگذاری…",
"not_authenticated": "احراز هویت نشده",
"not_authenticated_desc": "برای مشاهده پروفایل وارد شوید.",
"sign_in": "ورود",
"role_admin": "مدیر",
"role_user": "کاربر",
"account_details": "جزئیات حساب",
"username": "نام کاربری",
"email": "ایمیل",
"role": "نقش",
"last_login": "آخرین ورود",
"storage": "فضای ذخیره‌سازی",
"used": "استفاده شده",
"quota": "سهمیه",
"usage": "مصرف",
"unlimited": "نامحدود",
"app_passwords": "رمزهای برنامه",
"app_pw_desc": "رمزهایی برای کلاینت‌های WebDAV، CalDAV و CardDAV ایجاد کنید. هر رمز فقط یک بار نمایش داده می‌شود.",
"app_pw_label_placeholder": "برچسب (مثلاً Thunderbird، macOS)",
"generate": "ایجاد",
"generating": "در حال ایجاد…",
"new_password_for": "رمز جدید برای",
"copy_warning": "این رمز را اکنون کپی کنید. دوباره قابل مشاهده نیست.",
"copy_to_clipboard": "کپی به کلیپ‌بورد",
"col_label": "برچسب",
"col_created": "ایجاد شده",
"col_last_used": "آخرین استفاده",
"col_status": "وضعیت",
"active": "فعال",
"revoked": "ابطال شده",
"revoke_title": "ابطال",
"no_app_passwords": "هنوز رمز برنامه‌ای وجود ندارد.",
"client_sessions": "نشست‌های کلاینت",
"client_sessions_desc": "هنگام اتصال کلاینت سازگار با Nextcloud به صورت خودکار ایجاد می‌شود.",
"col_client": "کلاینت",
"never": "هرگز",
"just_now": "همین الان",
"minutes_ago": "{{n}} دقیقه پیش",
"hours_ago": "{{n}} ساعت پیش",
"days_ago": "{{n}} روز پیش",
"change_password": "تغییر رمز عبور",
"current_password": "رمز فعلی",
"new_password": "رمز جدید",
"min_8_chars": "حداقل ۸ کاراکتر",
"confirm_password": "تأیید رمز جدید",
"update_password": "به‌روزرسانی رمز",
"updating": "در حال به‌روزرسانی…",
"password_updated": "رمز عبور با موفقیت به‌روز شد",
"passwords_no_match": "رمزها مطابقت ندارند",
"password_too_short": "رمز باید حداقل ۸ کاراکتر باشد",
"password_change_failed": "تغییر رمز ناموفق بود",
"error_network": "خطای شبکه: {{message}}",
"error_label_required": "لطفاً برچسب وارد کنید",
"error_create_pw": "ایجاد رمز ناموفق بود",
"confirm_revoke": "رمز «{{label}}» ابطال شود؟ کلاینت‌ها از کار می‌افتند.",
"error_revoke": "ابطال ناموفق بود"
}
}
}