🐛 fix: Add copy subscription functionality to user subscription dashboard and improve localization for new features

This commit is contained in:
web 2025-09-14 23:09:59 -07:00
parent 1d52642cb7
commit e2a357fea7
30 changed files with 137 additions and 63 deletions

View File

@ -1,77 +1,74 @@
<a name="readme-top"></a> <a name="readme-top"></a>
# Changelog # Changelog
# [1.4.0](https://github.com/perfect-panel/ppanel-web/compare/v1.3.0...v1.4.0) (2025-09-14) # [1.4.0](https://github.com/perfect-panel/ppanel-web/compare/v1.3.0...v1.4.0) (2025-09-14)
### ♻ Code Refactoring ### ♻ Code Refactoring
* **logs**: Add localization files and update existing translations for multiple languages ([2f20ac9](https://github.com/perfect-panel/ppanel-web/commit/2f20ac9)) - **logs**: Add localization files and update existing translations for multiple languages ([2f20ac9](https://github.com/perfect-panel/ppanel-web/commit/2f20ac9))
* **subscribe-form**: Replace server_group and server with node_tags and nodes in default values and form schema ([38dda84](https://github.com/perfect-panel/ppanel-web/commit/38dda84)) - **subscribe-form**: Replace server_group and server with node_tags and nodes in default values and form schema ([38dda84](https://github.com/perfect-panel/ppanel-web/commit/38dda84))
* Add localization updates for log and server files across multiple languages ([2bcd4cf](https://github.com/perfect-panel/ppanel-web/commit/2bcd4cf)) - Add localization updates for log and server files across multiple languages ([2bcd4cf](https://github.com/perfect-panel/ppanel-web/commit/2bcd4cf))
* Clean up NodeForm and ServerForm components by removing unused functions and optimizing state management ([10250d9](https://github.com/perfect-panel/ppanel-web/commit/10250d9)) - Clean up NodeForm and ServerForm components by removing unused functions and optimizing state management ([10250d9](https://github.com/perfect-panel/ppanel-web/commit/10250d9))
* Enhance log pages with Badge component and update translations ([a4de9df](https://github.com/perfect-panel/ppanel-web/commit/a4de9df)) - Enhance log pages with Badge component and update translations ([a4de9df](https://github.com/perfect-panel/ppanel-web/commit/a4de9df))
* Make 'scheme' field optional in client form schema ([f4a1237](https://github.com/perfect-panel/ppanel-web/commit/f4a1237)) - Make 'scheme' field optional in client form schema ([f4a1237](https://github.com/perfect-panel/ppanel-web/commit/f4a1237))
* Refactor server management API endpoints and typings ([4f7cc80](https://github.com/perfect-panel/ppanel-web/commit/4f7cc80)) - Refactor server management API endpoints and typings ([4f7cc80](https://github.com/perfect-panel/ppanel-web/commit/4f7cc80))
* Remove application management forms and related configurations ([0c43844](https://github.com/perfect-panel/ppanel-web/commit/0c43844)) - Remove application management forms and related configurations ([0c43844](https://github.com/perfect-panel/ppanel-web/commit/0c43844))
* Remove default options from TagInput component for improved flexibility ([6a3bb70](https://github.com/perfect-panel/ppanel-web/commit/6a3bb70)) - Remove default options from TagInput component for improved flexibility ([6a3bb70](https://github.com/perfect-panel/ppanel-web/commit/6a3bb70))
* Remove unused preview state variables and add sort order to node properties ([e63f823](https://github.com/perfect-panel/ppanel-web/commit/e63f823)) - Remove unused preview state variables and add sort order to node properties ([e63f823](https://github.com/perfect-panel/ppanel-web/commit/e63f823))
* Rename buildScheme to buildSchema and update imports in server form components ([ee98e7e](https://github.com/perfect-panel/ppanel-web/commit/ee98e7e)) - Rename buildScheme to buildSchema and update imports in server form components ([ee98e7e](https://github.com/perfect-panel/ppanel-web/commit/ee98e7e))
* Simplify node display in subscribe form and remove unused Badge import ([551135d](https://github.com/perfect-panel/ppanel-web/commit/551135d)) - Simplify node display in subscribe form and remove unused Badge import ([551135d](https://github.com/perfect-panel/ppanel-web/commit/551135d))
* Update bun.lockb to reflect dependency changes ([ba2b50e](https://github.com/perfect-panel/ppanel-web/commit/ba2b50e)) - Update bun.lockb to reflect dependency changes ([ba2b50e](https://github.com/perfect-panel/ppanel-web/commit/ba2b50e))
* Update component imports and improve code consistency ([59faeab](https://github.com/perfect-panel/ppanel-web/commit/59faeab)) - Update component imports and improve code consistency ([59faeab](https://github.com/perfect-panel/ppanel-web/commit/59faeab))
* Update dependencies and improve code consistency across multiple files ([e37ae49](https://github.com/perfect-panel/ppanel-web/commit/e37ae49)) - Update dependencies and improve code consistency across multiple files ([e37ae49](https://github.com/perfect-panel/ppanel-web/commit/e37ae49))
* Update localization files and service imports ([d4b37e4](https://github.com/perfect-panel/ppanel-web/commit/d4b37e4)) - Update localization files and service imports ([d4b37e4](https://github.com/perfect-panel/ppanel-web/commit/d4b37e4))
### ✨ Features ### ✨ Features
* **config**: Add translations for server configuration in multiple languages ([f9a7ece](https://github.com/perfect-panel/ppanel-web/commit/f9a7ece)) - **config**: Add translations for server configuration in multiple languages ([f9a7ece](https://github.com/perfect-panel/ppanel-web/commit/f9a7ece))
* **logs**: Add various log pages for tracking user activities and system events ([d85af49](https://github.com/perfect-panel/ppanel-web/commit/d85af49)) - **logs**: Add various log pages for tracking user activities and system events ([d85af49](https://github.com/perfect-panel/ppanel-web/commit/d85af49))
* Add bandwidth fields and placeholders for upload and download in server configuration forms; update localization files for multiple languages ([3e5402f](https://github.com/perfect-panel/ppanel-web/commit/3e5402f)) - Add bandwidth fields and placeholders for upload and download in server configuration forms; update localization files for multiple languages ([3e5402f](https://github.com/perfect-panel/ppanel-web/commit/3e5402f))
* Add batch delete functionality and enhance chart tooltips in statistics cards ([c4f536e](https://github.com/perfect-panel/ppanel-web/commit/c4f536e)) - Add batch delete functionality and enhance chart tooltips in statistics cards ([c4f536e](https://github.com/perfect-panel/ppanel-web/commit/c4f536e))
* Add language support and descriptions in product localization files ([fd48856](https://github.com/perfect-panel/ppanel-web/commit/fd48856)) - Add language support and descriptions in product localization files ([fd48856](https://github.com/perfect-panel/ppanel-web/commit/fd48856))
* Add log cleanup settings and update localization files ([6ccf9b8](https://github.com/perfect-panel/ppanel-web/commit/6ccf9b8)) - Add log cleanup settings and update localization files ([6ccf9b8](https://github.com/perfect-panel/ppanel-web/commit/6ccf9b8))
* Add queryNodeTag function and integrate tag retrieval in NodeForm and SubscribeForm components ([4563c57](https://github.com/perfect-panel/ppanel-web/commit/4563c57)) - Add queryNodeTag function and integrate tag retrieval in NodeForm and SubscribeForm components ([4563c57](https://github.com/perfect-panel/ppanel-web/commit/4563c57))
* Add quota management features and localization updates ([fce627b](https://github.com/perfect-panel/ppanel-web/commit/fce627b)) - Add quota management features and localization updates ([fce627b](https://github.com/perfect-panel/ppanel-web/commit/fce627b))
* Add server form component with protocol configuration and localization support ([217ddce](https://github.com/perfect-panel/ppanel-web/commit/217ddce)) - Add server form component with protocol configuration and localization support ([217ddce](https://github.com/perfect-panel/ppanel-web/commit/217ddce))
* Enhance TagInput component with option handling and improved tag addition logic ([b6e778d](https://github.com/perfect-panel/ppanel-web/commit/b6e778d)) - Enhance TagInput component with option handling and improved tag addition logic ([b6e778d](https://github.com/perfect-panel/ppanel-web/commit/b6e778d))
* Implement data migration functionality and update localization files ([6d81bfd](https://github.com/perfect-panel/ppanel-web/commit/6d81bfd)) - Implement data migration functionality and update localization files ([6d81bfd](https://github.com/perfect-panel/ppanel-web/commit/6d81bfd))
* Refactor user detail and subscription management components ([973c06f](https://github.com/perfect-panel/ppanel-web/commit/973c06f)) - Refactor user detail and subscription management components ([973c06f](https://github.com/perfect-panel/ppanel-web/commit/973c06f))
* Update server list fetching logic and adjust query parameters ([5272360](https://github.com/perfect-panel/ppanel-web/commit/5272360)) - Update server list fetching logic and adjust query parameters ([5272360](https://github.com/perfect-panel/ppanel-web/commit/5272360))
### 🐛 Bug Fixes ### 🐛 Bug Fixes
* **page**: Refine version checking logic and remove unnecessary comments for clarity ([26176a7](https://github.com/perfect-panel/ppanel-web/commit/26176a7)) - **page**: Refine version checking logic and remove unnecessary comments for clarity ([26176a7](https://github.com/perfect-panel/ppanel-web/commit/26176a7))
* Add localization updates and new utility functions ([4da5960](https://github.com/perfect-panel/ppanel-web/commit/4da5960)) - Add localization updates and new utility functions ([4da5960](https://github.com/perfect-panel/ppanel-web/commit/4da5960))
* Add user_subscribe_id filter to SubscribeLogPage and update typings; disable eslint in service index files ([ab6f6a6](https://github.com/perfect-panel/ppanel-web/commit/ab6f6a6)) - Add user_subscribe_id filter to SubscribeLogPage and update typings; disable eslint in service index files ([ab6f6a6](https://github.com/perfect-panel/ppanel-web/commit/ab6f6a6))
* Added system version card and system log dialog components; updated statistics page to include total server and user statistics ([fe69980](https://github.com/perfect-panel/ppanel-web/commit/fe69980)) - Added system version card and system log dialog components; updated statistics page to include total server and user statistics ([fe69980](https://github.com/perfect-panel/ppanel-web/commit/fe69980))
* Adjust timestamp calculations to use milliseconds instead of seconds in quota broadcast form submission ([8dffd69](https://github.com/perfect-panel/ppanel-web/commit/8dffd69)) - Adjust timestamp calculations to use milliseconds instead of seconds in quota broadcast form submission ([8dffd69](https://github.com/perfect-panel/ppanel-web/commit/8dffd69))
* Correct cookie key format for sidebar state retrieval ([9e01f4f](https://github.com/perfect-panel/ppanel-web/commit/9e01f4f)) - Correct cookie key format for sidebar state retrieval ([9e01f4f](https://github.com/perfect-panel/ppanel-web/commit/9e01f4f))
* Improve UI for protocol status display in server form component ([461fdb1](https://github.com/perfect-panel/ppanel-web/commit/461fdb1)) - Improve UI for protocol status display in server form component ([461fdb1](https://github.com/perfect-panel/ppanel-web/commit/461fdb1))
* Increase pagination size limit for server and node lists to improve data retrieval ([7c0a312](https://github.com/perfect-panel/ppanel-web/commit/7c0a312)) - Increase pagination size limit for server and node lists to improve data retrieval ([7c0a312](https://github.com/perfect-panel/ppanel-web/commit/7c0a312))
* Optimize Task Manager to use milliseconds to calculate timers, and simplify import statements ([d8fa13b](https://github.com/perfect-panel/ppanel-web/commit/d8fa13b)) - Optimize Task Manager to use milliseconds to calculate timers, and simplify import statements ([d8fa13b](https://github.com/perfect-panel/ppanel-web/commit/d8fa13b))
* Refactor protocol status display for improved readability in server form component ([f700be0](https://github.com/perfect-panel/ppanel-web/commit/f700be0)) - Refactor protocol status display for improved readability in server form component ([f700be0](https://github.com/perfect-panel/ppanel-web/commit/f700be0))
* Remove GroupTable and related components, simplify SubscribeTable and update language handling in subscription forms ([1ab9b39](https://github.com/perfect-panel/ppanel-web/commit/1ab9b39)) - Remove GroupTable and related components, simplify SubscribeTable and update language handling in subscription forms ([1ab9b39](https://github.com/perfect-panel/ppanel-web/commit/1ab9b39))
* Remove redundant transport label from localization files ([88ce8d7](https://github.com/perfect-panel/ppanel-web/commit/88ce8d7)) - Remove redundant transport label from localization files ([88ce8d7](https://github.com/perfect-panel/ppanel-web/commit/88ce8d7))
* Remove unnecessary comments and improve variable handling in GoTemplateEditor; ensure zero value displays as empty in EnhancedInput ([c4a47a4](https://github.com/perfect-panel/ppanel-web/commit/c4a47a4)) - Remove unnecessary comments and improve variable handling in GoTemplateEditor; ensure zero value displays as empty in EnhancedInput ([c4a47a4](https://github.com/perfect-panel/ppanel-web/commit/c4a47a4))
* Remove unnecessary comments to simplify code readability ([a988cb3](https://github.com/perfect-panel/ppanel-web/commit/a988cb3)) - Remove unnecessary comments to simplify code readability ([a988cb3](https://github.com/perfect-panel/ppanel-web/commit/a988cb3))
* Replace MarkdownEditor with HTMLEditor in EmailBroadcastForm; simplify content rendering in EmailTaskManager; disable eslint in service index files ([e2d83ec](https://github.com/perfect-panel/ppanel-web/commit/e2d83ec)) - Replace MarkdownEditor with HTMLEditor in EmailBroadcastForm; simplify content rendering in EmailTaskManager; disable eslint in service index files ([e2d83ec](https://github.com/perfect-panel/ppanel-web/commit/e2d83ec))
* Replace redundant icon rendering with a single instance in system version card component ([e4429a5](https://github.com/perfect-panel/ppanel-web/commit/e4429a5)) - Replace redundant icon rendering with a single instance in system version card component ([e4429a5](https://github.com/perfect-panel/ppanel-web/commit/e4429a5))
* Update billing URL fetching logic and improve version handling in system version card component ([1c8d4af](https://github.com/perfect-panel/ppanel-web/commit/1c8d4af)) - Update billing URL fetching logic and improve version handling in system version card component ([1c8d4af](https://github.com/perfect-panel/ppanel-web/commit/1c8d4af))
* Update condition for plugin field in PROTOCOL_FIELDS to include specific plugins ([6376ec1](https://github.com/perfect-panel/ppanel-web/commit/6376ec1)) - Update condition for plugin field in PROTOCOL_FIELDS to include specific plugins ([6376ec1](https://github.com/perfect-panel/ppanel-web/commit/6376ec1))
* Update getAppSubLink function to improve URL handling and encoding logic ([351fffc](https://github.com/perfect-panel/ppanel-web/commit/351fffc)) - Update getAppSubLink function to improve URL handling and encoding logic ([351fffc](https://github.com/perfect-panel/ppanel-web/commit/351fffc))
* Update order_id to order_no in BalanceLogPage and related typings; enhance timezone switch component with additional features and localization updates ([ac36075](https://github.com/perfect-panel/ppanel-web/commit/ac36075)) - Update order_id to order_no in BalanceLogPage and related typings; enhance timezone switch component with additional features and localization updates ([ac36075](https://github.com/perfect-panel/ppanel-web/commit/ac36075))
* Update protocol plugin handling and add new options in typings ([6ca2433](https://github.com/perfect-panel/ppanel-web/commit/6ca2433)) - Update protocol plugin handling and add new options in typings ([6ca2433](https://github.com/perfect-panel/ppanel-web/commit/6ca2433))
* Update release URLs to include 'v' prefix for versioning in system version card component ([1d526b5](https://github.com/perfect-panel/ppanel-web/commit/1d526b5)) - Update release URLs to include 'v' prefix for versioning in system version card component ([1d526b5](https://github.com/perfect-panel/ppanel-web/commit/1d526b5))
* Update SidebarLeft component styles to enhance hover effects ([e4fbd5c](https://github.com/perfect-panel/ppanel-web/commit/e4fbd5c)) - Update SidebarLeft component styles to enhance hover effects ([e4fbd5c](https://github.com/perfect-panel/ppanel-web/commit/e4fbd5c))
* Update validation for days and gift_value fields in QuotaBroadcastForm; set default values to avoid errors ([39d746f](https://github.com/perfect-panel/ppanel-web/commit/39d746f)) - Update validation for days and gift_value fields in QuotaBroadcastForm; set default values to avoid errors ([39d746f](https://github.com/perfect-panel/ppanel-web/commit/39d746f))
### 📝 Documentation ### 📝 Documentation
* Merge branch 'main' into develop ([d7f8b3b](https://github.com/perfect-panel/ppanel-web/commit/d7f8b3b)) - Merge branch 'main' into develop ([d7f8b3b](https://github.com/perfect-panel/ppanel-web/commit/d7f8b3b))
<a name="readme-top"></a> <a name="readme-top"></a>

View File

@ -2,6 +2,7 @@
import { Display } from '@/components/display'; import { Display } from '@/components/display';
import { ProTable, ProTableActions } from '@/components/pro-table'; import { ProTable, ProTableActions } from '@/components/pro-table';
import useGlobalStore from '@/config/use-global';
import { import {
createUserSubscribe, createUserSubscribe,
deleteUserSubscribe, deleteUserSubscribe,
@ -28,6 +29,7 @@ export default function UserSubscription({ userId }: { userId: number }) {
const t = useTranslations('user'); const t = useTranslations('user');
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const ref = useRef<ProTableActions>(null); const ref = useRef<ProTableActions>(null);
const { getUserSubscribeUrls } = useGlobalStore();
return ( return (
<ProTable<API.UserSubscribe, Record<string, unknown>> <ProTable<API.UserSubscribe, Record<string, unknown>>
@ -146,6 +148,16 @@ export default function UserSubscription({ userId }: { userId: number }) {
return true; return true;
}} }}
/>, />,
<Button
key='copy'
variant='secondary'
onClick={async () => {
await navigator.clipboard.writeText(getUserSubscribeUrls(row.token)[0] || '');
toast.success(t('copySuccess'));
}}
>
{t('copySubscription')}
</Button>,
<ConfirmButton <ConfirmButton
key='delete' key='delete'
trigger={<Button variant='destructive'>{t('delete')}</Button>} trigger={<Button variant='destructive'>{t('delete')}</Button>}

View File

@ -1,3 +1,5 @@
import { NEXT_PUBLIC_API_URL, NEXT_PUBLIC_SITE_URL } from '@/config/constants';
import { extractDomain } from '@workspace/ui/utils';
import { create } from 'zustand'; import { create } from 'zustand';
export interface GlobalStore { export interface GlobalStore {
@ -5,9 +7,10 @@ export interface GlobalStore {
user?: API.User; user?: API.User;
setCommon: (common: Partial<API.GetGlobalConfigResponse>) => void; setCommon: (common: Partial<API.GetGlobalConfigResponse>) => void;
setUser: (user?: API.User) => void; setUser: (user?: API.User) => void;
getUserSubscribeUrls: (uuid: string, type?: string) => string[];
} }
export const useGlobalStore = create<GlobalStore>((set) => ({ export const useGlobalStore = create<GlobalStore>((set, get) => ({
common: { common: {
site: { site: {
host: '', host: '',
@ -77,6 +80,22 @@ export const useGlobalStore = create<GlobalStore>((set) => ({
}, },
})), })),
setUser: (user) => set({ user }), setUser: (user) => set({ user }),
getUserSubscribeUrls: (uuid: string, type?: string) => {
const { pan_domain, subscribe_domain, subscribe_path } = get().common.subscribe || {};
const domains = subscribe_domain
? subscribe_domain.split('\n')
: [extractDomain(NEXT_PUBLIC_API_URL || NEXT_PUBLIC_SITE_URL || '', pan_domain)];
return domains.map((domain) => {
if (pan_domain) {
if (type) return `https://${uuid}.${type}.${domain}`;
return `https://${uuid}.${domain}`;
} else {
if (type) return `https://${domain}${subscribe_path}?token=${uuid}&type=${type}`;
return `https://${domain}${subscribe_path}?token=${uuid}`;
}
});
},
})); }));
export default useGlobalStore; export default useGlobalStore;

View File

@ -17,6 +17,8 @@
"confirm": "Potvrdit", "confirm": "Potvrdit",
"confirmDelete": "Opravdu chcete smazat?", "confirmDelete": "Opravdu chcete smazat?",
"confirmOffline": "Potvrdit offline", "confirmOffline": "Potvrdit offline",
"copySubscription": "Kopírovat předplatné",
"copySuccess": "Kopírování bylo úspěšné",
"create": "Vytvořit", "create": "Vytvořit",
"createSubscription": "Vytvořit předplatné", "createSubscription": "Vytvořit předplatné",
"createSuccess": "Vytvoření úspěšné", "createSuccess": "Vytvoření úspěšné",

View File

@ -17,6 +17,8 @@
"confirm": "Bestätigen", "confirm": "Bestätigen",
"confirmDelete": "Sind Sie sicher, dass Sie löschen möchten?", "confirmDelete": "Sind Sie sicher, dass Sie löschen möchten?",
"confirmOffline": "Offline bestätigen", "confirmOffline": "Offline bestätigen",
"copySubscription": "Abonnement kopieren",
"copySuccess": "Kopie erfolgreich",
"create": "Erstellen", "create": "Erstellen",
"createSubscription": "Abonnement erstellen", "createSubscription": "Abonnement erstellen",
"createSuccess": "Erstellung erfolgreich", "createSuccess": "Erstellung erfolgreich",

View File

@ -17,6 +17,8 @@
"confirm": "Confirm", "confirm": "Confirm",
"confirmDelete": "Confirm Delete", "confirmDelete": "Confirm Delete",
"confirmOffline": "Confirm Offline", "confirmOffline": "Confirm Offline",
"copySubscription": "Copy Subscription",
"copySuccess": "Copy successful",
"create": "Create", "create": "Create",
"createSubscription": "Create Subscription", "createSubscription": "Create Subscription",
"createSuccess": "Create successful", "createSuccess": "Create successful",

View File

@ -17,6 +17,8 @@
"confirm": "Confirmar", "confirm": "Confirmar",
"confirmDelete": "¿Está seguro de que desea eliminar?", "confirmDelete": "¿Está seguro de que desea eliminar?",
"confirmOffline": "Confirmar sin conexión", "confirmOffline": "Confirmar sin conexión",
"copySubscription": "Copiar Suscripción",
"copySuccess": "Copia exitosa",
"create": "Crear", "create": "Crear",
"createSubscription": "Crear suscripción", "createSubscription": "Crear suscripción",
"createSuccess": "Creación exitosa", "createSuccess": "Creación exitosa",

View File

@ -17,6 +17,8 @@
"confirm": "Confirmar", "confirm": "Confirmar",
"confirmDelete": "¿Está seguro de que desea eliminar?", "confirmDelete": "¿Está seguro de que desea eliminar?",
"confirmOffline": "Confirmar sin conexión", "confirmOffline": "Confirmar sin conexión",
"copySubscription": "Copiar Suscripción",
"copySuccess": "Copia exitosa",
"create": "Crear", "create": "Crear",
"createSubscription": "Crear Suscripción", "createSubscription": "Crear Suscripción",
"createSuccess": "Creación exitosa", "createSuccess": "Creación exitosa",

View File

@ -17,6 +17,8 @@
"confirm": "تأیید", "confirm": "تأیید",
"confirmDelete": "آیا مطمئن هستید که می‌خواهید حذف کنید؟", "confirmDelete": "آیا مطمئن هستید که می‌خواهید حذف کنید؟",
"confirmOffline": "تأیید آفلاین", "confirmOffline": "تأیید آفلاین",
"copySubscription": "کپی اشتراک",
"copySuccess": "کپی با موفقیت انجام شد",
"create": "ایجاد", "create": "ایجاد",
"createSubscription": "ایجاد اشتراک", "createSubscription": "ایجاد اشتراک",
"createSuccess": "ایجاد با موفقیت انجام شد", "createSuccess": "ایجاد با موفقیت انجام شد",

View File

@ -17,6 +17,8 @@
"confirm": "Vahvista", "confirm": "Vahvista",
"confirmDelete": "Oletko varma, että haluat poistaa?", "confirmDelete": "Oletko varma, että haluat poistaa?",
"confirmOffline": "Vahvista offline-tila", "confirmOffline": "Vahvista offline-tila",
"copySubscription": "Kopioi tilaus",
"copySuccess": "Kopiointi onnistui",
"create": "Luo", "create": "Luo",
"createSubscription": "Luo tilaus", "createSubscription": "Luo tilaus",
"createSuccess": "Luonti onnistui", "createSuccess": "Luonti onnistui",

View File

@ -17,6 +17,8 @@
"confirm": "Confirmer", "confirm": "Confirmer",
"confirmDelete": "Êtes-vous sûr de vouloir supprimer ?", "confirmDelete": "Êtes-vous sûr de vouloir supprimer ?",
"confirmOffline": "Confirmer hors ligne", "confirmOffline": "Confirmer hors ligne",
"copySubscription": "Copier l'abonnement",
"copySuccess": "Copie réussie",
"create": "Créer", "create": "Créer",
"createSubscription": "Créer un abonnement", "createSubscription": "Créer un abonnement",
"createSuccess": "Création réussie", "createSuccess": "Création réussie",

View File

@ -17,6 +17,8 @@
"confirm": "पुष्टि करें", "confirm": "पुष्टि करें",
"confirmDelete": "क्या आप वाकई हटाना चाहते हैं?", "confirmDelete": "क्या आप वाकई हटाना चाहते हैं?",
"confirmOffline": "ऑफ़लाइन की पुष्टि करें", "confirmOffline": "ऑफ़लाइन की पुष्टि करें",
"copySubscription": "सदस्यता कॉपी करें",
"copySuccess": "कॉपी सफल",
"create": "सृजन", "create": "सृजन",
"createSubscription": "सदस्यता बनाएं", "createSubscription": "सदस्यता बनाएं",
"createSuccess": "सृजन सफल", "createSuccess": "सृजन सफल",

View File

@ -17,6 +17,8 @@
"confirm": "Megerősítés", "confirm": "Megerősítés",
"confirmDelete": "Biztosan törölni szeretné?", "confirmDelete": "Biztosan törölni szeretné?",
"confirmOffline": "Megerősítés offline", "confirmOffline": "Megerősítés offline",
"copySubscription": "Előfizetés másolása",
"copySuccess": "Másolás sikeres",
"create": "Létrehozás", "create": "Létrehozás",
"createSubscription": "Előfizetés létrehozása", "createSubscription": "Előfizetés létrehozása",
"createSuccess": "Sikeres létrehozás", "createSuccess": "Sikeres létrehozás",

View File

@ -17,6 +17,8 @@
"confirm": "確認", "confirm": "確認",
"confirmDelete": "削除してもよろしいですか?", "confirmDelete": "削除してもよろしいですか?",
"confirmOffline": "オフラインを確認", "confirmOffline": "オフラインを確認",
"copySubscription": "サブスクリプションをコピー",
"copySuccess": "コピーが成功しました",
"create": "作成", "create": "作成",
"createSubscription": "サブスクリプションを作成", "createSubscription": "サブスクリプションを作成",
"createSuccess": "作成成功", "createSuccess": "作成成功",

View File

@ -17,6 +17,8 @@
"confirm": "확인", "confirm": "확인",
"confirmDelete": "삭제하시겠습니까?", "confirmDelete": "삭제하시겠습니까?",
"confirmOffline": "오프라인 확인", "confirmOffline": "오프라인 확인",
"copySubscription": "구독 복사",
"copySuccess": "복사 성공",
"create": "생성", "create": "생성",
"createSubscription": "구독 생성", "createSubscription": "구독 생성",
"createSuccess": "생성 성공", "createSuccess": "생성 성공",

View File

@ -17,6 +17,8 @@
"confirm": "bekreft", "confirm": "bekreft",
"confirmDelete": "Er du sikker på at du vil slette?", "confirmDelete": "Er du sikker på at du vil slette?",
"confirmOffline": "Bekreft frakoblet", "confirmOffline": "Bekreft frakoblet",
"copySubscription": "Kopier abonnement",
"copySuccess": "Kopiering vellykket",
"create": "opprett", "create": "opprett",
"createSubscription": "Opprett abonnement", "createSubscription": "Opprett abonnement",
"createSuccess": "Opprettelse vellykket", "createSuccess": "Opprettelse vellykket",

View File

@ -17,6 +17,8 @@
"confirm": "Potwierdź", "confirm": "Potwierdź",
"confirmDelete": "Czy na pewno chcesz usunąć?", "confirmDelete": "Czy na pewno chcesz usunąć?",
"confirmOffline": "Potwierdź tryb offline", "confirmOffline": "Potwierdź tryb offline",
"copySubscription": "Kopiuj subskrypcję",
"copySuccess": "Kopiowanie zakończone sukcesem",
"create": "Utwórz", "create": "Utwórz",
"createSubscription": "Utwórz subskrypcję", "createSubscription": "Utwórz subskrypcję",
"createSuccess": "Utworzono pomyślnie", "createSuccess": "Utworzono pomyślnie",

View File

@ -17,6 +17,8 @@
"confirm": "confirmar", "confirm": "confirmar",
"confirmDelete": "Você tem certeza de que deseja excluir?", "confirmDelete": "Você tem certeza de que deseja excluir?",
"confirmOffline": "Confirmar Offline", "confirmOffline": "Confirmar Offline",
"copySubscription": "Copiar Assinatura",
"copySuccess": "Cópia bem-sucedida",
"create": "Criar", "create": "Criar",
"createSubscription": "Criar Assinatura", "createSubscription": "Criar Assinatura",
"createSuccess": "Criação bem-sucedida", "createSuccess": "Criação bem-sucedida",

View File

@ -17,6 +17,8 @@
"confirm": "Confirmare", "confirm": "Confirmare",
"confirmDelete": "Sunteți sigur că doriți să ștergeți?", "confirmDelete": "Sunteți sigur că doriți să ștergeți?",
"confirmOffline": "Confirmare Offline", "confirmOffline": "Confirmare Offline",
"copySubscription": "Copiază Abonamentul",
"copySuccess": "Copiază cu succes",
"create": "crea", "create": "crea",
"createSubscription": "Creează Abonament", "createSubscription": "Creează Abonament",
"createSuccess": "Creat cu succes", "createSuccess": "Creat cu succes",

View File

@ -17,6 +17,8 @@
"confirm": "Подтвердить", "confirm": "Подтвердить",
"confirmDelete": "Вы уверены, что хотите удалить?", "confirmDelete": "Вы уверены, что хотите удалить?",
"confirmOffline": "Подтвердить офлайн", "confirmOffline": "Подтвердить офлайн",
"copySubscription": "Копировать подписку",
"copySuccess": "Копирование успешно",
"create": "Создать", "create": "Создать",
"createSubscription": "Создать подписку", "createSubscription": "Создать подписку",
"createSuccess": "Создание успешно", "createSuccess": "Создание успешно",

View File

@ -17,6 +17,8 @@
"confirm": "ยืนยัน", "confirm": "ยืนยัน",
"confirmDelete": "คุณแน่ใจหรือว่าต้องการลบ?", "confirmDelete": "คุณแน่ใจหรือว่าต้องการลบ?",
"confirmOffline": "ยืนยันออฟไลน์", "confirmOffline": "ยืนยันออฟไลน์",
"copySubscription": "คัดลอกการสมัครสมาชิก",
"copySuccess": "คัดลอกสำเร็จ",
"create": "สร้าง", "create": "สร้าง",
"createSubscription": "สร้างการสมัครสมาชิก", "createSubscription": "สร้างการสมัครสมาชิก",
"createSuccess": "สร้างสำเร็จ", "createSuccess": "สร้างสำเร็จ",

View File

@ -17,6 +17,8 @@
"confirm": "Onayla", "confirm": "Onayla",
"confirmDelete": "Silmek istediğinizden emin misiniz?", "confirmDelete": "Silmek istediğinizden emin misiniz?",
"confirmOffline": "Çevrimdışı Onayla", "confirmOffline": "Çevrimdışı Onayla",
"copySubscription": "Aboneliği Kopyala",
"copySuccess": "Kopyalama başarılı",
"create": "oluştur", "create": "oluştur",
"createSubscription": "Abonelik Oluştur", "createSubscription": "Abonelik Oluştur",
"createSuccess": "Başarıyla oluşturuldu", "createSuccess": "Başarıyla oluşturuldu",

View File

@ -17,6 +17,8 @@
"confirm": "Підтвердити", "confirm": "Підтвердити",
"confirmDelete": "Ви впевнені, що хочете видалити?", "confirmDelete": "Ви впевнені, що хочете видалити?",
"confirmOffline": "Підтвердити офлайн", "confirmOffline": "Підтвердити офлайн",
"copySubscription": "Копіювати підписку",
"copySuccess": "Копіювання успішне",
"create": "створити", "create": "створити",
"createSubscription": "Створити підписку", "createSubscription": "Створити підписку",
"createSuccess": "Створено успішно", "createSuccess": "Створено успішно",

View File

@ -17,6 +17,8 @@
"confirm": "Xác nhận", "confirm": "Xác nhận",
"confirmDelete": "Bạn có chắc chắn muốn xóa không?", "confirmDelete": "Bạn có chắc chắn muốn xóa không?",
"confirmOffline": "Xác nhận Ngoại tuyến", "confirmOffline": "Xác nhận Ngoại tuyến",
"copySubscription": "Sao chép Đăng ký",
"copySuccess": "Sao chép thành công",
"create": "Tạo", "create": "Tạo",
"createSubscription": "Tạo Đăng Ký", "createSubscription": "Tạo Đăng Ký",
"createSuccess": "Tạo thành công", "createSuccess": "Tạo thành công",

View File

@ -17,6 +17,8 @@
"confirm": "确认", "confirm": "确认",
"confirmDelete": "确认删除", "confirmDelete": "确认删除",
"confirmOffline": "确认下线", "confirmOffline": "确认下线",
"copySubscription": "复制订阅",
"copySuccess": "复制成功",
"create": "创建", "create": "创建",
"createSubscription": "创建订阅", "createSubscription": "创建订阅",
"createSuccess": "创建成功", "createSuccess": "创建成功",

View File

@ -17,6 +17,8 @@
"confirm": "確認", "confirm": "確認",
"confirmDelete": "您確定要刪除嗎?", "confirmDelete": "您確定要刪除嗎?",
"confirmOffline": "確認離線", "confirmOffline": "確認離線",
"copySubscription": "複製訂閱",
"copySuccess": "複製成功",
"create": "建立", "create": "建立",
"createSubscription": "建立訂閱", "createSubscription": "建立訂閱",
"createSuccess": "建立成功", "createSuccess": "建立成功",

View File

@ -1,5 +1,5 @@
// @ts-ignore // @ts-ignore
// API 更新时间: // API 更新时间:
// API 唯一标识: // API 唯一标识:
import * as ads from './ads'; import * as ads from './ads';

View File

@ -1,5 +1,5 @@
// @ts-ignore // @ts-ignore
// API 更新时间: // API 更新时间:
// API 唯一标识: // API 唯一标识:
import * as auth from './auth'; import * as auth from './auth';

View File

@ -1,5 +1,5 @@
// @ts-ignore // @ts-ignore
// API 更新时间: // API 更新时间:
// API 唯一标识: // API 唯一标识:
import * as auth from './auth'; import * as auth from './auth';

View File

@ -1,5 +1,5 @@
// @ts-ignore // @ts-ignore
// API 更新时间: // API 更新时间:
// API 唯一标识: // API 唯一标识:
import * as announcement from './announcement'; import * as announcement from './announcement';