chore: update i18n labels (#2871)

---------

Co-authored-by: dni  <office@dnilabs.com>
This commit is contained in:
Tiago Vasconcelos
2025-01-10 11:15:51 +00:00
committed by GitHub
parent 8fa5c81088
commit dfdb34852c
15 changed files with 387 additions and 175 deletions

View File

@@ -15,11 +15,8 @@
/>
</q-item-section>
<q-item-section>
<q-item-label>Enable audit</q-item-label>
<q-item-label caption
>Record HTTP requests according with the specified
filters</q-item-label
>
<q-item-label v-text="$t('enable_audit')"></q-item-label>
<q-item-label caption v-text="$t('audit_desc')"></q-item-label>
</q-item-section>
</q-item>
</div>
@@ -48,14 +45,16 @@
/>
</q-item-section>
<q-item-section>
<q-item-label>Record Request Body</q-item-label>
<q-item-label caption
>Warning:
<q-item-label v-text="$t('audit_record_req')"></q-item-label>
<q-item-label caption>
<span v-text="$t('audit_record_warning')"></span>
<br />
<ul>
<li>confidential data (like passwords) will be logged</li>
<li>the request body can have large size.</li>
<li><span v-text="$t('audit_record_req_warning_1')"></span></li>
<li><span v-text="$t('audit_record_req_warning_2')"></span></li>
</ul>
Use it with caution.
<br />
<span v-text="$t('audit_record_use')"></span>
</q-item-label>
</q-item-section>
</q-item>
@@ -72,8 +71,12 @@
/>
</q-item-section>
<q-item-section>
<q-item-label>Record IP Address</q-item-label>
<q-item-label caption>Save the client IP address.</q-item-label>
<q-item-label>
<span v-text="$t('audit_ip')"></span>
</q-item-label>
<q-item-label caption>
<span v-text="$t('audit_ip_desc')"></span>
</q-item-label>
</q-item-section>
</q-item>
</div>
@@ -89,8 +92,12 @@
/>
</q-item-section>
<q-item-section>
<q-item-label>Record Path Parameters</q-item-label>
<q-item-label caption>Recommended. </q-item-label>
<q-item-label>
<span v-text="$t('audit_path_params')"></span>
</q-item-label>
<q-item-label caption>
<span v-text="$t('recommended')"></span>
</q-item-label>
</q-item-section>
</q-item>
</div>
@@ -106,8 +113,12 @@
/>
</q-item-section>
<q-item-section>
<q-item-label>Record Query Parameters</q-item-label>
<q-item-label caption>Recommended.</q-item-label>
<q-item-label>
<span v-text="$t('audit_query_params')"></span>
</q-item-label>
<q-item-label caption>
<span v-text="$t('recommended')"></span>
</q-item-label>
</q-item-section>
</q-item>
</div>
@@ -115,25 +126,26 @@
<q-separator class="q-mb-xl q-mt-sm"></q-separator>
<div class="row q-mb-lg">
<div class="col-md-6 col-sm-12 q-pr-sm">
<p>Include HTTP Methods</p>
<p><span v-text="$t('audit_http_methods')"></span></p>
<q-select
filled
v-model="formData.lnbits_audit_http_methods"
multiple
hint="List of HTTP methods to be included. Empty lists means all."
label="HTTP Methods"
:hint="$t('audit_http_methods_hint')"
:label="$t('audit_http_methods_label')"
:options="['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']"
></q-select>
</div>
<div class="col-md-6 col-sm-12 q-pr-sm">
<p>Include HTTP Response Codes</p>
<p><span v-text="$t('audit_resp_codes')"></span></p>
<q-input
class="q-mb-md"
filled
v-model="formAddIncludeResponseCode"
@keydown.enter="addIncludeResponseCode"
type="text"
label="HTTP Response code (regex)"
hint="List of HTTP codes to be included (regex match). Empty lists means all. Eg: 4.*, 5.*"
:label="$t('audit_resp_codes_label')"
:hint="$t('audit_resp_codes_hint')"
>
<q-btn @click="addIncludeResponseCode" dense flat icon="add"></q-btn>
</q-input>
@@ -154,14 +166,15 @@
<div class="row">
<div class="col-md-6 col-sm-12 q-pr-sm">
<p>Include Paths</p>
<p><span v-text="$t('audit_paths')"></span></p>
<q-input
class="q-mb-md"
filled
v-model="formAddIncludePath"
@keydown.enter="addIncludePath"
type="text"
label="HTTP Path (regex)"
hint="List of paths to be included (regex match). Empty list means all."
:label="$t('audit_paths_label')"
:hint="$t('audit_paths_hint')"
>
<q-btn @click="addIncludePath" dense flat icon="add"></q-btn>
</q-input>
@@ -180,14 +193,17 @@
<br />
</div>
<div class="col-md-6 col-sm-12">
<p>Exclude Paths</p>
<p>
<span v-text="$t('audit_paths_exclude')"></span>
</p>
<q-input
class="q-mb-md"
filled
v-model="formAddExcludePath"
@keydown.enter="addExcludePath"
type="text"
label="HTTP Path (regex)"
hint="List of paths to be excluded (regex match). Empty list means none."
:label="$t('audit_paths_exclude_label')"
:hint="$t('audit_paths_exclude_hint')"
>
<q-btn @click="addExcludePath" dense flat icon="add"></q-btn>
</q-input>

View File

@@ -1,5 +1,7 @@
<q-tab-panel name="exchange_providers">
<h6 class="q-my-none q-mb-sm">Exchange Providers</h6>
<h6 class="q-my-none q-mb-sm">
<span v-text="$t('exchange_providers')"></span>
</h6>
<div class="row">
<div class="col-md-8 col-sm-12">

View File

@@ -1,17 +1,22 @@
<q-tab-panel name="extensions">
<q-card-section class="q-pa-none">
<div>
<h6 class="q-my-none">Extensions</h6>
<h6 class="q-my-none">
<span v-text="$t('extensions')"></span>
</h6>
<div class="row q-col-gutter-md">
<div class="col-12">
<p>Extension Sources</p>
<div class="col-12 q-mb-md">
<p>
<span v-text="$t('extension_sources')"></span>
</p>
<q-input
class="q-mb-md"
filled
v-model="formAddExtensionsManifest"
@keydown.enter="addExtensionsManifest"
type="text"
label="Source URL (only use the official LNbits extension source, and sources you can trust)"
hint="Repositories from where the extensions can be downloaded"
:label="$t('ext_sources_label')"
:hint="$t('ext_sources_hint')"
>
<q-btn @click="addExtensionsManifest" dense flat icon="add"></q-btn>
</q-input>
@@ -30,34 +35,44 @@
</div>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-6">
<p>Admin Extensions</p>
<p>
<span v-text="$t('admin_extensions')"></span>
</p>
<q-select
filled
v-model="formData.lnbits_admin_extensions"
multiple
hint="Extensions only user with admin privileges can use"
label="Admin extensions"
:label="$t('admin_extensions_label')"
:hint="$t('admin_extensions_hint')"
:options="g.extensions"
></q-select>
</div>
<div class="col-12 col-md-6">
<p>User Default Extensions</p>
<p>
<span v-text="$t('user_default_extensions')"></span>
</p>
<q-select
filled
v-model="formData.lnbits_user_default_extensions"
multiple
hint="Extensions that will be enabled by default for the users."
label="User extensions"
:label="$t('user_default_extensions_label')"
:hint="$t('user_default_extensions_hint')"
:options="g.extensions"
></q-select>
</div>
<div class="col-12 col-md-6">
<p>Miscellaneous</p>
<p>
<span v-text="$t('miscellaneous')"></span>
</p>
<q-item tag="label" v-ripple>
<q-item-section>
<q-item-label>Disable Extensions</q-item-label>
<q-item-label caption>Disables all extensions</q-item-label>
<q-item-label>
<span v-text="$t('misc_disable_extensions')"></span>
</q-item-label>
<q-item-label caption>
<span v-text="$t('misc_disable_extensions_label')"></span>
</q-item-label>
</q-item-section>
<q-item-section avatar>
<q-toggle
@@ -71,10 +86,12 @@
</q-item>
<q-item tag="label" v-ripple>
<q-item-section>
<q-item-label>Hide API</q-item-label>
<q-item-label caption
>Hides wallet api, extensions can choose to honor</q-item-label
>
<q-item-label>
<span v-text="$t('misc_hide_api')"></span>
</q-item-label>
<q-item-label caption>
<span v-text="$t('misc_hide_api_label')"></span>
</q-item-label>
</q-item-section>
<q-item-section avatar>
<q-toggle

View File

@@ -1,74 +1,79 @@
<q-tab-panel name="funding">
<q-card-section class="q-pa-none">
<h6 class="q-my-none">Wallets Management</h6>
<h6 class="q-my-none">
<span v-text="$t('wallets_management')"></span>
</h6>
<br />
<div>
<div class="row">
<div class="col">
<p>Funding Source Info</p>
<p>
<span v-text="$t('funding_source_info')"></span>
</p>
<ul>
<li
v-text="'Funding Source: '+ settings.lnbits_backend_wallet_class"
v-text="$t('funding_source', {wallet_class: settings.lnbits_backend_wallet_class})"
></li>
<li
v-text="'Node Balance: ' + (auditData.node_balance_msats /
1000).toLocaleString() + ' sats'"
v-text="$t('node_balance', {balance: (auditData.node_balance_msats / 1000).toLocaleString()})"
></li>
<li
v-text="'LNbits Balance: ' + (auditData.lnbits_balance_msats /
1000).toLocaleString() + ' sats'"
v-text="$t('lnbits_balance', {balance: (auditData.lnbits_balance_msats / 1000).toLocaleString()})"
></li>
<li
v-text="'Reserve Percent: ' + (auditData.node_balance_msats /
auditData.lnbits_balance_msats * 100).toFixed(2) + ' %'"
v-text="$t('funding_reserve_percent', {
percent: auditData.lnbits_balance_msats > 0
? (auditData.node_balance_msats / auditData.lnbits_balance_msats * 100).toFixed(2)
: 100
})"
></li>
</ul>
<br />
</div>
<div class="col">
{% if LNBITS_NODE_UI_AVAILABLE %}
<p>Node Management</p>
<p><span v-text="$t('node_management')"></span></p>
<q-toggle
label="Node UI"
:label="$t('toggle_node_ui')"
v-model="formData.lnbits_node_ui"
></q-toggle>
<q-toggle
v-if="formData.lnbits_node_ui"
label="Public node UI"
:label="$('toggle_public_node_ui')"
v-model="formData.lnbits_public_node_ui"
></q-toggle>
<br />
<q-toggle
v-if="formData.lnbits_node_ui"
label="Transactions Tab (Disable on large CLN nodes)"
:label="$('toggle_transactions_node_ui')"
v-model="formData.lnbits_node_ui_transactions"
></q-toggle>
{% else %}
<p>Node Management not supported by active funding source</p>
<p><span v-text="$t('node_management_not_supported')"></span></p>
{% endif %}
</div>
</div>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-4">
<p>Invoice Expiry</p>
<p><span v-text="$t('invoice_expiry')"></span></p>
<q-input
filled
v-model.number="formData.lightning_invoice_expiry"
type="number"
label="Invoice expiry (seconds)"
:label="$t('invoice_expiry_label')"
mask="#######"
>
</q-input>
</div>
<div class="col-12 col-md-8">
<p>Fee reserve</p>
<p><span v-text="$t('fee_reserve')"></span></p>
<div class="row q-col-gutter-md">
<div class="col-6">
<q-input
type="number"
filled
v-model="formData.lnbits_reserve_fee_min"
label="Reserve fee in msats"
:label="$t('fee_reserve_msats')"
>
</q-input>
</div>
@@ -78,7 +83,7 @@
filled
name="lnbits_reserve_fee_percent"
v-model="formData.lnbits_reserve_fee_percent"
label="Reserve fee in percent"
:label="$t('fee_reserve_percent')"
step="0.1"
></q-input>
</div>

