mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
feat: add translations for permission sections and actions
Translate all permission section names (users, tickets, etc.) and action names (read, edit, delete, etc.) in ru/en/zh/fa locales. Apply translations in PermissionMatrix, PolicyEdit, and Policies list.
This commit is contained in:
@@ -2571,6 +2571,55 @@
|
|||||||
"color": "Color",
|
"color": "Color",
|
||||||
"presets": "Permission presets",
|
"presets": "Permission presets",
|
||||||
"permissions": "Permissions",
|
"permissions": "Permissions",
|
||||||
|
"permissionSections": {
|
||||||
|
"users": "Users",
|
||||||
|
"tickets": "Tickets",
|
||||||
|
"stats": "Statistics",
|
||||||
|
"broadcasts": "Broadcasts",
|
||||||
|
"tariffs": "Tariffs",
|
||||||
|
"promocodes": "Promo codes",
|
||||||
|
"promo_groups": "Promo groups",
|
||||||
|
"promo_offers": "Promo offers",
|
||||||
|
"campaigns": "Campaigns",
|
||||||
|
"partners": "Partners",
|
||||||
|
"withdrawals": "Withdrawals",
|
||||||
|
"payments": "Payments",
|
||||||
|
"payment_methods": "Payment methods",
|
||||||
|
"servers": "Servers",
|
||||||
|
"remnawave": "Remnawave",
|
||||||
|
"traffic": "Traffic",
|
||||||
|
"settings": "Settings",
|
||||||
|
"roles": "Roles",
|
||||||
|
"audit_log": "Audit log",
|
||||||
|
"channels": "Channels",
|
||||||
|
"ban_system": "Ban system",
|
||||||
|
"wheel": "Lucky wheel",
|
||||||
|
"apps": "Apps",
|
||||||
|
"email_templates": "Email templates",
|
||||||
|
"pinned_messages": "Pinned messages",
|
||||||
|
"updates": "Updates"
|
||||||
|
},
|
||||||
|
"permissionActions": {
|
||||||
|
"read": "Read",
|
||||||
|
"edit": "Edit",
|
||||||
|
"create": "Create",
|
||||||
|
"delete": "Delete",
|
||||||
|
"block": "Block",
|
||||||
|
"sync": "Sync",
|
||||||
|
"reply": "Reply",
|
||||||
|
"close": "Close",
|
||||||
|
"settings": "Settings",
|
||||||
|
"export": "Export",
|
||||||
|
"send": "Send",
|
||||||
|
"stats": "Stats",
|
||||||
|
"approve": "Approve",
|
||||||
|
"revoke": "Revoke",
|
||||||
|
"reject": "Reject",
|
||||||
|
"manage": "Manage",
|
||||||
|
"ban": "Ban",
|
||||||
|
"unban": "Unban",
|
||||||
|
"assign": "Assign"
|
||||||
|
},
|
||||||
"toggleSection": "Toggle all {{section}} permissions",
|
"toggleSection": "Toggle all {{section}} permissions",
|
||||||
"selectedPermissions_one": "{{count}} permission selected",
|
"selectedPermissions_one": "{{count}} permission selected",
|
||||||
"selectedPermissions_other": "{{count}} permissions selected",
|
"selectedPermissions_other": "{{count}} permissions selected",
|
||||||
|
|||||||
@@ -2360,6 +2360,55 @@
|
|||||||
"color": "رنگ",
|
"color": "رنگ",
|
||||||
"presets": "الگوهای مجوز",
|
"presets": "الگوهای مجوز",
|
||||||
"permissions": "مجوزها",
|
"permissions": "مجوزها",
|
||||||
|
"permissionSections": {
|
||||||
|
"users": "کاربران",
|
||||||
|
"tickets": "تیکتها",
|
||||||
|
"stats": "آمار",
|
||||||
|
"broadcasts": "پیامهای همگانی",
|
||||||
|
"tariffs": "تعرفهها",
|
||||||
|
"promocodes": "کدهای تخفیف",
|
||||||
|
"promo_groups": "گروههای تبلیغاتی",
|
||||||
|
"promo_offers": "پیشنهادات تبلیغاتی",
|
||||||
|
"campaigns": "کمپینها",
|
||||||
|
"partners": "شرکا",
|
||||||
|
"withdrawals": "برداشتها",
|
||||||
|
"payments": "پرداختها",
|
||||||
|
"payment_methods": "روشهای پرداخت",
|
||||||
|
"servers": "سرورها",
|
||||||
|
"remnawave": "Remnawave",
|
||||||
|
"traffic": "ترافیک",
|
||||||
|
"settings": "تنظیمات",
|
||||||
|
"roles": "نقشها",
|
||||||
|
"audit_log": "گزارش حسابرسی",
|
||||||
|
"channels": "کانالها",
|
||||||
|
"ban_system": "سیستم مسدودسازی",
|
||||||
|
"wheel": "چرخ شانس",
|
||||||
|
"apps": "برنامهها",
|
||||||
|
"email_templates": "قالبهای ایمیل",
|
||||||
|
"pinned_messages": "پیامهای سنجاقشده",
|
||||||
|
"updates": "بهروزرسانیها"
|
||||||
|
},
|
||||||
|
"permissionActions": {
|
||||||
|
"read": "خواندن",
|
||||||
|
"edit": "ویرایش",
|
||||||
|
"create": "ایجاد",
|
||||||
|
"delete": "حذف",
|
||||||
|
"block": "مسدودسازی",
|
||||||
|
"sync": "همگامسازی",
|
||||||
|
"reply": "پاسخ",
|
||||||
|
"close": "بستن",
|
||||||
|
"settings": "تنظیمات",
|
||||||
|
"export": "خروجی",
|
||||||
|
"send": "ارسال",
|
||||||
|
"stats": "آمار",
|
||||||
|
"approve": "تأیید",
|
||||||
|
"revoke": "لغو",
|
||||||
|
"reject": "رد",
|
||||||
|
"manage": "مدیریت",
|
||||||
|
"ban": "مسدود کردن",
|
||||||
|
"unban": "رفع مسدودیت",
|
||||||
|
"assign": "اختصاص"
|
||||||
|
},
|
||||||
"toggleSection": "تغییر وضعیت تمام مجوزهای {{section}}",
|
"toggleSection": "تغییر وضعیت تمام مجوزهای {{section}}",
|
||||||
"selectedPermissions_other": "{{count}} مجوز انتخاب شده",
|
"selectedPermissions_other": "{{count}} مجوز انتخاب شده",
|
||||||
"cancel": "لغو",
|
"cancel": "لغو",
|
||||||
|
|||||||
@@ -3119,6 +3119,55 @@
|
|||||||
"color": "Цвет",
|
"color": "Цвет",
|
||||||
"presets": "Шаблоны прав",
|
"presets": "Шаблоны прав",
|
||||||
"permissions": "Разрешения",
|
"permissions": "Разрешения",
|
||||||
|
"permissionSections": {
|
||||||
|
"users": "Пользователи",
|
||||||
|
"tickets": "Тикеты",
|
||||||
|
"stats": "Статистика",
|
||||||
|
"broadcasts": "Рассылки",
|
||||||
|
"tariffs": "Тарифы",
|
||||||
|
"promocodes": "Промокоды",
|
||||||
|
"promo_groups": "Промо-группы",
|
||||||
|
"promo_offers": "Промо-предложения",
|
||||||
|
"campaigns": "Кампании",
|
||||||
|
"partners": "Партнёры",
|
||||||
|
"withdrawals": "Выводы средств",
|
||||||
|
"payments": "Платежи",
|
||||||
|
"payment_methods": "Методы оплаты",
|
||||||
|
"servers": "Серверы",
|
||||||
|
"remnawave": "Remnawave",
|
||||||
|
"traffic": "Трафик",
|
||||||
|
"settings": "Настройки",
|
||||||
|
"roles": "Роли",
|
||||||
|
"audit_log": "Журнал аудита",
|
||||||
|
"channels": "Каналы",
|
||||||
|
"ban_system": "Система банов",
|
||||||
|
"wheel": "Колесо фортуны",
|
||||||
|
"apps": "Приложения",
|
||||||
|
"email_templates": "Шаблоны писем",
|
||||||
|
"pinned_messages": "Закреплённые сообщения",
|
||||||
|
"updates": "Обновления"
|
||||||
|
},
|
||||||
|
"permissionActions": {
|
||||||
|
"read": "Чтение",
|
||||||
|
"edit": "Редактирование",
|
||||||
|
"create": "Создание",
|
||||||
|
"delete": "Удаление",
|
||||||
|
"block": "Блокировка",
|
||||||
|
"sync": "Синхронизация",
|
||||||
|
"reply": "Ответ",
|
||||||
|
"close": "Закрытие",
|
||||||
|
"settings": "Настройки",
|
||||||
|
"export": "Экспорт",
|
||||||
|
"send": "Отправка",
|
||||||
|
"stats": "Статистика",
|
||||||
|
"approve": "Одобрение",
|
||||||
|
"revoke": "Отзыв",
|
||||||
|
"reject": "Отклонение",
|
||||||
|
"manage": "Управление",
|
||||||
|
"ban": "Бан",
|
||||||
|
"unban": "Разбан",
|
||||||
|
"assign": "Назначение"
|
||||||
|
},
|
||||||
"toggleSection": "Переключить все права {{section}}",
|
"toggleSection": "Переключить все права {{section}}",
|
||||||
"selectedPermissions_one": "{{count}} разрешение выбрано",
|
"selectedPermissions_one": "{{count}} разрешение выбрано",
|
||||||
"selectedPermissions_few": "{{count}} разрешения выбрано",
|
"selectedPermissions_few": "{{count}} разрешения выбрано",
|
||||||
|
|||||||
@@ -2359,6 +2359,55 @@
|
|||||||
"color": "颜色",
|
"color": "颜色",
|
||||||
"presets": "权限预设",
|
"presets": "权限预设",
|
||||||
"permissions": "权限",
|
"permissions": "权限",
|
||||||
|
"permissionSections": {
|
||||||
|
"users": "用户",
|
||||||
|
"tickets": "工单",
|
||||||
|
"stats": "统计",
|
||||||
|
"broadcasts": "广播",
|
||||||
|
"tariffs": "套餐",
|
||||||
|
"promocodes": "促销码",
|
||||||
|
"promo_groups": "促销组",
|
||||||
|
"promo_offers": "促销优惠",
|
||||||
|
"campaigns": "推广活动",
|
||||||
|
"partners": "合作伙伴",
|
||||||
|
"withdrawals": "提现",
|
||||||
|
"payments": "支付",
|
||||||
|
"payment_methods": "支付方式",
|
||||||
|
"servers": "服务器",
|
||||||
|
"remnawave": "Remnawave",
|
||||||
|
"traffic": "流量",
|
||||||
|
"settings": "设置",
|
||||||
|
"roles": "角色",
|
||||||
|
"audit_log": "审计日志",
|
||||||
|
"channels": "频道",
|
||||||
|
"ban_system": "封禁系统",
|
||||||
|
"wheel": "幸运转盘",
|
||||||
|
"apps": "应用",
|
||||||
|
"email_templates": "邮件模板",
|
||||||
|
"pinned_messages": "置顶消息",
|
||||||
|
"updates": "更新"
|
||||||
|
},
|
||||||
|
"permissionActions": {
|
||||||
|
"read": "读取",
|
||||||
|
"edit": "编辑",
|
||||||
|
"create": "创建",
|
||||||
|
"delete": "删除",
|
||||||
|
"block": "封锁",
|
||||||
|
"sync": "同步",
|
||||||
|
"reply": "回复",
|
||||||
|
"close": "关闭",
|
||||||
|
"settings": "设置",
|
||||||
|
"export": "导出",
|
||||||
|
"send": "发送",
|
||||||
|
"stats": "统计",
|
||||||
|
"approve": "批准",
|
||||||
|
"revoke": "撤销",
|
||||||
|
"reject": "拒绝",
|
||||||
|
"manage": "管理",
|
||||||
|
"ban": "封禁",
|
||||||
|
"unban": "解封",
|
||||||
|
"assign": "分配"
|
||||||
|
},
|
||||||
"toggleSection": "切换所有 {{section}} 权限",
|
"toggleSection": "切换所有 {{section}} 权限",
|
||||||
"selectedPermissions_other": "已选择 {{count}} 个权限",
|
"selectedPermissions_other": "已选择 {{count}} 个权限",
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
|
|||||||
@@ -360,12 +360,17 @@ export default function AdminPolicies() {
|
|||||||
|
|
||||||
{/* Resource + actions */}
|
{/* Resource + actions */}
|
||||||
<div className="mb-2 flex flex-wrap items-center gap-2 text-sm">
|
<div className="mb-2 flex flex-wrap items-center gap-2 text-sm">
|
||||||
<span className="rounded bg-dark-700 px-2 py-0.5 font-mono text-xs text-accent-400">
|
<span className="rounded bg-dark-700 px-2 py-0.5 text-xs text-accent-400">
|
||||||
{policy.resource}
|
{t(
|
||||||
|
`admin.roles.form.permissionSections.${policy.resource}`,
|
||||||
|
policy.resource,
|
||||||
|
)}
|
||||||
</span>
|
</span>
|
||||||
<span className="text-dark-500">:</span>
|
<span className="text-dark-500">:</span>
|
||||||
<span className="font-mono text-xs text-dark-300">
|
<span className="text-xs text-dark-300">
|
||||||
{(policy.actions ?? []).join(', ')}
|
{(policy.actions ?? [])
|
||||||
|
.map((a) => t(`admin.roles.form.permissionActions.${a}`, a))
|
||||||
|
.join(', ')}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ export default function AdminPolicyEdit() {
|
|||||||
<option value="">{t('admin.policies.form.selectResource')}</option>
|
<option value="">{t('admin.policies.form.selectResource')}</option>
|
||||||
{permissionRegistry?.map((section) => (
|
{permissionRegistry?.map((section) => (
|
||||||
<option key={section.section} value={section.section}>
|
<option key={section.section} value={section.section}>
|
||||||
{section.section}
|
{t(`admin.roles.form.permissionSections.${section.section}`, section.section)}
|
||||||
</option>
|
</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
@@ -500,7 +500,7 @@ export default function AdminPolicyEdit() {
|
|||||||
}`}
|
}`}
|
||||||
aria-pressed={selected}
|
aria-pressed={selected}
|
||||||
>
|
>
|
||||||
{action}
|
{t(`admin.roles.form.permissionActions.${action}`, action)}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|||||||
@@ -174,7 +174,9 @@ function PermissionMatrix({
|
|||||||
onClick={() => toggleExpand(section.section)}
|
onClick={() => toggleExpand(section.section)}
|
||||||
className="flex flex-1 items-center justify-between"
|
className="flex flex-1 items-center justify-between"
|
||||||
>
|
>
|
||||||
<span className="text-sm font-medium text-dark-200">{section.section}</span>
|
<span className="text-sm font-medium text-dark-200">
|
||||||
|
{t(`admin.roles.form.permissionSections.${section.section}`, section.section)}
|
||||||
|
</span>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<span className="text-xs text-dark-500">
|
<span className="text-xs text-dark-500">
|
||||||
{section.actions.filter((a) => isPermSelected(section.section, a)).length}/
|
{section.actions.filter((a) => isPermSelected(section.section, a)).length}/
|
||||||
@@ -208,7 +210,7 @@ function PermissionMatrix({
|
|||||||
}`}
|
}`}
|
||||||
aria-pressed={selected}
|
aria-pressed={selected}
|
||||||
>
|
>
|
||||||
{action}
|
{t(`admin.roles.form.permissionActions.${action}`, action)}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|||||||
Reference in New Issue
Block a user