i18n rework
/ build (push) Successful in 2m0s Details
/ build_x64 (push) Successful in 10m31s Details
/ build_arm64 (push) Successful in 3m19s Details

This commit is contained in:
core 2023-10-09 21:24:41 -04:00
parent ae990cf977
commit aadd420f71
Signed by: core
GPG Key ID: FDBF740DADDCEECF
26 changed files with 71 additions and 71 deletions

View File

@ -6,8 +6,8 @@
"verify": "Verify by entering the 6-digit code shown in your authenticator into the box below.",
"button": "Enable 2FA",
"error": {
"generic": "Unable to enable 2fa: {err}",
"generic": "Unable to enable 2fa: {{err}}",
"api": "Unable to contact the server. Try again later.",
"ERR_UNAUTHORIZED": "Incorrect 2FA code"
}
}
}

View File

@ -1,5 +1,5 @@
{
"title": "{title} | Trifid Web UI",
"title": "{{title}} | Trifid Web UI",
"page": {
"itworks": "It Works!",
"admin": "Admin Panel",
@ -16,4 +16,4 @@
},
"logout": "Log out",
"loading": "Dashboard is loading"
}
}

View File

@ -23,14 +23,14 @@
}
},
"enroll": {
"title": "Enrolling host {host}",
"title": "Enrolling host {{host}}",
"explainer": "Enrolling this host will allow it to communicate on your network. You'll need to have compatible client software installed first.",
"done": "Done, return me to the hosts page",
"cancel": "Nevermind",
"code": "Input {code} as your enrollment code into any trifid-compatible client software to enroll. It will expire in {expires} minutes."
"code": "Input {code} as your enrollment code into any trifid-compatible client software to enroll. It will expire in {{expires}} minutes."
},
"delete": {
"title": "Are you sure you want to delete the host {host}?",
"title": "Are you sure you want to delete the host {{host}}?",
"explainer": "This action cannot be undone. This host will still be able to connect to the network unless you block it first.",
"confirm": "I'm sure",
"cancel": "Nevermind",
@ -38,4 +38,4 @@
"ERR_DB_ERROR": "Removal failed"
}
}
}
}

View File

@ -1,7 +1,7 @@
{
"header": "It works!",
"body": "If you're seeing this page, tfweb is installed and (probably) correctly configured.",
"linkbody": "Perhaps you meant to visit the {link0} or {link1}?",
"linkbody": "Perhaps you meant to visit the {{link0}} or {{link1}}?",
"linkbody.link0": "admin panel",
"linkbody.link1": "create an account"
}
}

View File

@ -5,13 +5,13 @@
"button": "Log in",
"email": "Check your email",
"emailbody": "We sent you an email with a link to complete logging in.",
"emailbody2": "Didn't work? Check your junk inbox or click {link0} to try again.",
"emailbody2": "Didn't work? Check your junk inbox or click {{link0}} to try again.",
"emailbody2.link0": "here",
"error": {
"invalidEmail": "That email address isn't valid. Try again.",
"generic": "There was an error logging you in. Try again or contact support with the error code {err}",
"generic": "There was an error logging you in. Try again or contact support with the error code {{err}}",
"usermissing": "That user does not exist."
},
"need": "Don't have an account? {link0}",
"need": "Don't have an account? {{link0}}",
"need.link0": "Signup"
}
}

View File

@ -3,10 +3,10 @@
"explain": "This defines what IP addresses will be assigned to your devices. The range you enter below must fall within either the RFC 1918 Private Address Space or the RFC 6598 Shared Address Space. Enter your network via CIDR notation.",
"label": "Network range",
"button": "Create network",
"valid": "Valid - {numIps} addresses ({start} to {end})",
"valid": "Valid - {{numIps}} addresses ({{start}} to {{end}})",
"invalid": "Invalid",
"error": {
"generic": "Unable to create network: {err}",
"generic": "Unable to create network: {{err}}",
"api": "Unable to contact the server. Try again later."
}
}
}

View File

@ -1,6 +1,6 @@
{
"delete": {
"title": "Are you sure you want to delete the role {rule}?",
"title": "Are you sure you want to delete the role {{rule}}?",
"explainer": "This action cannot be undone. This role must be removed from all hosts, lighthouses, and relays prior to deleting it.",
"confirm": "I'm sure",
"cancel": "Nevermind",
@ -46,7 +46,7 @@
}
},
"edit": {
"title": "Editing role {rule}",
"title": "Editing role {{rule}}",
"any": "Any",
"name": "Role name",
"desc": "Role description",
@ -74,4 +74,4 @@
"cancel": "Cancel"
}
}
}
}

View File

@ -5,14 +5,14 @@
"button": "Create account",
"email": "Check your email",
"emailbody": "We sent you an email with a link to complete signing up.",
"emailbody2": "Didn't work? Check your junk inbox or click {link0} to try again.",
"emailbody2": "Didn't work? Check your junk inbox or click {{link0}} to try again.",
"emailbody2.link0": "here",
"error": {
"invalidEmail": "That email address isn't valid. Try again.",
"generic": "There was an error logging you in. Try again or contact support with the error code {err}",
"userexists": "That user already exists. Try {link0}?",
"generic": "There was an error logging you in. Try again or contact support with the error code {{err}}",
"userexists": "That user already exists. Try {{link0}}?",
"userexists.link0": "logging in"
},
"already": "Already have an account? {link0}",
"already": "Already have an account? {{link0}}",
"already.link0": "Login"
}
}