View File

@@ -1,26 +1,28 @@
<q-tab-panel name="security">
<q-card-section class="q-pa-none">
<h6 class="q-my-none">Server Management</h6>
<h6 class="q-my-none"><span v-text="$t('server_management')"></span></h6>
<div class="row">
<div class="col-md-6">
<p>Base URL</p>
<p><span v-text="$t('base_url')"></span></p>
<q-input
filled
v-model.number="formData.lnbits_baseurl"
label="Static/Base url for the server"
:label="$t('base_url_label')"
></q-input>
<br />
</div>
</div>
<h6 class="q-my-none q-mb-sm">Authentication</h6>
<h6 class="q-my-none q-mb-sm">
<span v-text="$t('authentication')"></span>
</h6>
<div class="row q-col-gutter-sm">
<div class="col-12 col-sm-6">
<q-input
filled
v-model="formData.auth_token_expire_minutes"
type="number"
label="Token expire minutes"
hint="Time in minutes until the token expires"
:label="$t('auth_token_expiry_label')"
:hint="$t('auth_token_expiry_hint')"
>
</q-input>
</div>
@@ -29,8 +31,8 @@
filled
v-model="formData.auth_allowed_methods"
multiple
hint="Allowed authorization methods"
label="Select authorization methods"
:hint="t$('auth_allowed_methods_hint')"
:label="$t('auth_allowed_methods_label')"
:options="formData.auth_all_methods"
></q-select>
</div>
@@ -50,8 +52,8 @@
v-model="nostrAcceptedUrl"
@keydown.enter="addNostrUrl"
type="text"
label="Nostr Request URL"
hint="Absolute URL that the clients will use to login."
:label="$t('auth_nostr_label')"
:hint="$t('auth_nostr_hint')"
>
<q-btn @click="addNostrUrl" dense flat icon="add"></q-btn>
</q-input>
@@ -81,8 +83,8 @@
<q-input
filled
v-model="formData.google_client_id"
label="Google Client ID"
hint="Make sure thant the authorized redirect URIs contain https://{domain}/api/v1/auth/google/token"
:label="$t('auth_google_ci_label')"
:hint="$t('auth_google_ci_hint')"
>
</q-input>
</div>
@@ -91,7 +93,7 @@
filled
v-model="formData.google_client_secret"
type="password"
label="Google Client Secret"
:label="$t('auth_google_cs_label')"
>
</q-input>
</div>
@@ -108,8 +110,8 @@
<q-input
filled
v-model="formData.github_client_id"
label="GitHub Client ID"
hint="Make sure thant the authorization callback URL is set to https://{domain}/api/v1/auth/github/token"
:label="$t('auth_gh_client_id_label')"
:hint="$t('auth_gh_client_id_hint')"
>
</q-input>
</div>
@@ -118,7 +120,7 @@
filled
v-model="formData.github_client_secret"
type="password"
label="GitHub Client Secret"
:label="$t('auth_gh_client_secret_label')"
>
</q-input>
</div>
@@ -135,7 +137,7 @@
<q-input
filled
v-model="formData.keycloak_discovery_url"
label="Keycloak Discovey URL"
:label="$t('auth_keycloak_label')"
>
</q-input>
</div>
@@ -143,8 +145,8 @@
<q-input
filled
v-model="formData.keycloak_client_id"
label="Keycloak Client ID"
hint="Make sure thant the authorization callback URL is set to https://{domain}/api/v1/auth/keycloak/token"
:label="$t('auth_keycloak_ci_label')"
:hint="$t('auth_keycloak_ci_hint')"
>
</q-input>
</div>
@@ -153,7 +155,7 @@
filled
v-model="formData.keycloak_client_secret"
type="password"
label="Keycloak Client Secret"
:label="$t('auth_keycloak_cs_label')"
>
</q-input>
</div>

