🐛 fix: Add copy subscription functionality to user subscription dashboard and improve localization for new features
This commit is contained in:
parent
1d52642cb7
commit
e2a357fea7
113
CHANGELOG.md
113
CHANGELOG.md
@ -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>
|
||||||
|
|
||||||
|
|||||||
@ -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>}
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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é",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "تأیید",
|
"confirm": "تأیید",
|
||||||
"confirmDelete": "آیا مطمئن هستید که میخواهید حذف کنید؟",
|
"confirmDelete": "آیا مطمئن هستید که میخواهید حذف کنید؟",
|
||||||
"confirmOffline": "تأیید آفلاین",
|
"confirmOffline": "تأیید آفلاین",
|
||||||
|
"copySubscription": "کپی اشتراک",
|
||||||
|
"copySuccess": "کپی با موفقیت انجام شد",
|
||||||
"create": "ایجاد",
|
"create": "ایجاد",
|
||||||
"createSubscription": "ایجاد اشتراک",
|
"createSubscription": "ایجاد اشتراک",
|
||||||
"createSuccess": "ایجاد با موفقیت انجام شد",
|
"createSuccess": "ایجاد با موفقیت انجام شد",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "पुष्टि करें",
|
"confirm": "पुष्टि करें",
|
||||||
"confirmDelete": "क्या आप वाकई हटाना चाहते हैं?",
|
"confirmDelete": "क्या आप वाकई हटाना चाहते हैं?",
|
||||||
"confirmOffline": "ऑफ़लाइन की पुष्टि करें",
|
"confirmOffline": "ऑफ़लाइन की पुष्टि करें",
|
||||||
|
"copySubscription": "सदस्यता कॉपी करें",
|
||||||
|
"copySuccess": "कॉपी सफल",
|
||||||
"create": "सृजन",
|
"create": "सृजन",
|
||||||
"createSubscription": "सदस्यता बनाएं",
|
"createSubscription": "सदस्यता बनाएं",
|
||||||
"createSuccess": "सृजन सफल",
|
"createSuccess": "सृजन सफल",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "確認",
|
"confirm": "確認",
|
||||||
"confirmDelete": "削除してもよろしいですか?",
|
"confirmDelete": "削除してもよろしいですか?",
|
||||||
"confirmOffline": "オフラインを確認",
|
"confirmOffline": "オフラインを確認",
|
||||||
|
"copySubscription": "サブスクリプションをコピー",
|
||||||
|
"copySuccess": "コピーが成功しました",
|
||||||
"create": "作成",
|
"create": "作成",
|
||||||
"createSubscription": "サブスクリプションを作成",
|
"createSubscription": "サブスクリプションを作成",
|
||||||
"createSuccess": "作成成功",
|
"createSuccess": "作成成功",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "확인",
|
"confirm": "확인",
|
||||||
"confirmDelete": "삭제하시겠습니까?",
|
"confirmDelete": "삭제하시겠습니까?",
|
||||||
"confirmOffline": "오프라인 확인",
|
"confirmOffline": "오프라인 확인",
|
||||||
|
"copySubscription": "구독 복사",
|
||||||
|
"copySuccess": "복사 성공",
|
||||||
"create": "생성",
|
"create": "생성",
|
||||||
"createSubscription": "구독 생성",
|
"createSubscription": "구독 생성",
|
||||||
"createSuccess": "생성 성공",
|
"createSuccess": "생성 성공",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "Подтвердить",
|
"confirm": "Подтвердить",
|
||||||
"confirmDelete": "Вы уверены, что хотите удалить?",
|
"confirmDelete": "Вы уверены, что хотите удалить?",
|
||||||
"confirmOffline": "Подтвердить офлайн",
|
"confirmOffline": "Подтвердить офлайн",
|
||||||
|
"copySubscription": "Копировать подписку",
|
||||||
|
"copySuccess": "Копирование успешно",
|
||||||
"create": "Создать",
|
"create": "Создать",
|
||||||
"createSubscription": "Создать подписку",
|
"createSubscription": "Создать подписку",
|
||||||
"createSuccess": "Создание успешно",
|
"createSuccess": "Создание успешно",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "ยืนยัน",
|
"confirm": "ยืนยัน",
|
||||||
"confirmDelete": "คุณแน่ใจหรือว่าต้องการลบ?",
|
"confirmDelete": "คุณแน่ใจหรือว่าต้องการลบ?",
|
||||||
"confirmOffline": "ยืนยันออฟไลน์",
|
"confirmOffline": "ยืนยันออฟไลน์",
|
||||||
|
"copySubscription": "คัดลอกการสมัครสมาชิก",
|
||||||
|
"copySuccess": "คัดลอกสำเร็จ",
|
||||||
"create": "สร้าง",
|
"create": "สร้าง",
|
||||||
"createSubscription": "สร้างการสมัครสมาชิก",
|
"createSubscription": "สร้างการสมัครสมาชิก",
|
||||||
"createSuccess": "สร้างสำเร็จ",
|
"createSuccess": "สร้างสำเร็จ",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "Підтвердити",
|
"confirm": "Підтвердити",
|
||||||
"confirmDelete": "Ви впевнені, що хочете видалити?",
|
"confirmDelete": "Ви впевнені, що хочете видалити?",
|
||||||
"confirmOffline": "Підтвердити офлайн",
|
"confirmOffline": "Підтвердити офлайн",
|
||||||
|
"copySubscription": "Копіювати підписку",
|
||||||
|
"copySuccess": "Копіювання успішне",
|
||||||
"create": "створити",
|
"create": "створити",
|
||||||
"createSubscription": "Створити підписку",
|
"createSubscription": "Створити підписку",
|
||||||
"createSuccess": "Створено успішно",
|
"createSuccess": "Створено успішно",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "确认",
|
"confirm": "确认",
|
||||||
"confirmDelete": "确认删除",
|
"confirmDelete": "确认删除",
|
||||||
"confirmOffline": "确认下线",
|
"confirmOffline": "确认下线",
|
||||||
|
"copySubscription": "复制订阅",
|
||||||
|
"copySuccess": "复制成功",
|
||||||
"create": "创建",
|
"create": "创建",
|
||||||
"createSubscription": "创建订阅",
|
"createSubscription": "创建订阅",
|
||||||
"createSuccess": "创建成功",
|
"createSuccess": "创建成功",
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
"confirm": "確認",
|
"confirm": "確認",
|
||||||
"confirmDelete": "您確定要刪除嗎?",
|
"confirmDelete": "您確定要刪除嗎?",
|
||||||
"confirmOffline": "確認離線",
|
"confirmOffline": "確認離線",
|
||||||
|
"copySubscription": "複製訂閱",
|
||||||
|
"copySuccess": "複製成功",
|
||||||
"create": "建立",
|
"create": "建立",
|
||||||
"createSubscription": "建立訂閱",
|
"createSubscription": "建立訂閱",
|
||||||
"createSuccess": "建立成功",
|
"createSuccess": "建立成功",
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|
||||||
// API 更新时间:
|
// API 更新时间:
|
||||||
// API 唯一标识:
|
// API 唯一标识:
|
||||||
import * as ads from './ads';
|
import * as ads from './ads';
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|
||||||
// API 更新时间:
|
// API 更新时间:
|
||||||
// API 唯一标识:
|
// API 唯一标识:
|
||||||
import * as auth from './auth';
|
import * as auth from './auth';
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|
||||||
// API 更新时间:
|
// API 更新时间:
|
||||||
// API 唯一标识:
|
// API 唯一标识:
|
||||||
import * as auth from './auth';
|
import * as auth from './auth';
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|
||||||
// API 更新时间:
|
// API 更新时间:
|
||||||
// API 唯一标识:
|
// API 唯一标识:
|
||||||
import * as announcement from './announcement';
|
import * as announcement from './announcement';
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user