More react

- consolidated lang items
- proxy host paths work
This commit is contained in:
Jamie Curnow
2025-10-16 18:59:19 +10:00
parent 7af01d0fc7
commit f2b5b19a83
56 changed files with 946 additions and 928 deletions

View File

@@ -63,8 +63,33 @@ const changeLocale = (locale: string): void => {
// This is a translation component that wraps the translation in a span with a data
// attribute so devs can inspect the element to see the translation ID
const T = ({ id, data }: { id: string; data?: any }) => {
return <span data-translation-id={id}>{intl.formatMessage({ id }, data)}</span>;
const T = ({
id,
data,
tData,
}: {
id: string;
data?: Record<string, string | number | undefined>;
tData?: Record<string, string>;
}) => {
const translatedData: Record<string, string> = {};
if (tData) {
// iterate over tData and translate each value
Object.entries(tData).forEach(([key, value]) => {
translatedData[key] = intl.formatMessage({ id: value });
});
}
return (
<span data-translation-id={id}>
{intl.formatMessage(
{ id },
{
...data,
...translatedData,
},
)}
</span>
);
};
export { localeOptions, getFlagCodeForLocale, getLocale, createIntl, changeLocale, intl, T };

View File

@@ -1,3 +1,3 @@
{
"dashboard.title": "Armaturenbrett"
"dashboard": "Armaturenbrett"
}

View File

@@ -1,33 +1,28 @@
{
"access.access-count": "{count} {count, plural, one {Rule} other {Rules}}",
"access.actions-title": "Access List #{id}",
"access.add": "Add Access List",
"access.auth-count": "{count} {count, plural, one {User} other {Users}}",
"access.edit": "Edit Access",
"access.empty": "There are no Access Lists",
"access.help-rules-last": "When at least 1 rule exists, this deny all rule will be added last",
"access.help.rules-order": "Note that the allow and deny directives will be applied in the order they are defined.",
"access.new": "New Access",
"access.pass-auth": "Pass Auth to Upstream",
"access.public": "Publicly Accessible",
"access.satisfy-any": "Satisfy Any",
"access.subtitle": "{users} {users, plural, one {User} other {Users}}, {rules} {rules, plural, one {Rule} other {Rules}} - Created: {date}",
"access.title": "Access",
"access-list": "Access List",
"access-list.access-count": "{count} {count, plural, one {Rule} other {Rules}}",
"access-list.auth-count": "{count} {count, plural, one {User} other {Users}}",
"access-list.help-rules-last": "When at least 1 rule exists, this deny all rule will be added last",
"access-list.help.rules-order": "Note that the allow and deny directives will be applied in the order they are defined.",
"access-list.pass-auth": "Pass Auth to Upstream",
"access-list.public": "Publicly Accessible",
"access-list.satisfy-any": "Satisfy Any",
"access-list.subtitle": "{users} {users, plural, one {User} other {Users}}, {rules} {rules, plural, one {Rule} other {Rules}} - Created: {date}",
"access-lists": "Access Lists",
"action.add": "Add",
"action.add-location": "Add Location",
"action.close": "Close",
"action.delete": "Delete",
"action.disable": "Disable",
"action.edit": "Edit",
"action.enable": "Enable",
"action.permissions": "Permissions",
"action.view-details": "View Details",
"auditlog.title": "Audit Log",
"auditlogs": "Audit Logs",
"cancel": "Cancel",
"certificates.actions-title": "Certificate #{id}",
"certificates.add": "Add Certificate",
"certificate": "Certificate",
"certificates": "Certificates",
"certificates.custom": "Custom Certificate",
"certificates.empty": "There are no Certificates",
"certificates.title": "SSL Certificates",
"close": "Close",
"column.access": "Access",
"column.authorization": "Authorization",
"column.authorizations": "Authorizations",
@@ -52,16 +47,10 @@
"column.ssl": "SSL",
"column.status": "Status",
"created-on": "Created: {date}",
"dashboard.title": "Dashboard",
"dead-host.delete.content": "Are you sure you want to delete this 404 host?",
"dead-host.delete.title": "Delete 404 Host",
"dead-host.edit": "Edit 404 Host",
"dead-host.new": "New 404 Host",
"dead-hosts.actions-title": "404 Host #{id}",
"dead-hosts.add": "Add 404 Host",
"dashboard": "Dashboard",
"dead-host": "404 Host",
"dead-hosts": "404 Hosts",
"dead-hosts.count": "{count} {count, plural, one {404 Host} other {404 Hosts}}",
"dead-hosts.empty": "There are no 404 Hosts",
"dead-hosts.title": "404 Hosts",
"disabled": "Disabled",
"domain-names": "Domain Names",
"domain-names.max": "{count} domain names maximum",
@@ -102,7 +91,6 @@
"event.updated-redirection-host": "Updated Redirection Host",
"event.updated-user": "Updated User",
"footer.github-fork": "Fork me on Github",
"generic.flags.title": "Options",
"host.flags.block-exploits": "Block Common Exploits",
"host.flags.cache-assets": "Cache Assets",
"host.flags.preserve-path": "Preserve Path",
@@ -110,7 +98,7 @@
"host.flags.websockets-upgrade": "Websockets Support",
"host.forward-port": "Forward Port",
"host.forward-scheme": "Scheme",
"hosts.title": "Hosts",
"hosts": "Hosts",
"http-only": "HTTP Only",
"lets-encrypt": "Let's Encrypt",
"loading": "Loading…",
@@ -119,27 +107,23 @@
"nginx-config.placeholder": "# Enter your custom Nginx configuration here at your own risk!",
"no-permission-error": "You do not have access to view this.",
"notfound.action": "Take me home",
"notfound.text": "We are sorry but the page you are looking for was not found",
"notfound.content": "We are sorry but the page you are looking for was not found",
"notfound.title": "Oops… You just found an error page",
"notification.access-deleted": "Access has been deleted",
"notification.access-saved": "Access has been saved",
"notification.dead-host-saved": "404 Host has been saved",
"notification.error": "Error",
"notification.host-deleted": "Host has been deleted",
"notification.host-disabled": "Host has been disabled",
"notification.host-enabled": "Host has been enabled",
"notification.proxy-host-saved": "Proxy Host has been saved",
"notification.redirection-host-saved": "Redirection Host has been saved",
"notification.stream-deleted": "Stream has been deleted",
"notification.stream-disabled": "Stream has been disabled",
"notification.stream-enabled": "Stream has been enabled",
"notification.object-deleted": "{object} has been deleted",
"notification.object-disabled": "{object} has been disabled",
"notification.object-enabled": "{object} has been enabled",
"notification.object-saved": "{object} has been saved",
"notification.success": "Success",
"notification.user-deleted": "User has been deleted",
"notification.user-disabled": "User has been disabled",
"notification.user-enabled": "User has been enabled",
"notification.user-saved": "User has been saved",
"object.actions-title": "{object} #{id}",
"object.add": "Add {object}",
"object.delete": "Delete {object}",
"object.delete.content": "Are you sure you want to delete this {object}?",
"object.edit": "Edit {object}",
"object.empty": "There are no {objects}",
"offline": "Offline",
"online": "Online",
"options": "Options",
"password": "Password",
"password.generate": "Generate random password",
"password.hide": "Hide Password",
@@ -150,55 +134,37 @@
"permissions.visibility.all": "All Items",
"permissions.visibility.title": "Item Visibility",
"permissions.visibility.user": "Created Items Only",
"proxy-host.edit": "Edit Proxy Host",
"proxy-host": "Proxy Host",
"proxy-host.forward-host": "Forward Hostname / IP",
"proxy-host.new": "New Proxy Host",
"proxy-hosts.actions-title": "Proxy Host #{id}",
"proxy-hosts.add": "Add Proxy Host",
"proxy-hosts": "Proxy Hosts",
"proxy-hosts.count": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}",
"proxy-hosts.empty": "There are no Proxy Hosts",
"proxy-hosts.title": "Proxy Hosts",
"redirection-host.delete.content": "Are you sure you want to delete this Redirection host?",
"redirection-host.delete.title": "Delete Redirection Host",
"public": "Public",
"redirection-host": "Redirection Host",
"redirection-host.forward-domain": "Forward Domain",
"redirection-host.new": "New Redirection Host",
"redirection-hosts.actions-title": "Redirection Host #{id}",
"redirection-hosts.add": "Add Redirection Host",
"redirection-hosts": "Redirection Hosts",
"redirection-hosts.count": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}",
"redirection-hosts.empty": "There are no Redirection Hosts",
"redirection-hosts.title": "Redirection Hosts",
"role.admin": "Administrator",
"role.standard-user": "Standard User",
"save": "Save",
"settings.title": "Settings",
"settings": "Settings",
"setup.preamble": "Get started by creating your admin account.",
"setup.title": "Welcome!",
"sign-in": "Sign in",
"ssl-certificate": "SSL Certificate",
"stream.delete.content": "Are you sure you want to delete this Stream?",
"stream.delete.title": "Delete Stream",
"stream.edit": "Edit Stream",
"stream": "Stream",
"stream.forward-host": "Forward Host",
"stream.incoming-port": "Incoming Port",
"stream.new": "New Stream",
"streams.actions-title": "Stream #{id}",
"streams.add": "Add Stream",
"streams": "Streams",
"streams.count": "{count} {count, plural, one {Stream} other {Streams}}",
"streams.empty": "There are no Streams",
"streams.tcp": "TCP",
"streams.title": "Streams",
"streams.udp": "UDP",
"user": "User",
"user.change-password": "Change Password",
"user.confirm-password": "Confirm Password",
"user.current-password": "Current Password",
"user.delete.content": "Are you sure you want to delete this user?",
"user.delete.title": "Delete User",
"user.edit": "Edit User",
"user.edit-profile": "Edit Profile",
"user.flags.title": "Properties",
"user.full-name": "Full Name",
"user.logout": "Logout",
"user.new": "New User",
"user.new-password": "New Password",
"user.nickname": "Nickname",
"user.set-password": "Set Password",
@@ -206,8 +172,5 @@
"user.switch-dark": "Switch to Dark mode",
"user.switch-light": "Switch to Light mode",
"username": "Username",
"users.actions-title": "User #{id}",
"users.add": "Add User",
"users.empty": "There are no Users",
"users.title": "Users"
"users": "Users"
}