View File

@@ -1,28 +1,28 @@
<q-tab-panel name="server">
<q-card-section class="q-pa-none">
<div>
<h6 class="q-my-none">Currency Settings</h6>
<h6 class="q-my-none"><span v-text="$t('currency_settings')"></span></h6>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-6">
<p>Allowed currencies</p>
<p><span v-text="$t('allowed_currencies')"></span></p>
<q-select
filled
v-model="formData.lnbits_allowed_currencies"
multiple
hint="Limit the number of available fiat currencies"
label="Allowed currencies"
:hint="$t('allowed_currencies_hint')"
:label="$t('allowed_currencies')"
:options="{{ currencies | safe }}"
></q-select>
<br />
</div>
<div class="col-12 col-md-6">
<p>Default Accounting Currency</p>
<p><span v-text="$t('default_account_currency')"></span></p>
<q-select
filled
v-model="formData.lnbits_default_accounting_currency"
clearable
hint="Default currency for accounting"
label="Currency"
:hint="$t('default_account_currency_hint')"
:label="$t('currency')"
:options="formData.lnbits_allowed_currencies?.length ? formData.lnbits_allowed_currencies : {{ currencies }}"
></q-select>
<br />
@@ -30,50 +30,50 @@
</div>
<br />
<h6 class="q-my-none">Service Fee</h6>
<h6 class="q-my-none"><span v-text="$t('service_fee')"></span></h6>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-6">
<p>Service Fee</p>
<p><span v-text="$t('service_fee')"></span></p>
<q-input
filled
type="number"
v-model.number="formData.lnbits_service_fee"
label="Service fee (%)"
:label="$t('service_fee_label')"
step="0.1"
hint="Fee charged per tx (%)"
:hint="$t('service_fee_hint')"
></q-input>
<br />
</div>
<div class="col-12 col-md-6">
<p>Service fee max</p>
<p><span v-text="$t('service_fee_max')"></span></p>
<q-input
filled
type="number"
v-model.number="formData.lnbits_service_fee_max"
label="Service fee max (sats)"
hint="Max service fee to charge in (sats)"
:label="$t('service_fee_max_label')"
:hint="$t('service_fee_max_hint')"
></q-input>
<br />
</div>
<div class="col-12 col-md-6">
<p>Fee Wallet</p>
<p><span v-text="$t('fee_wallet')"></span></p>
<q-input
filled
v-model="formData.lnbits_service_fee_wallet"
label="Fee wallet (wallet ID)"
hint="Wallet ID to send funds to"
:label="$t('fee_wallet_label')"
:hint="$t('fee_wallet_hint')"
></q-input>
<br />
</div>
<div class="col-12 col-md-6">
<p>Disable Service Fee for Internal Payments</p>
<p><span v-text="$t('disable_fee_internal')"></span></p>
<q-item tag="label" v-ripple>
<q-item-section>
<q-item-label>Disable Fee</q-item-label>
<q-item-label caption
>Disable Service Fee for Internal Lightning
Payments</q-item-label
>
<q-item-label v-text="$t('disable_fee')"></q-item-label>
<q-item-label
caption
v-text="$t('disable_fee_internal_desc')"
></q-item-label>
</q-item-section>
<q-item-section avatar>
<q-toggle

