♻️ refactor: Refactoring and adding multiple features

This commit is contained in:
web
2025-08-05 06:42:39 -07:00
committed by speakeloudest
parent 5a2fa2e937
commit 47d19d1b44
106 changed files with 6893 additions and 4604 deletions
+4 -11
View File
@@ -1,32 +1,25 @@
{
"ADS Config": "ADS-konfigurasjon",
"Announcement Management": "Kunngjøringsadministrasjon",
"Apple": "Apple-ID",
"Application Management": "Applikasjonsadministrasjon",
"Auth Control": "Autentiseringskontroll",
"Coupon Management": "Kupongadministrasjon",
"Dashboard": "Dashbord",
"Device": "Enhet",
"Document Management": "Dokumenthåndtering",
"Email": "E-post",
"Facebook": "Facebook",
"Finance": "Finans",
"General": "Generell",
"GitHub": "GitHub",
"Google": "Google",
"Order Management": "Bestillingsadministrasjon",
"Payment Config": "Betalingskonfigurasjon",
"Phone Number": "Telefonnummer",
"Product Management": "Produktledelse",
"Protocol Management": "Protokolladministrasjon",
"Rule Management": "Regeladministrasjon",
"Server": "Tjeneste",
"Server Management": "Serveradministrasjon",
"Settings": "Innstillinger",
"Subscribe Management": "Abonnementsadministrasjon",
"Subscribe Config": "Abonnementsinnstillinger",
"System Config": "Systemkonfigurasjon",
"System Management": "Systemadministrasjon",
"System Tool": "Systemverktøy",
"Telegram": "Telegram",
"Ticket Management": "Billettadministrasjon",
"Twitter": "Twitter",
"User": "Bruker",
"User Detail": "Brukerdetaljer",
"User Management": "Brukeradministrasjon"
+160
View File
@@ -0,0 +1,160 @@
{
"actions": "handlinger",
"app": {
"appDownloadURL": "App Nedlastings-URL",
"appIcon": "App-ikon",
"appList": "Appliste",
"appName": "App-navn",
"backupDomains": "Sikkerhetskopidomener",
"backupDomainsDescription": "Liste over sikkerhetskopidomener for domeneresolusjon, ett domene per linje",
"batchDelete": "Slett i gruppe",
"cancel": "Avbryt",
"communicationKey": "Kommunikasjonsnøkkel",
"communicationKeyDescription": "Nøkkel brukt for klientkommunikasjon",
"config": "Konfigurasjon",
"configApp": "Appkonfigurasjon",
"confirm": "Bekreft",
"confirmDelete": "Bekreft sletting",
"create": "Opprett",
"createApp": "Opprett app",
"createSuccess": "Opprettet vellykket",
"defaultVersion": "Standard",
"delete": "Slett",
"deleteWarning": "Denne handlingen kan ikke angres",
"describeDescription": "Brukes til å beskrive applikasjonen, vises i applisten",
"description": "Beskrivelse",
"downloadLink": "Nedlastingslenke",
"edit": "Rediger",
"editApp": "Rediger app",
"encryption": "Krypteringsmetode",
"encryptionDescription": "Velg krypteringsmetoden for klientkommunikasjon. Hvis valgt, vil klienten bruke denne metoden for å kommunisere med serveren",
"nameDescription": "Applikasjonsnavn, vises i applisten",
"platform": "Plattform",
"selectApp": "Velg App",
"selectAppDescription": "Velg appen du vil konfigurere, alle innstillinger vil gjelde for den valgte appen",
"startupPicture": "Oppstartsbilde",
"startupPictureDescription": "Oppstartsbilde, støtter nettverks- og lokale bilder. For nettverksbilder, vennligst skriv inn den fullstendige bilde-URLen",
"startupPicturePreview": "Forhåndsvisning av oppstartsbilde",
"startupPictureSkip": "Tid for å hoppe over oppstartsbilde",
"startupPictureSkipDescription": "Visningstid for oppstartsbilde i sekunder, skriv inn 0 for å ikke vise",
"subscriptionProtocol": "Abonnementsprotokoll",
"updateSuccess": "Oppdatert vellykket",
"version": "Versjon"
},
"cancel": "Avbryt",
"config": {
"singleSubscriptionMode": "Enkelt Abonnementsmodus",
"subscriptionDomain": "Abonnementsdomene",
"subscriptionDomainDescription": "Brukes for abonnement; la stå tomt for å bruke nettstedets domene",
"subscriptionDomainPlaceholder": "Skriv inn abonnementsdomene, ett per linje",
"subscriptionPath": "Abonnementssti",
"subscriptionPathDescription": "Brukes for abonnement; sørg for å starte systemet på nytt etter endring for optimal ytelse",
"subscriptionPathPlaceholder": "Skriv inn",
"updateSuccess": "Oppdatering vellykket",
"wildcardResolution": "Jokertegnoppløsning",
"wildcardResolutionDescription": "Brukes for abonnement"
},
"confirm": "Bekreft",
"confirmDelete": "Er du sikker på at du vil slette?",
"copy": "Kopier",
"copySuccess": "Kopiert vellykket",
"create": "Opprett",
"createSubscribe": "Opprett abonnement",
"createSuccess": "Opprettelse vellykket",
"delete": "slett",
"deleteSuccess": "Sletting vellykket",
"deleteWarning": "Data kan ikke gjenopprettes etter sletting, vennligst vær forsiktig.",
"deviceLimit": "Enheter/antall",
"edit": "rediger",
"editSubscribe": "Rediger abonnement",
"form": {
"Day": "Dag",
"Hour": "Time",
"Minute": "Minutt",
"Month": "Måned",
"NoLimit": "Ingen grense",
"Year": "År",
"annualReset": "Årlig Tilbakestilling",
"basic": "Grunnleggende",
"cancel": "Avbryt",
"confirm": "Bekreft",
"deductionRatio": "Automatisk/Manuell Fradragskonfigurasjon",
"deductionRatioDescription": "Brukes for fradrag. Som standard benytter systemet en automatisk beregningsalgoritme. Når en manuell andel er oppgitt, beregner systemet proporsjoner basert på tids- og trafikkforhold, og sikrer at totalen utgjør 100%.",
"description": "Beskrivelse",
"deviceLimit": "Enhetsbegrensning",
"discount": "Rabatt",
"discountDescription": "Sett rabatt basert på enhetspris",
"discountMonths": "Måneder",
"discountPercent": "Rabattprosent",
"discount_price": "Rabattert pris",
"duration": "Varighet (måneder)",
"groupId": "Abonnementsgruppe",
"inventory": "Abonnementsgrense",
"monthlyReset": "Månedlig Tilbakestilling",
"name": "Navn",
"noLimit": "Ubegrenset",
"noReset": "Ingen Tilbakestilling",
"pricing": "Prissetting",
"purchaseWithDiscount": "Tillat Fradrag",
"purchaseWithDiscountDescription": "Aktiver eller deaktiver funksjonaliteten for avmelding. Etter aktivering vil systemet utføre fradragsbehandling i henhold til de konfigurerte reglene og proporsjonene, og den gjenværende verdien vil bli returnert til saldoen",
"quota": "Kjøpskvote",
"renewalReset": "Fornyelsestilbakestilling",
"renewalResetDescription": "Tilbakestill syklus ved fornyelse",
"replacement": "Erstatningspris (per gang)",
"resetCycle": "Tilbakestill Syklus",
"resetOn1st": "Tilbakestill den 1.",
"selectResetCycle": "Vennligst velg en tilbakestillingssyklus",
"selectSubscribeGroup": "Vennligst velg abonnementsgruppe",
"selectUnitTime": "Vennligst velg enhetstid",
"server": "Tjeneste",
"serverGroup": "Tjenestegruppe",
"servers": "Servere",
"speedLimit": "Hastighetsbegrensning ",
"traffic": "Trafikk",
"unitPrice": "Enhetspris",
"unitTime": "Enhetstid"
},
"group": {
"actions": "Handlinger",
"cancel": "Avbryt",
"confirm": "Bekreft",
"confirmDelete": "Er du sikker på at du vil slette?",
"create": "Opprett",
"createSubscribeGroup": "Opprett ny abonnementsgruppe",
"createSuccess": "Opprettelse vellykket",
"delete": "Slett",
"deleteSuccess": "Sletting vellykket",
"deleteWarning": "Data kan ikke gjenopprettes etter sletting, vær forsiktig.",
"description": "Beskrivelse",
"edit": "Rediger",
"editSubscribeGroup": "Rediger abonnementsgruppe",
"form": {
"cancel": "Avbryt",
"confirm": "Bekreft",
"description": "Beskrivelse",
"name": "Navn"
},
"name": "Navn",
"title": "Liste over abonnementsgrupper",
"updateSuccess": "Oppdatering vellykket",
"updatedAt": "Oppdatert"
},
"inventory": "Abonnementsgrense",
"name": "Navn",
"quota": "Kjøpsgrense/gang",
"replacement": "Tilbakestill pris/gang",
"sell": "Salg",
"show": "Vis",
"sold": "Abonnementsantall",
"subscribe": "Abonner",
"subscribeGroup": "Abonner på gruppe",
"tabs": {
"subscribe": "Abonner",
"subscribeApp": "App-konfigurasjon",
"subscribeConfig": "Abonnementskonfigurasjon",
"subscribeGroup": "Abonner gruppe"
},
"traffic": "trafikk",
"unitPrice": "Enhetspris",
"updateSuccess": "Oppdatering vellykket"
}
+75 -147
View File
@@ -1,161 +1,89 @@
{
"actions": "handlinger",
"app": {
"appDownloadURL": "App Nedlastings-URL",
"appIcon": "App-ikon",
"appList": "Appliste",
"appName": "App-navn",
"backupDomains": "Sikkerhetskopidomener",
"backupDomainsDescription": "Liste over sikkerhetskopidomener for domeneresolusjon, ett domene per linje",
"batchDelete": "Slett i gruppe",
"actions": {
"cancel": "Avbryt",
"communicationKey": "Kommunikasjonsnøkkel",
"communicationKeyDescription": "Nøkkel brukt for klientkommunikasjon",
"config": "Konfigurasjon",
"configApp": "Appkonfigurasjon",
"confirm": "Bekreft",
"confirmDelete": "Bekreft sletting",
"create": "Opprett",
"createApp": "Opprett app",
"createSuccess": "Opprettet vellykket",
"defaultVersion": "Standard",
"delete": "Slett",
"deleteWarning": "Denne handlingen kan ikke angres",
"describeDescription": "Brukes til å beskrive applikasjonen, vises i applisten",
"description": "Beskrivelse",
"downloadLink": "Nedlastingslenke",
"edit": "Rediger",
"editApp": "Rediger app",
"encryption": "Krypteringsmetode",
"encryptionDescription": "Velg krypteringsmetoden for klientkommunikasjon. Hvis valgt, vil klienten bruke denne metoden for å kommunisere med serveren",
"nameDescription": "Applikasjonsnavn, vises i applisten",
"platform": "Plattform",
"selectApp": "Velg App",
"selectAppDescription": "Velg appen du vil konfigurere, alle innstillinger vil gjelde for den valgte appen",
"startupPicture": "Oppstartsbilde",
"startupPictureDescription": "Oppstartsbilde, støtter nettverks- og lokale bilder. For nettverksbilder, vennligst skriv inn den fullstendige bilde-URLen",
"startupPicturePreview": "Forhåndsvisning av oppstartsbilde",
"startupPictureSkip": "Tid for å hoppe over oppstartsbilde",
"startupPictureSkipDescription": "Visningstid for oppstartsbilde i sekunder, skriv inn 0 for å ikke vise",
"subscriptionProtocol": "Abonnementsprotokoll",
"updateSuccess": "Oppdatert vellykket",
"version": "Versjon"
"save": "Lagre",
"saveTemplate": "Lagre Mal"
},
"cancel": "Avbryt",
"config": {
"description": "Administrer innstillinger for abonnementsystemet",
"restrictUserAgent": "Bruker-Agent Restriksjon",
"restrictUserAgentDescription": "Aktiver tilgangsrestriksjoner basert på Bruker-Agent",
"singleSubscriptionMode": "Enkelt Abonnementsmodus",
"singleSubscriptionModeDescription": "Når aktivert, vil alle brukerabonnementer bli konvertert til saldo",
"singleSubscriptionModeDescription": "Begrens brukere til ett aktivt abonnement. Eksisterende abonnementer påvirkes ikke",
"subscriptionDomain": "Abonnementsdomene",
"subscriptionDomainDescription": "Brukes for abonnement; la stå tomt for å bruke nettstedets domene",
"subscriptionDomainDescription": "Egendefinert domene for abonnementslenker",
"subscriptionDomainPlaceholder": "Skriv inn abonnementsdomene, ett per linje",
"subscriptionPath": "Abonnementssti",
"subscriptionPathDescription": "Brukes for abonnement; sørg for å starte systemet på nytt etter endring for optimal ytelse",
"subscriptionPathPlaceholder": "Skriv inn",
"updateSuccess": "Oppdatering vellykket",
"wildcardResolution": "Jokertegnoppløsning",
"wildcardResolutionDescription": "Brukes for abonnement"
"subscriptionPath": "Abonnementsbane",
"subscriptionPathDescription": "Egendefinert bane for abonnementsendepunkter (bedre ytelse etter systemrestart)",
"subscriptionPathPlaceholder": "Skriv inn abonnementsbane",
"title": "Abonnementsinnstillinger",
"updateError": "Oppdatering feilet",
"updateSuccess": "Innstillinger oppdatert",
"userAgentWhitelist": "Bruker-Agent Hviteliste",
"userAgentWhitelistDescription": "Tillatte Bruker-Agenter for abonnementstilgang, én per linje. Innebygde maler inkluderes automatisk i hvitelisten",
"userAgentWhitelistPlaceholder": "Skriv inn tillatte Bruker-Agenter, én per linje",
"wildcardResolution": "Wildcard-oppløsning",
"wildcardResolutionDescription": "Aktiver wildcard-domeneoppløsning for abonnementer"
},
"confirm": "Bekreft",
"confirmDelete": "Er du sikker på at du vil slette?",
"copy": "Kopier",
"copySuccess": "Kopiert vellykket",
"create": "Opprett",
"createSubscribe": "Opprett abonnement",
"createSuccess": "Opprettelse vellykket",
"delete": "slett",
"deleteSuccess": "Sletting vellykket",
"deleteWarning": "Data kan ikke gjenopprettes etter sletting, vennligst vær forsiktig.",
"deviceLimit": "Enheter/antall",
"edit": "rediger",
"editSubscribe": "Rediger abonnement",
"form": {
"Day": "Dag",
"Hour": "Time",
"Minute": "Minutt",
"Month": "Måned",
"NoLimit": "Ingen grense",
"Year": "År",
"annualReset": "Årlig Tilbakestilling",
"basic": "Grunnleggende",
"cancel": "Avbryt",
"confirm": "Bekreft",
"deductionRatio": "Automatisk/Manuell Fradragskonfigurasjon",
"deductionRatioDescription": "Brukes for fradrag. Som standard benytter systemet en automatisk beregningsalgoritme. Når en manuell andel er oppgitt, beregner systemet proporsjoner basert på tids- og trafikkforhold, og sikrer at totalen utgjør 100%.",
"description": "Beskrivelse",
"deviceLimit": "Enhetsbegrensning",
"discount": "Rabatt",
"discountDescription": "Sett rabatt basert på enhetspris",
"discountMonths": "Måneder",
"discountPercent": "Rabattprosent",
"discount_price": "Rabattert pris",
"duration": "Varighet (måneder)",
"groupId": "Abonnementsgruppe",
"inventory": "Abonnementsgrense",
"monthlyReset": "Månedlig Tilbakestilling",
"name": "Navn",
"noLimit": "Ubegrenset",
"noReset": "Ingen Tilbakestilling",
"pricing": "Prissetting",
"purchaseWithDiscount": "Tillat Fradrag",
"purchaseWithDiscountDescription": "Aktiver eller deaktiver funksjonaliteten for avmelding. Etter aktivering vil systemet utføre fradragsbehandling i henhold til de konfigurerte reglene og proporsjonene, og den gjenværende verdien vil bli returnert til saldoen",
"quota": "Kjøpskvote",
"renewalReset": "Fornyelsestilbakestilling",
"renewalResetDescription": "Tilbakestill syklus ved fornyelse",
"replacement": "Erstatningspris (per gang)",
"resetCycle": "Tilbakestill Syklus",
"resetOn1st": "Tilbakestill den 1.",
"selectResetCycle": "Vennligst velg en tilbakestillingssyklus",
"selectSubscribeGroup": "Vennligst velg abonnementsgruppe",
"selectUnitTime": "Vennligst velg enhetstid",
"server": "Tjeneste",
"serverGroup": "Tjenestegruppe",
"servers": "Servere",
"speedLimit": "Hastighetsbegrensning ",
"traffic": "Trafikk",
"unitPrice": "Enhetspris",
"unitTime": "Enhetstid"
"description": "Konfigurer abonnementsinnstillinger og klientmaler",
"messages": {
"noClients": "Ingen Klientmaler",
"noClientsDescription": "Ingen klientmaler er konfigurert ennå. Legg til din første mal for å komme i gang."
},
"group": {
"actions": "Handlinger",
"cancel": "Avbryt",
"confirm": "Bekreft",
"confirmDelete": "Er du sikker på at du vil slette?",
"create": "Opprett",
"createSubscribeGroup": "Opprett ny abonnementsgruppe",
"createSuccess": "Opprettelse vellykket",
"delete": "Slett",
"deleteSuccess": "Sletting vellykket",
"deleteWarning": "Data kan ikke gjenopprettes etter sletting, vær forsiktig.",
"description": "Beskrivelse",
"edit": "Rediger",
"editSubscribeGroup": "Rediger abonnementsgruppe",
"form": {
"cancel": "Avbryt",
"confirm": "Bekreft",
"description": "Beskrivelse",
"name": "Navn"
"protocol": {
"clients": {
"clash": {
"features": "Stort økosystem, omfattende regler, aktivt fellesskap"
},
"egern": {
"features": "Moderne iOS-klient, utmerket ytelse"
},
"hiddify": {
"features": "Flere plattformer, omfattende protokoller, nybegynnervennlig"
},
"loon": {
"features": "Avansert iOS-klient, rike regler, vakkert grensesnitt"
},
"netch": {
"features": "Spillfokusert proxy-klient"
},
"quantumult": {
"features": "Avansert iOS-klient, fleksible regler, rike skript"
},
"shadowrocket": {
"features": "Klassisk iOS-klient, fleksibel konfigurasjon"
},
"singbox": {
"features": "Nyeste kjerne, offisiell GUI, støtte for flere plattformer"
},
"stash": {
"features": "Moderne mobilgrensesnitt, omfattende protokoller"
},
"surfboard": {
"features": "Gratis, aktiv utvikling, moderne grensesnitt"
},
"surge": {
"features": "Premium iOS/Mac-verktøy, kraftige funksjoner"
},
"v2box": {
"features": "Brukervennlig V2Ray-klient"
},
"v2rayn": {
"features": "Populær Windows-klient, funksjonsrik"
},
"v2rayng": {
"features": "Populær Android-klient, lettvekts"
}
},
"name": "Navn",
"title": "Liste over abonnementsgrupper",
"updateSuccess": "Oppdatering vellykket",
"updatedAt": "Oppdatert"
"description": "Administrer abonnementsmaler for proxy-klienter",
"features": "Nøkkelfunksjoner",
"platforms": "Plattformer",
"subscribeTemplate": "Abonnementsmal Konfigurasjon",
"templateContent": "Malinnhold",
"templatePlaceholder": "Skriv inn klientkonfigurasjonsmal...",
"title": "Klient Abonnementsmaler"
},
"inventory": "Abonnementsgrense",
"name": "Navn",
"quota": "Kjøpsgrense/gang",
"replacement": "Tilbakestill pris/gang",
"sell": "Salg",
"show": "Vis",
"sold": "Abonnementsantall",
"subscribe": "Abonner",
"subscribeGroup": "Abonner på gruppe",
"tabs": {
"subscribe": "Abonner",
"subscribeApp": "App-konfigurasjon",
"subscribeConfig": "Abonnementskonfigurasjon",
"subscribeGroup": "Abonner gruppe"
},
"traffic": "trafikk",
"unitPrice": "Enhetspris",
"updateSuccess": "Oppdatering vellykket"
"title": "Abonnementsadministrasjon"
}