View File

@ -14,12 +14,12 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.admin")}})}</title>
<title>{$t("common.title", {title: $t("common.page.admin")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>
<h1>{$t('itworks.header')}</h1>
<p>{$t('itworks.body')}</p>
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
<p>{@html $t('itworks.linkbody', {values:{link0:'<a href="/admin">'+$t('itworks.linkbody.link0')+'</a>',link1:'<a href="/signup">'+$t('itworks.linkbody.link1')+'</a>'}})}</p>
<p>{@html $t('itworks.linkbody', {link0:'<a href="/admin">'+$t('itworks.linkbody.link0')+'</a>',link1:'<a href="/signup">'+$t('itworks.linkbody.link1')+'</a>'})}</p>
</LoadingWrapper>

View File

@ -67,7 +67,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.2fa")}})}</title>
<title>{$t("common.title", {title: $t("common.page.2fa")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -102,7 +102,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.2fasetup")}})}</title>
<title>{$t("common.title", {title: $t("common.page.2fasetup")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -49,7 +49,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -68,7 +68,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.admin")}})}</title>
<title>{$t("common.title", {title: $t("common.page.admin")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -56,7 +56,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -96,7 +96,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.hosts")}})}</title>
<title>{$t("common.title", {title: $t("common.page.hosts")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -67,7 +67,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -116,12 +116,12 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.hosts")}})}</title>
<title>{$t("common.title", {title: $t("common.page.hosts")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>
<AdminLayout selected="hosts">
<h3>{$t("hosts.delete.title", {values: {host: host.data.name}})}</h3>
<h3>{$t("hosts.delete.title", {host: host.data.name})}</h3>
<p>{$t("hosts.delete.explainer")}</p>
{#if loading}
<button disabled class="btn btn-danger"><i class="fas fa-gear fa-spin"></i></button>

View File

@ -68,7 +68,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -100,17 +100,17 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.hosts")}})}</title>
<title>{$t("common.title", {title: $t("common.page.hosts")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>
<AdminLayout selected="hosts">
<h3>{$t("hosts.enroll.title", {values: {host: host.data.name}})}</h3>
<h3>{$t("hosts.enroll.title", {host: host.data.name})}</h3>
<p>{$t("hosts.enroll.explainer")}</p>
{#if loading}
<button disabled class="btn btn-success"><i class="fas fa-gear fa-spin"></i></button>
{:else}
<p>{$t("hosts.enroll.code", {values:{code: code.code, expires: code.lifetimeSeconds / 60}})}</p>
<p>{$t("hosts.enroll.code", {code: code.code, expires: code.lifetimeSeconds / 60})}</p>
<button on:click={window.location.href = "/hosts"} class="btn btn-success">{$t("hosts.enroll.done")}</button>
{/if}

View File

@ -59,7 +59,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -164,7 +164,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.hosts")}})}</title>
<title>{$t("common.title", {title: $t("common.page.hosts")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -51,7 +51,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -68,7 +68,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.lighthouses")}})}</title>
<title>{$t("common.title", {title: $t("common.page.lighthouses")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -55,7 +55,7 @@
if (err.code == "ERR_USER_DOES_NOT_EXIST") {
errForm = $t('login.error.usermissing');
} else {
errForm = $t('login.error.generic', {values: {err: (auth_result[1] as APIError).code}});
errForm = $t('login.error.generic', {err: (auth_result[1] as APIError).code});
}
loading = false;
@ -68,7 +68,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.login")}})}</title>
<title>{$t("common.title", {title: $t("common.page.login")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>
@ -80,7 +80,7 @@
<p class="card-text">{$t('login.emailbody')}</p>
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
<p class="card-text">{@html $t('login.emailbody2', {values:{link0:'<a href="/admin?definitely_not_taking_advantage_of_the_redirect">'+$t('login.emailbody2.link0')+'</a>'}})}</p>
<p class="card-text">{@html $t('login.emailbody2', {link0:'<a href="/admin?definitely_not_taking_advantage_of_the_redirect">'+$t('login.emailbody2.link0')+'</a>'})}</p>
{:else}
<h4 class="card-title">{$t('login.title')}</h4>
<h6 class="card-subtitle">{$t('login.subtitle')}</h6>
@ -99,7 +99,7 @@
{/if}
</form>
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
<p class="block mt-2 mb-0">{@html $t('login.need', {values:{link0:'<a href="/signup">'+$t('login.need.link0')+'</a>'}})}</p>
<p class="block mt-2 mb-0">{@html $t('login.need', {link0:'<a href="/signup">'+$t('login.need.link0')+'</a>'})}</p>
{/if}
</div>
</div>

View File

@ -45,7 +45,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.login")}})}</title>
<title>{$t("common.title", {title: $t("common.page.login")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -47,7 +47,7 @@
let resp_json = await e.response.json();
if (resp_json.errors[0].code != "ERR_NO_ORG") {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -63,7 +63,7 @@
let cidr = "100.100.0.0/22";
let valid = true;
let sub = $t("networkcreate.valid", {values:{numIps:$number(1024), start: "100.64.0.0", end: "100.127.255.255"}})
let sub = $t("networkcreate.valid", {numIps:$number(1024), start: "100.64.0.0", end: "100.127.255.255"})
const regex = new RegExp(/^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$/im);
@ -138,7 +138,7 @@
let first = [first_num >>> 24 & 0xFF, first_num >>> 16 & 0xFF, first_num >>> 8 & 0xFF, first_num & 0xFF].join(".");
let last = [last_num >>> 24 & 0xFF, last_num >>> 16 & 0xFF, last_num >>> 8 & 0xFF, last_num & 0xFF].join(".");
sub = $t("networkcreate.valid", {values:{numIps:$number(addressCount), start: first, end: last}});
sub = $t("networkcreate.valid", {numIps:$number(addressCount), start: first, end: last});
valid = true;
}
@ -161,7 +161,7 @@
return;
}
error = $t('networkcreate.error.generic', {values:{err:etext}});
error = $t('networkcreate.error.generic', {err:etext});
loading = false;
return;
}
@ -173,7 +173,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.networkcreate")}})}</title>
<title>{$t("common.title", {title: $t("common.page.networkcreate")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -51,7 +51,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -68,7 +68,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.relays")}})}</title>
<title>{$t("common.title", {title: $t("common.page.relays")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -53,7 +53,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -80,7 +80,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.roles")}})}</title>
<title>{$t("common.title", {title: $t("common.page.roles")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -68,7 +68,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -117,12 +117,12 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.roles")}})}</title>
<title>{$t("common.title", {title: $t("common.page.roles")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>
<AdminLayout selected="roles">
<h3>{$t("roles.delete.title", {values: {rule: role.data.name}})}</h3>
<h3>{$t("roles.delete.title", {rule: role.data.name})}</h3>
<p>{$t("roles.delete.explainer")}</p>
{#if loading}
<button disabled class="btn btn-danger"><i class="fas fa-gear fa-spin"></i></button>

View File

@ -276,7 +276,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -346,12 +346,12 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.roles")}})}</title>
<title>{$t("common.title", {title: $t("common.page.roles")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>
<AdminLayout selected="roles">
<h3>{$t("roles.edit.title", {values: {rule: roleName}})}</h3>
<h3>{$t("roles.edit.title", {rule: roleName})}</h3>
<form>
<label class="mt-2 form-label" for="roleDesc">{$t("roles.edit.desc")}</label>
<input class="form-control" bind:value={roleDescription} type="text" id="roleDesc" />

View File

@ -58,7 +58,7 @@
return;
} else {
isError = true;
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
error = $t("networkcreate.error.generic", {err:resp_json.errors[0].code});
loading = false;
return;
}
@ -306,7 +306,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.roles")}})}</title>
<title>{$t("common.title", {title: $t("common.page.roles")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>

View File

@ -53,9 +53,9 @@
let err = auth_result[1] as APIError;
if (err.code == "ERR_USER_EXISTS") {
errForm = $t('signup.error.userexists', {values:{link0:'<a href="/login">'+$t('signup.error.userexists.link0')+'</a>'}});
errForm = $t('signup.error.userexists', {link0:'<a href="/login">'+$t('signup.error.userexists.link0')+'</a>'});
} else {
errForm = $t('signup.error.generic', {values: {err: (auth_result[1] as APIError).code}});
errForm = $t('signup.error.generic', {err: (auth_result[1] as APIError).code});
}
loading = false;
@ -68,7 +68,7 @@
</script>
<svelte:head>
<title>{$t("common.title", {values: {title: $t("common.page.signup")}})}</title>
<title>{$t("common.title", {title: $t("common.page.signup")})}</title>
</svelte:head>
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>
@ -80,7 +80,7 @@
<p class="card-text">{$t('signup.emailbody')}</p>
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
<p class="card-text">{@html $t('signup.emailbody2', {values:{link0:'<a href="/admin?definitely_not_taking_advantage_of_the_redirect">'+$t('signup.emailbody2.link0')+'</a>'}})}</p>
<p class="card-text">{@html $t('signup.emailbody2', {link0:'<a href="/admin?definitely_not_taking_advantage_of_the_redirect">'+$t('signup.emailbody2.link0')+'</a>'})}</p>
{:else}
<h4 class="card-title">{$t('signup.title')}</h4>
<h6 class="card-subtitle">{$t('signup.subtitle')}</h6>
@ -100,7 +100,7 @@
{/if}
</form>
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
<p class="block mt-2 mb-0">{@html $t('signup.already', {values:{link0:'<a href="/login">'+$t('signup.already.link0')+'</a>'}})}</p>
<p class="block mt-2 mb-0">{@html $t('signup.already', {link0:'<a href="/login">'+$t('signup.already.link0')+'</a>'})}</p>
{/if}
</div>