View File

@@ -1,82 +1,82 @@
<q-tab-panel name="site_customisation">
<q-card-section class="q-pa-none">
<h6 class="q-my-none">UI Management</h6>
<h6 class="q-my-none"><span v-text="$t('ui_management')"></span></h6>
<br />
<div>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-5">
<p>Site Title</p>
<p><span v-text="$t('ui_site_title')"></span></p>
<q-input
filled
type="text"
v-model="formData.lnbits_site_title"
label="Site title"
:label="$t('ui_site_title')"
></q-input>
<br />
</div>
<div class="col-12 col-md-5">
<p>Site Tagline</p>
<p><span v-text="$t('ui_site_tagline')"></span></p>
<q-input
filled
type="text"
v-model="formData.lnbits_site_tagline"
label="Site tagline"
:label="$t('ui_site_tagline')"
></q-input>
<br />
</div>
<div class="col-12 col-md-2 q-mt-xl">
<q-toggle
tip="Remove homepage elements like 'runs on' etc"
:tip="$t('ui_toggle_elements_tip')"
v-model="formData.lnbits_show_home_page_elements"
:label="formData.lnbits_show_home_page_elements ? 'Enable elements on homepage' : 'Disable elements on homepage'"
:label="formData.lnbits_show_home_page_elements ? $t('ui_elements_enable') : $t('ui_elements_disable')"
></q-toggle>
</div>
</div>
<div>
<p>Site Description</p>
<p><span v-text="$t('ui_site_description')"></span></p>
<q-input
v-model="formData.lnbits_site_description"
filled
type="textarea"
hint="Use plain text, Markdown, or raw HTML"
:hint="$t('ui_site_description_hint')"
/>
</div>
<br />
<div class="row q-col-gutter-md">
<div class="col-12 col-md-4">
<p>Default Wallet Name</p>
<p><span v-text="$t('ui_default_wallet_name')"></span></p>
<q-input
filled
type="text"
v-model="formData.lnbits_default_wallet_name"
label="LNbits wallet"
:label="$t('lnbits_wallet')"
></q-input>
</div>
<div class="col-12 col-md-4">
<p>Denomination</p>
<p><span v-text="$t('denomination')"></span></p>
<q-input
filled
type="text"
v-model="formData.lnbits_denomination"
label="sats"
hint="The name for the FakeWallet token"
:hint="$t('denomination_hint')"
></q-input>
</div>
<div class="col-12 col-md-4">
<p>QR code logo</p>
<p><span v-text="$t('ui_qr_code_logo')"></span></p>
<q-input
filled
type="text"
v-model="formData.lnbits_qr_logo"
label="https://example.com/image.svg"
hint="URL to logo image in QR code"
:hint="$t('ui_qr_code_logo_hint')"
></q-input>
</div>
</div>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-4">
<p>Custom Badge</p>
<p><span v-text="$t('ui_custom_badge')"></span></p>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-8">
<q-input
@@ -84,7 +84,7 @@
type="text"
tip="Custom Badge"
v-model.trim="formData.lnbits_custom_badge"
label="Custom Badge 'USE WITH CAUTION - LNbits wallet is still in BETA'"
:label="$t('ui_custom_badge_label')"
></q-input>
</div>
<div class="col-12 col-md-4">
@@ -92,7 +92,7 @@
filled
v-model="formData.lnbits_custom_badge_color"
:options="colors"
label="Custom badge color"
:label="$t('ui_custom_badge_color_label')"
></q-select>
</div>
</div>
@@ -101,54 +101,54 @@
<br />
<div class="row q-col-gutter-md">
<div class="col-12 col-md-6">
<p>Themes</p>
<p><span v-text="$t('themes')"></span></p>
<q-select
filled
v-model="formData.lnbits_theme_options"
multiple
hint="Choose themes available for users"
:hint="$t('themes_hint')"
:options="lnbits_theme_options"
label="Themes"
:label="$t('themes')"
></q-select>
<br />
</div>
<div class="col-12 col-md-6">
<p>Custom Logo</p>
<p><span v-text="$t('custom_logo')"></span></p>
<q-input
filled
type="text"
v-model="formData.lnbits_custom_logo"
label="https://example.com/image.png"
hint="URL to logo image"
:hint="$t('custom_logo_hint')"
></q-input>
<br />
</div>
</div>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-6">
<p>Ad Space Title</p>
<p><span v-text="$t('ad_space_title')"></span></p>
<q-input
filled
type="text"
v-model="formData.lnbits_ad_space_title"
label="Supported by"
:label="$t('ad_space_title_label')"
></q-input>
<br />
</div>
<div class="col-12 col-md-6">
<p>Advertisement Slots</p>
<p><span v-text="$t('ad_slots')"></span></p>
<q-input
class="q-mb-md"
filled
v-model="formData.lnbits_ad_space"
type="text"
label="url;img_light_url;img_dark_url, url..."
hint="Ad url and image filepaths in CSV format, extensions can choose to honor"
:label="$t('ad_slots_label')"
:hint="$t('ad_slots_hint')"
>
</q-input>
<q-toggle
v-model="formData.lnbits_ad_space_enabled"
:label="formData.lnbits_ad_space_enabled ? 'Ads enabled' : 'Ads disabled'"
:label="formData.lnbits_ad_space_enabled ? $t('ads_enabled') : $t('ads_disabled')"
/>
<br />
</div>