View File

@@ -1,3 +1,3 @@
{
"dashboard.title": "داشبورد"
"dashboard": "داشبورد"
}

View File

@@ -1,5 +1,5 @@
{
"dashboard.title": {
"dashboard": {
"defaultMessage": "Armaturenbrett"
}
}

View File

@@ -1,49 +1,43 @@
{
"access.access-count": {
"access-list": {
"defaultMessage": "Access List"
},
"access-list.access-count": {
"defaultMessage": "{count} {count, plural, one {Rule} other {Rules}}"
},
"access.actions-title": {
"defaultMessage": "Access List #{id}"
},
"access.add": {
"defaultMessage": "Add Access List"
},
"access.auth-count": {
"access-list.auth-count": {
"defaultMessage": "{count} {count, plural, one {User} other {Users}}"
},
"access.edit": {
"defaultMessage": "Edit Access"
},
"access.empty": {
"defaultMessage": "There are no Access Lists"
},
"access.help-rules-last": {
"access-list.help-rules-last": {
"defaultMessage": "When at least 1 rule exists, this deny all rule will be added last"
},
"access.help.rules-order": {
"access-list.help.rules-order": {
"defaultMessage": "Note that the allow and deny directives will be applied in the order they are defined."
},
"access.new": {
"defaultMessage": "New Access"
},
"access.pass-auth": {
"access-list.pass-auth": {
"defaultMessage": "Pass Auth to Upstream"
},
"access.public": {
"access-list.public": {
"defaultMessage": "Publicly Accessible"
},
"access.satisfy-any": {
"access-list.satisfy-any": {
"defaultMessage": "Satisfy Any"
},
"access.subtitle": {
"access-list.subtitle": {
"defaultMessage": "{users} {users, plural, one {User} other {Users}}, {rules} {rules, plural, one {Rule} other {Rules}} - Created: {date}"
},
"access.title": {
"defaultMessage": "Access"
"access-lists": {
"defaultMessage": "Access Lists"
},
"action.add": {
"defaultMessage": "Add"
},
"action.add-location": {
"defaultMessage": "Add Location"
},
"action.close": {
"defaultMessage": "Close"
},
"action.delete": {
"defaultMessage": "Delete"
},
@@ -62,30 +56,21 @@
"action.view-details": {
"defaultMessage": "View Details"
},
"auditlog.title": {
"defaultMessage": "Audit Log"
"auditlogs": {
"defaultMessage": "Audit Logs"
},
"cancel": {
"defaultMessage": "Cancel"
},
"certificates.actions-title": {
"defaultMessage": "Certificate #{id}"
"certificate": {
"defaultMessage": "Certificate"
},
"certificates.add": {
"defaultMessage": "Add Certificate"
"certificates": {
"defaultMessage": "Certificates"
},
"certificates.custom": {
"defaultMessage": "Custom Certificate"
},
"certificates.empty": {
"defaultMessage": "There are no Certificates"
},
"certificates.title": {
"defaultMessage": "SSL Certificates"
},
"close": {
"defaultMessage": "Close"
},
"column.access": {
"defaultMessage": "Access"
},
@@ -158,36 +143,18 @@
"created-on": {
"defaultMessage": "Created: {date}"
},
"dashboard.title": {
"dashboard": {
"defaultMessage": "Dashboard"
},
"dead-host.delete.content": {
"defaultMessage": "Are you sure you want to delete this 404 host?"
"dead-host": {
"defaultMessage": "404 Host"
},
"dead-host.delete.title": {
"defaultMessage": "Delete 404 Host"
},
"dead-host.edit": {
"defaultMessage": "Edit 404 Host"
},
"dead-host.new": {
"defaultMessage": "New 404 Host"
},
"dead-hosts.actions-title": {
"defaultMessage": "404 Host #{id}"
},
"dead-hosts.add": {
"defaultMessage": "Add 404 Host"
"dead-hosts": {
"defaultMessage": "404 Hosts"
},
"dead-hosts.count": {
"defaultMessage": "{count} {count, plural, one {404 Host} other {404 Hosts}}"
},
"dead-hosts.empty": {
"defaultMessage": "There are no 404 Hosts"
},
"dead-hosts.title": {
"defaultMessage": "404 Hosts"
},
"disabled": {
"defaultMessage": "Disabled"
},
@@ -308,9 +275,6 @@
"footer.github-fork": {
"defaultMessage": "Fork me on Github"
},
"generic.flags.title": {
"defaultMessage": "Options"
},
"host.flags.block-exploits": {
"defaultMessage": "Block Common Exploits"
},
@@ -332,7 +296,7 @@
"host.forward-scheme": {
"defaultMessage": "Scheme"
},
"hosts.title": {
"hosts": {
"defaultMessage": "Hosts"
},
"http-only": {
@@ -359,62 +323,47 @@
"notfound.action": {
"defaultMessage": "Take me home"
},
"notfound.text": {
"notfound.content": {
"defaultMessage": "We are sorry but the page you are looking for was not found"
},
"notfound.title": {
"defaultMessage": "Oops… You just found an error page"
},
"notification.access-deleted": {
"defaultMessage": "Access has been deleted"
},
"notification.access-saved": {
"defaultMessage": "Access has been saved"
},
"notification.dead-host-saved": {
"defaultMessage": "404 Host has been saved"
},
"notification.error": {
"defaultMessage": "Error"
},
"notification.host-deleted": {
"defaultMessage": "Host has been deleted"
"notification.object-deleted": {
"defaultMessage": "{object} has been deleted"
},
"notification.host-disabled": {
"defaultMessage": "Host has been disabled"
"notification.object-disabled": {
"defaultMessage": "{object} has been disabled"
},
"notification.host-enabled": {
"defaultMessage": "Host has been enabled"
"notification.object-enabled": {
"defaultMessage": "{object} has been enabled"
},
"notification.proxy-host-saved": {
"defaultMessage": "Proxy Host has been saved"
},
"notification.redirection-host-saved": {
"defaultMessage": "Redirection Host has been saved"
},
"notification.stream-deleted": {
"defaultMessage": "Stream has been deleted"
},
"notification.stream-disabled": {
"defaultMessage": "Stream has been disabled"
},
"notification.stream-enabled": {
"defaultMessage": "Stream has been enabled"
"notification.object-saved": {
"defaultMessage": "{object} has been saved"
},
"notification.success": {
"defaultMessage": "Success"
},
"notification.user-deleted": {
"defaultMessage": "User has been deleted"
"object.actions-title": {
"defaultMessage": "{object} #{id}"
},
"notification.user-disabled": {
"defaultMessage": "User has been disabled"
"object.add": {
"defaultMessage": "Add {object}"
},
"notification.user-enabled": {
"defaultMessage": "User has been enabled"
"object.delete": {
"defaultMessage": "Delete {object}"
},
"notification.user-saved": {
"defaultMessage": "User has been saved"
"object.delete.content": {
"defaultMessage": "Are you sure you want to delete this {object}?"
},
"object.edit": {
"defaultMessage": "Edit {object}"
},
"object.empty": {
"defaultMessage": "There are no {objects}"
},
"offline": {
"defaultMessage": "Offline"
@@ -422,6 +371,9 @@
"online": {
"defaultMessage": "Online"
},
"options": {
"defaultMessage": "Options"
},
"password": {
"defaultMessage": "Password"
},
@@ -452,57 +404,33 @@
"permissions.visibility.user": {
"defaultMessage": "Created Items Only"
},
"proxy-host.edit": {
"defaultMessage": "Edit Proxy Host"
"proxy-host": {
"defaultMessage": "Proxy Host"
},
"proxy-host.forward-host": {
"defaultMessage": "Forward Hostname / IP"
},
"proxy-host.new": {
"defaultMessage": "New Proxy Host"
},
"proxy-hosts.actions-title": {
"defaultMessage": "Proxy Host #{id}"
},
"proxy-hosts.add": {
"defaultMessage": "Add Proxy Host"
"proxy-hosts": {
"defaultMessage": "Proxy Hosts"
},
"proxy-hosts.count": {
"defaultMessage": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}"
},
"proxy-hosts.empty": {
"defaultMessage": "There are no Proxy Hosts"
"public": {
"defaultMessage": "Public"
},
"proxy-hosts.title": {
"defaultMessage": "Proxy Hosts"
},
"redirection-host.delete.content": {
"defaultMessage": "Are you sure you want to delete this Redirection host?"
},
"redirection-host.delete.title": {
"defaultMessage": "Delete Redirection Host"
"redirection-host": {
"defaultMessage": "Redirection Host"
},
"redirection-host.forward-domain": {
"defaultMessage": "Forward Domain"
},
"redirection-host.new": {
"defaultMessage": "New Redirection Host"
},
"redirection-hosts.actions-title": {
"defaultMessage": "Redirection Host #{id}"
},
"redirection-hosts.add": {
"defaultMessage": "Add Redirection Host"
"redirection-hosts": {
"defaultMessage": "Redirection Hosts"
},
"redirection-hosts.count": {
"defaultMessage": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}"
},
"redirection-hosts.empty": {
"defaultMessage": "There are no Redirection Hosts"
},
"redirection-hosts.title": {
"defaultMessage": "Redirection Hosts"
},
"role.admin": {
"defaultMessage": "Administrator"
},
@@ -512,7 +440,7 @@
"save": {
"defaultMessage": "Save"
},
"settings.title": {
"settings": {
"defaultMessage": "Settings"
},
"setup.preamble": {
@@ -527,14 +455,8 @@
"ssl-certificate": {
"defaultMessage": "SSL Certificate"
},
"stream.delete.content": {
"defaultMessage": "Are you sure you want to delete this Stream?"
},
"stream.delete.title": {
"defaultMessage": "Delete Stream"
},
"stream.edit": {
"defaultMessage": "Edit Stream"
"stream": {
"defaultMessage": "Stream"
},
"stream.forward-host": {
"defaultMessage": "Forward Host"
@@ -542,30 +464,21 @@
"stream.incoming-port": {
"defaultMessage": "Incoming Port"
},
"stream.new": {
"defaultMessage": "New Stream"
},
"streams.actions-title": {
"defaultMessage": "Stream #{id}"
},
"streams.add": {
"defaultMessage": "Add Stream"
"streams": {
"defaultMessage": "Streams"
},
"streams.count": {
"defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}"
},
"streams.empty": {
"defaultMessage": "There are no Streams"
},
"streams.tcp": {
"defaultMessage": "TCP"
},
"streams.title": {
"defaultMessage": "Streams"
},
"streams.udp": {
"defaultMessage": "UDP"
},
"user": {
"defaultMessage": "User"
},
"user.change-password": {
"defaultMessage": "Change Password"
},
@@ -575,30 +488,15 @@
"user.current-password": {
"defaultMessage": "Current Password"
},
"user.delete.content": {
"defaultMessage": "Are you sure you want to delete this user?"
},
"user.delete.title": {
"defaultMessage": "Delete User"
},
"user.edit": {
"defaultMessage": "Edit User"
},
"user.edit-profile": {
"defaultMessage": "Edit Profile"
},
"user.flags.title": {
"defaultMessage": "Properties"
},
"user.full-name": {
"defaultMessage": "Full Name"
},
"user.logout": {
"defaultMessage": "Logout"
},
"user.new": {
"defaultMessage": "New User"
},
"user.new-password": {
"defaultMessage": "New Password"
},
@@ -620,16 +518,7 @@
"username": {
"defaultMessage": "Username"
},
"users.actions-title": {
"defaultMessage": "User #{id}"
},
"users.add": {
"defaultMessage": "Add User"
},
"users.empty": {
"defaultMessage": "There are no Users"
},
"users.title": {
"users": {
"defaultMessage": "Users"
}
}

View File

@@ -1,5 +1,5 @@
{
"dashboard.title": {
"dashboard": {
"defaultMessage": "داشبورد"
}
}