View File

@@ -1,17 +1,19 @@
<q-tab-panel name="users">
<q-card-section class="q-pa-none">
<h6 class="q-my-none q-mb-sm">User Management</h6>
<h6 class="q-my-none q-mb-sm">
<span v-text="$t('user_management')"></span>
</h6>
<div class="row">
<div class="col-12 col-md-6 q-pr-sm">
<p>Admin Users</p>
<p><span v-text="$t('admin_users')"></span></p>
<q-input
filled
v-model="formAddAdmin"
@keydown.enter="addAdminUser"
type="text"
label="User ID"
hint="Users with admin privileges"
:label="$t('admin_users_label')"
:hint="$t('admin_users_hint')"
>
<q-btn @click="addAdminUser" dense flat icon="add"></q-btn>
</q-input>
@@ -31,14 +33,14 @@
<br />
</div>
<div class="col-12 col-md-6">
<p>Allowed Users</p>
<p><span v-text="$t('allowed_users')"></span></p>
<q-input
filled
v-model="formAddUser"
@keydown.enter="addAllowedUser"
type="text"
label="User ID"
hint="Only these users can use LNbits"
:label="$t('allowed_users_label')"
:hint="$t('allowed_users_hint')"
>
<q-btn @click="addAllowedUser" dense flat icon="add"></q-btn>
</q-input>
@@ -58,10 +60,11 @@
<br />
<q-item tag="label" v-ripple>
<q-item-section>
<q-item-label>Allow creation of new users</q-item-label>
<q-item-label caption
>Allow creation of new users on the index page</q-item-label
>
<q-item-label v-text="$t('allow_creation_users')"></q-item-label>
<q-item-label
caption
v-text="$t('allow_creation_users_desc')"
></q-item-label>
</q-item-section>
<q-item-section avatar>
<q-toggle

View File

@@ -173,7 +173,9 @@
<q-dialog v-model="exchangeData.showTickerConversion" position="top">
<q-card class="q-pa-md q-pt-md lnbits__dialog-card">
<strong>Create Currecny Ticker Converter</strong>
<div class="q-mb-md">
<strong v-text="$t('create_ticker_converter')"></strong>
</div>
<div class="row">
<div class="col-12 q-mb-md">
<q-select

View File

@@ -4,7 +4,7 @@
<div class="row q-col-gutter-md justify-center q-mb-lg">
<div class="col-lg-3 col-md-6 col-sm-12 text-center">
<q-card class="q-pt-sm">
<strong>Components</strong>
<strong v-text="$t('components')"></strong>
<div style="width: 250px" class="q-pa-sm">
<canvas ref="componentUseChart"></canvas>
</div>
@@ -12,7 +12,7 @@
</div>
<div class="col-lg-3 col-md-6 col-sm-12 text-center">
<q-card class="q-pt-sm">
<strong>To 5 Long Running Endpoints</strong>
<strong v-text="$t('long_running_endpoints')"></strong>
<div style="width: 250px; height: 250px" class="q-pa-sm">
<canvas ref="longDurationChart"></canvas>
</div>
@@ -20,7 +20,7 @@
</div>
<div class="col-lg-3 col-md-6 col-sm-12 text-center">
<q-card class="q-pt-sm">
<strong>HTTP Request Methods</strong>
<strong v-text="$t('http_request_methods')"></strong>
<div style="width: 250px; height: 250px" class="q-pa-sm">
<canvas ref="requestMethodChart"></canvas>
</div>
@@ -28,7 +28,7 @@
</div>
<div class="col-lg-3 col-md-6 col-sm-12 text-center">
<q-card class="q-pt-sm">
<strong>HTTP Response Codes</strong>
<strong v-text="$t('http_response_codes')"></strong>
<div style="width: 250px; height: 250px" class="q-pa-sm">
<canvas ref="responseCodeChart"></canvas>
</div>
@@ -102,7 +102,9 @@
class="cursor-pointer q-mr-xs"
@click="showDetailsDialog(props.row)"
>
<q-tooltip>Request Details</q-tooltip>
<q-tooltip
><span v-text="$t('request_details')"></span
></q-tooltip>
</q-btn>
<span v-text="formatDate(props.row.created_at)"></span>
@@ -146,7 +148,7 @@
<q-dialog v-model="auditDetailsDialog.show" position="top">
<q-card class="q-pa-md q-pt-md lnbits__dialog-card">
<strong>HTTP Request Details</strong>
<strong v-text="$t('http_request_details')"></strong>
<q-input
filled
dense

View File

@@ -480,7 +480,9 @@
</div>
</div>
<div class="row q-mb-md">
<div class="col-4">Notifications</div>
<div class="col-4">
<span v-text="$t('notifications')"></span>
</div>
<div class="col-8">
<lnbits-notifications-btn
v-if="g.user"

View File

@@ -5,8 +5,8 @@
<q-card-section class="grid">
<div>
<h6 class="q-my-none text-center">
<strong>Welcome to LNbits</strong>
<p>Set up the Superuser account below.</p>
<strong v-text="$t('welcome_lnbits')"></strong>
<p><span v-text="$t('setup_su_account')"></span></p>
</h6>
<br />
<q-form class="q-gutter-md">

View File

@@ -192,7 +192,7 @@
<q-card>
<q-card-section>
<h6 class="text-subtitle1 q-mt-none q-mb-sm">
{{ SITE_TITLE }} Wallet:
{{ SITE_TITLE }} <span v-text="$t('wallet')"></span>
<strong><em>{{wallet_name}}</em></strong>
</h6>
</q-card-section>
@@ -463,9 +463,13 @@
color="positive"
text-color="white"
></q-avatar>
NFC supported
<span v-text="$t('nfc_supported')"></span>
</q-chip>
<span v-else class="text-caption text-grey">NFC not supported</span>
<span
v-else
class="text-caption text-grey"
v-text="$t('nfc_not_supported')"
></span>
</div>
<div class="row q-mt-lg">
<q-btn
@@ -503,10 +507,10 @@
<strong v-text="$t('memo') + ': '"></strong>
<span v-text="parse.invoice.description"></span>
<br />
<strong>Expire date: </strong>
<strong v-text="$t('expire_date')"></strong>
<span v-text="parse.invoice.expireDate"></span>
<br />
<strong>Hash: </strong>
<strong v-text="$t('hash')"></strong>
<span v-text="parse.invoice.hash"></span>
</p>
<div v-if="canPay" class="row q-mt-lg">

File diff suppressed because one or more lines are too long

View File

@@ -45,6 +45,7 @@ window.localisation.en = {
export_to_phone: 'Export to Phone with QR Code',
export_to_phone_desc:
'This QR code contains your wallet URL with full access. You can scan it from your phone to open your wallet from there.',
wallet: 'Wallet: ',
wallets: 'Wallets',
add_wallet: 'Add a new wallet',
delete_wallet: 'Delete wallet',
@@ -111,6 +112,10 @@ window.localisation.en = {
no_extensions: "You don't have any extensions installed :(",
created: 'Created',
search_extensions: 'Search extensions',
extension_sources: 'Extension Sources',
ext_sources_hint: 'Repositories from where the extensions can be downloaded',
ext_sources_label:
'Source URL (only use the official LNbits extension source, and sources you can trust)',
warning: 'Warning',
repository: 'Repository',
confirm_continue: 'Are you sure you want to continue?',
@@ -276,5 +281,157 @@ window.localisation.en = {
reset_key: 'Reset Key',
reset_password: 'Reset Password',
border_choices: 'Border Choices',
select_all: 'Select All'
select_all: 'Select All',
nfc_supported: 'NFC Supported',
nfc_not_supported: 'NFC not Supported',
expire_date: 'Expire Date: ',
hash: 'Hash: ',
welcome_lnbits: 'Welcome to LNbits',
setup_su_account: 'Set up the Superuser account below.',
create_ticker_converter: 'Create Currency Ticker Converter',
enable_audit: 'Enable Audit',
recommended: 'Recommended',
audit_desc: 'Record HTTP requests according with the specified filters',
audit_record_req: 'Record Request Body',
audit_record_warning: 'Warning: ',
audit_record_req_warning_1:
'confidential data (like passwords) will be logged.',
audit_record_req_warning_2: 'the request body can have large size.',
audit_record_use: 'Use it with caution.',
audit_ip: 'Record IP Address',
audit_ip_desc: 'Record the IP address of the client',
audit_path_params: 'Record Path Parameters',
audit_query_params: 'Record Query Parameters',
audit_http_methods: 'Include HTTP Methods',
audit_http_methods_hint:
'List of HTTP methods to be included. Empty lists means all.',
audit_http_methods_label: 'HTTP Methods',
audit_resp_codes: 'Include HTTP Response Codes',
audit_resp_codes_hint:
'List of HTTP codes to be included (regex match). Empty lists means all. Eg: 4.*, 5.*',
audit_resp_codes_label: 'HTTP Response code (regex)',
audit_paths: 'Include Paths',
audit_paths_hint:
'List of paths to be included (regex match). Empty list means all.',
audit_paths_label: 'HTTP Path (regex)',
audit_paths_exclude: 'Exclude Paths',
audit_paths_exclude_hint:
'List of paths to be excluded (regex match). Empty list means none.',
audit_paths_exclude_label: 'HTTP Path (regex)',
exchange_providers: 'Exchange Providers',
admin_extensions: 'Admin Extensions',
admin_extensions_label: 'Admin extensions',
admin_extensions_hint: 'Extensions only user with admin privileges can use',
user_default_extensions: 'User Default Extensions',
user_default_extensions_label: 'User extensions',
user_default_extensions_hint:
'Extensions that will be enabled by default for the users.',
miscellanous: 'Miscellanous',
misc_disable_extensions: 'Disable Extensions',
misc_disable_extensions_label: 'Disable all extensions',
misc_hide_api: 'Hide API',
misc_hide_api_label: 'Hides wallet api, extensions can choose to honor',
wallets_management: 'Wallets Management',
funding_source_info: 'Funding Source Info',
funding_source: 'Funding Source: {wallet_class}',
node_balance: 'Node Balance: {balance} sats',
lnbits_balance: 'LNbits Balance: {balance} sats',
funding_reserve_percent: 'Reserve Percent: {percent} %',
node_managment: 'Node Management',
node_management_not_supported:
'Node Management not supported by active funding source',
toggle_node_ui: 'Node UI',
toggle_public_node_ui: 'Public Node UI',
toggle_transactions_node_ui: 'Transactions Tab (Disable on large CLN nodes)',
invoice_expiry: 'Invoice Expiry',
invoice_expiry_label: 'Invoice expiry (seconds)',
fee_reserve: 'Fee Reserve',
fee_reserve_msats: 'Reserve fee in msats',
fee_reserve_percent: 'Reserve fee in percent',
server_management: 'Server Management',
base_url: 'Base URL',
base_url_label: 'Static/Base url for the server',
authentication: 'Authentication',
auth_token_expiry_label: 'Token expire minutes',
auth_token_expiry_hint: 'Time in minutes until the token expires',
auth_allowed_methods_label: 'Allowed authorization methods',
auth_allowed_methods_hint: 'Select authorization methods',
auth_nostr_label: 'Nostr Request URL',
auth_nostr_hint: 'Absolute URL that the clients will use to login.',
auth_google_ci_label: 'Google Client ID',
auth_google_ci_hint:
'Make sure that the authorized redirect URIs contain https://{domain}/api/v1/auth/google/token',
auth_google_cs_label: 'Google Client Secret',
auth_gh_client_id_label: 'GitHub Client ID',
auth_gh_client_id_hint:
'Make sure that the authorization callback URL is set to https://{domain}/api/v1/auth/github/token',
auth_gh_client_secret_label: 'GitHub Client Secret',
auth_keycloak_label: 'Keycloak Discovery URL',
auth_keycloak_ci_label: 'Keycloak Client ID',
auth_keycloak_ci_hint:
'Make sure thant the authorization callback URL is set to https://{domain}/api/v1/auth/keycloak/token',
auth_keycloak_cs_label: 'Keycloak Client Secret',
currency_settings: 'Currency Settings',
allowed_currencies: 'Allowed Currencies',
allowed_currencies_hint: 'Limit the number of available fiat currencies',
default_account_currency: 'Default Account Currency',
default_account_currency_hint: 'Default currency for accounting',
service_fee: 'Service Fee',
service_fee_label: 'Service fee (%)',
service_fee_hint: 'Fee charged per tx (%)',
service_fee_max: 'Service Fee Max',
service_fee_max_label: 'Service fee max (sats)',
service_fee_max_hint: 'Max service fee to charge in (sats)',
fee_wallet: 'Fee Wallet',
fee_wallet_label: 'Fee wallet (wallet ID)',
fee_wallet_hint: 'Wallet ID to send funds to',
disable_fee: 'Disable Fee',
disable_fee_internal: 'Disable Service Fee for Internal Payments',
disable_fee_internal_desc:
'Disable Service Fee for Internal Lightning Payments',
ui_management: 'UI Management',
ui_site_title: 'Site Title',
ui_site_tagline: 'Site Tagline',
ui_elements_enable: 'Enable elements on homepage',
ui_elements_disable: 'Disable elements on homepage',
ui_toggle_elements_tip: "Remove homepage elements like 'runs on' etc",
ui_site_description: 'Site Description',
ui_site_description_hint: 'Use plain text, Markdown, or raw HTML',
ui_default_wallet_name: 'Default Wallet Name',
lnbits_wallet: 'LNbits wallet',
denomination: 'Denomination',
denomination_hint: 'The name for the FakeWallet token',
ui_qr_code_logo: 'QR Code Logo',
ui_qr_code_logo_hint: 'URL to logo image in QR code',
ui_custom_badge: 'Custom Badge',
ui_custom_badge_label:
"Custom Badge 'USE WITH CAUTION - LNbits wallet is still in BETA'",
ui_custom_badge_color_label: 'Custom Badge Color',
themes: 'Themes',
themes_hint: 'Choose themes available for users',
custom_logo: 'Custom Logo',
custom_logo_hint: 'URL to logo image',
ad_space_title: 'Ad Space Title',
ad_space_title_label: 'Supported by',
ad_slots: 'Advertisement Slots',
ad_slots_hint:
'Ad url and image filepaths in CSV format, extensions can choose to honor',
ad_slots_label: 'url;img_light_url;img_dark_url, url...',
ads_enabled: 'Ads Enabled',
ads_disabled: 'Ads Disabled',
user_management: 'User Management',
admin_users: 'Admin Users',
admin_users_hint: 'Users with admin privileges',
admin_users_label: 'User ID',
allowed_users: 'Allowed Users',
allowed_users_hint: 'Only these users can use LNbits',
allowed_users_label: 'User ID',
allow_creation_user: 'Allow creation of new users',
allow_creation_user_desc: 'Allow creation of new users on the index page',
components: 'Components',
long_running_endpoints: 'Top 5 Long Running Endpoints',
http_request_methods: 'HTTP Request Methods',
http_response_codes: 'HTTP Response Codes',
request_details: 'Request Details',
http_request_details: 'HTTP Request Details'
}