Merge branch 'next' into dependabot/npm_and_yarn/integration-tests/glob-10.5.0
This commit is contained in:
commit
6bc3a7bf1f
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<Header title="OliveTin" :logoUrl="logoUrl" @toggleSidebar="toggleSidebar" :sidebarEnabled="showNavigation">
|
<Header :title="pageTitle" :logoUrl="logoUrl" @toggleSidebar="toggleSidebar" :sidebarEnabled="showNavigation">
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
<div id="banner" v-if="bannerMessage" :style="bannerCss">
|
<div id="banner" v-if="bannerMessage" :style="bannerCss">
|
||||||
<p>{{ bannerMessage }}</p>
|
<p>{{ bannerMessage }}</p>
|
||||||
|
|
@ -95,6 +95,7 @@ const username = ref('notset');
|
||||||
const isLoggedIn = ref(false);
|
const isLoggedIn = ref(false);
|
||||||
const serverConnection = ref(true);
|
const serverConnection = ref(true);
|
||||||
const currentVersion = ref('?');
|
const currentVersion = ref('?');
|
||||||
|
const pageTitle = ref('OliveTin');
|
||||||
const bannerMessage = ref('');
|
const bannerMessage = ref('');
|
||||||
const bannerCss = ref('');
|
const bannerCss = ref('');
|
||||||
const hasLoaded = ref(false);
|
const hasLoaded = ref(false);
|
||||||
|
|
@ -168,6 +169,7 @@ function updateHeaderFromInit() {
|
||||||
username.value = window.initResponse.authenticatedUser
|
username.value = window.initResponse.authenticatedUser
|
||||||
isLoggedIn.value = window.initResponse.authenticatedUser !== '' && window.initResponse.authenticatedUser !== 'guest'
|
isLoggedIn.value = window.initResponse.authenticatedUser !== '' && window.initResponse.authenticatedUser !== 'guest'
|
||||||
currentVersion.value = window.initResponse.currentVersion
|
currentVersion.value = window.initResponse.currentVersion
|
||||||
|
pageTitle.value = window.initResponse.pageTitle || 'OliveTin'
|
||||||
bannerMessage.value = window.initResponse.bannerMessage || ''
|
bannerMessage.value = window.initResponse.bannerMessage || ''
|
||||||
bannerCss.value = window.initResponse.bannerCss || ''
|
bannerCss.value = window.initResponse.bannerCss || ''
|
||||||
showFooter.value = window.initResponse.showFooter
|
showFooter.value = window.initResponse.showFooter
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,8 @@ async function getDashboard() {
|
||||||
}
|
}
|
||||||
|
|
||||||
dashboard.value = ret.dashboard
|
dashboard.value = ret.dashboard
|
||||||
document.title = ret.dashboard.title + ' - OliveTin'
|
const pageTitle = window.initResponse?.pageTitle || 'OliveTin'
|
||||||
|
document.title = ret.dashboard.title + ' - ' + pageTitle
|
||||||
|
|
||||||
// Clear any previous init error since we successfully loaded
|
// Clear any previous init error since we successfully loaded
|
||||||
initError.value = null
|
initError.value = null
|
||||||
|
|
@ -84,7 +85,8 @@ async function getDashboard() {
|
||||||
// On error, provide a safe fallback state
|
// On error, provide a safe fallback state
|
||||||
console.error('Failed to load dashboard', e)
|
console.error('Failed to load dashboard', e)
|
||||||
dashboard.value = { title: title || 'Default', contents: [] }
|
dashboard.value = { title: title || 'Default', contents: [] }
|
||||||
document.title = 'Error - OliveTin'
|
const pageTitle = window.initResponse?.pageTitle || 'OliveTin'
|
||||||
|
document.title = 'Error - ' + pageTitle
|
||||||
|
|
||||||
// Stop the loading timer on error
|
// Stop the loading timer on error
|
||||||
if (loadingTimer) {
|
if (loadingTimer) {
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,8 @@ const router = createRouter({
|
||||||
// Navigation guard to update page title
|
// Navigation guard to update page title
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
if (to.meta && to.meta.title) {
|
if (to.meta && to.meta.title) {
|
||||||
document.title = to.meta.title + " - OliveTin"
|
const pageTitle = window.initResponse?.pageTitle || 'OliveTin'
|
||||||
|
document.title = to.meta.title + " - " + pageTitle
|
||||||
}
|
}
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,44 +1,62 @@
|
||||||
<template>
|
<template>
|
||||||
<Section title = "Get support">
|
<Section :title="t('diagnostics.get-support')">
|
||||||
<p>If you are having problems with OliveTin and want to raise a support request, it would be very helpful to include a sosreport from this page.
|
<p>{{ t('diagnostics.get-support-description') }}
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="https://docs.olivetin.app/sosreport.html" target="_blank">sosreport Documentation</a>
|
<a href = "https://docs.olivetin.app/troubleshooting/wheretofindhelp.html" target="_blank">{{ t('diagnostics.where-to-find-help') }}</a>
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href = "https://docs.olivetin.app/troubleshooting/wheretofindhelp.html" target="_blank">Where to find help</a>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
<Section title = "SSH">
|
<Section :title="t('diagnostics.ssh')">
|
||||||
<dl>
|
<dl>
|
||||||
<dt>Found Key</dt>
|
<dt>{{ t('diagnostics.found-key') }}</dt>
|
||||||
<dd>{{ diagnostics.sshFoundKey || '?' }}</dd>
|
<dd>{{ diagnostics.sshFoundKey || '?' }}</dd>
|
||||||
<dt>Found Config</dt>
|
<dt>{{ t('diagnostics.found-config') }}</dt>
|
||||||
<dd>{{ diagnostics.sshFoundConfig || '?' }}</dd>
|
<dd>{{ diagnostics.sshFoundConfig || '?' }}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
<Section title = "SOS Report">
|
<Section :title="t('diagnostics.sos-report')">
|
||||||
<p>This section allows you to generate a detailed report of your configuration and environment. It is a good idea to include this when raising a support request.</p>
|
<p>{{ t('diagnostics.sos-report-description') }}</p>
|
||||||
|
<p>
|
||||||
|
<a href="https://docs.olivetin.app/troubleshooting/sosreport.html" target="_blank">{{ t('diagnostics.sos-report-docs') }}</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
<div role="toolbar">
|
<div role="toolbar">
|
||||||
<button @click="generateSosReport" :disabled="loading" class = "good">Generate SOS Report</button>
|
<button @click="generateSosReport" :disabled="loading" class = "good">{{ t('diagnostics.generate-sos-report') }}</button>
|
||||||
|
<button @click="copySosReport" :disabled="!sosReport || loading" :class="sosReportCopied ? 'good' : ''">{{ sosReportCopied ? t('diagnostics.copied') : t('diagnostics.copy-to-clipboard') }}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<textarea v-model="sosReport" readonly style="flex: 1; min-height: 200px; resize: vertical;"></textarea>
|
<textarea v-model="sosReport" readonly style="flex: 1; min-height: 200px; resize: vertical; width: 100%; box-sizing: border-box;"></textarea>
|
||||||
|
</Section>
|
||||||
|
|
||||||
|
<Section :title="t('diagnostics.browser-info')">
|
||||||
|
<p>{{ t('diagnostics.browser-info-description') }}</p>
|
||||||
|
|
||||||
|
<div role="toolbar">
|
||||||
|
<button @click="generateBrowserInfo" :disabled="loading" class = "good">{{ t('diagnostics.generate-browser-info') }}</button>
|
||||||
|
<button @click="copyBrowserInfo" :disabled="!browserInfo || loading" :class="browserInfoCopied ? 'good' : ''">{{ browserInfoCopied ? t('diagnostics.copied') : t('diagnostics.copy-to-clipboard') }}</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<textarea v-model="browserInfo" readonly style="flex: 1; min-height: 200px; resize: vertical; width: 100%; box-sizing: border-box;"></textarea>
|
||||||
</Section>
|
</Section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import Section from 'picocrank/vue/components/Section.vue'
|
import Section from 'picocrank/vue/components/Section.vue'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
|
const { t, locale } = useI18n()
|
||||||
|
|
||||||
const diagnostics = ref({})
|
const diagnostics = ref({})
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const sosReport = ref('Waiting to start...')
|
const sosReport = ref('')
|
||||||
|
const browserInfo = ref('')
|
||||||
|
const sosReportCopied = ref(false)
|
||||||
|
const browserInfoCopied = ref(false)
|
||||||
|
|
||||||
async function fetchDiagnostics() {
|
async function fetchDiagnostics() {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
|
|
@ -52,8 +70,8 @@ async function fetchDiagnostics() {
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Failed to fetch diagnostics:', err);
|
console.error('Failed to fetch diagnostics:', err);
|
||||||
diagnostics.value = {
|
diagnostics.value = {
|
||||||
sshFoundKey: 'Unknown',
|
sshFoundKey: t('diagnostics.unknown'),
|
||||||
sshFoundConfig: 'Unknown'
|
sshFoundConfig: t('diagnostics.unknown')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
loading.value = false
|
loading.value = false
|
||||||
|
|
@ -69,7 +87,134 @@ function formatKey(key) {
|
||||||
async function generateSosReport() {
|
async function generateSosReport() {
|
||||||
const response = await window.client.sosReport()
|
const response = await window.client.sosReport()
|
||||||
console.log("response", response)
|
console.log("response", response)
|
||||||
sosReport.value = response.alert
|
sosReport.value = `\`\`\`\n${response.alert}\n\`\`\`\n`
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copySosReport() {
|
||||||
|
try {
|
||||||
|
await navigator.clipboard.writeText(sosReport.value)
|
||||||
|
sosReportCopied.value = true
|
||||||
|
setTimeout(() => {
|
||||||
|
sosReportCopied.value = false
|
||||||
|
}, 2000)
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Failed to copy SOS report to clipboard:', err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function generateBrowserInfo() {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
let userAgentData = 'N/A'
|
||||||
|
if (navigator.userAgentData) {
|
||||||
|
try {
|
||||||
|
const uaData = await navigator.userAgentData.getHighEntropyValues([
|
||||||
|
'platform',
|
||||||
|
'platformVersion',
|
||||||
|
'architecture',
|
||||||
|
'model',
|
||||||
|
'uaFullVersion',
|
||||||
|
'bitness',
|
||||||
|
'fullVersionList'
|
||||||
|
])
|
||||||
|
userAgentData = JSON.stringify(uaData, null, 2)
|
||||||
|
} catch (err) {
|
||||||
|
userAgentData = `${t('diagnostics.useragent-data-error')}: ${err.message}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const info = {
|
||||||
|
userAgent: navigator.userAgent,
|
||||||
|
platform: navigator.platform,
|
||||||
|
language: navigator.language,
|
||||||
|
languages: navigator.languages?.join(', ') || 'N/A',
|
||||||
|
cookieEnabled: navigator.cookieEnabled,
|
||||||
|
onLine: navigator.onLine,
|
||||||
|
screenWidth: screen.width,
|
||||||
|
screenHeight: screen.height,
|
||||||
|
screenColorDepth: screen.colorDepth,
|
||||||
|
screenPixelDepth: screen.pixelDepth,
|
||||||
|
viewportWidth: window.innerWidth,
|
||||||
|
viewportHeight: window.innerHeight,
|
||||||
|
devicePixelRatio: window.devicePixelRatio || 'N/A',
|
||||||
|
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
||||||
|
timezoneOffset: new Date().getTimezoneOffset(),
|
||||||
|
localStorageEnabled: (() => {
|
||||||
|
try {
|
||||||
|
localStorage.setItem('test', 'test')
|
||||||
|
localStorage.removeItem('test')
|
||||||
|
return true
|
||||||
|
} catch {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})(),
|
||||||
|
sessionStorageEnabled: (() => {
|
||||||
|
try {
|
||||||
|
sessionStorage.setItem('test', 'test')
|
||||||
|
sessionStorage.removeItem('test')
|
||||||
|
return true
|
||||||
|
} catch {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})(),
|
||||||
|
hardwareConcurrency: navigator.hardwareConcurrency || 'N/A',
|
||||||
|
maxTouchPoints: navigator.maxTouchPoints || 'N/A',
|
||||||
|
userAgentData: userAgentData
|
||||||
|
}
|
||||||
|
|
||||||
|
const olivetinVersion = window.initResponse?.currentVersion || t('diagnostics.unknown')
|
||||||
|
const currentLanguage = locale.value || t('diagnostics.unknown')
|
||||||
|
|
||||||
|
let output = '';
|
||||||
|
output += `\`\`\`\n`
|
||||||
|
output += '### BROWSER INFO START (copy all text to BROWSER INFO END)\n'
|
||||||
|
output += `# OliveTin Information\n`
|
||||||
|
output += `olivetinVersion: ${olivetinVersion}\n`
|
||||||
|
output += `currentLanguage: ${currentLanguage}\n`
|
||||||
|
output += `\n# Browser Information\n`
|
||||||
|
output += `userAgent: ${info.userAgent}\n`
|
||||||
|
output += `platform: ${info.platform}\n`
|
||||||
|
output += `language: ${info.language}\n`
|
||||||
|
output += `languages: ${info.languages}\n`
|
||||||
|
output += `\n# User Agent Data\n`
|
||||||
|
output += `userAgentData:\n${info.userAgentData}\n`
|
||||||
|
output += `\n# Display Information\n`
|
||||||
|
output += `screenWidth: ${info.screenWidth}\n`
|
||||||
|
output += `screenHeight: ${info.screenHeight}\n`
|
||||||
|
output += `screenColorDepth: ${info.screenColorDepth}\n`
|
||||||
|
output += `screenPixelDepth: ${info.screenPixelDepth}\n`
|
||||||
|
output += `viewportWidth: ${info.viewportWidth}\n`
|
||||||
|
output += `viewportHeight: ${info.viewportHeight}\n`
|
||||||
|
output += `devicePixelRatio: ${info.devicePixelRatio}\n`
|
||||||
|
output += `\n# Feature Support\n`
|
||||||
|
output += `cookieEnabled: ${info.cookieEnabled}\n`
|
||||||
|
output += `localStorageEnabled: ${info.localStorageEnabled}\n`
|
||||||
|
output += `sessionStorageEnabled: ${info.sessionStorageEnabled}\n`
|
||||||
|
output += `onLine: ${info.onLine}\n`
|
||||||
|
output += `hardwareConcurrency: ${info.hardwareConcurrency}\n`
|
||||||
|
output += `maxTouchPoints: ${info.maxTouchPoints}\n`
|
||||||
|
output += `\n# Location & Time\n`
|
||||||
|
output += `timezone: ${info.timezone}\n`
|
||||||
|
output += `timezoneOffset: ${info.timezoneOffset}\n`
|
||||||
|
output += `\n### BROWSER INFO END (copy all text from BROWSER INFO START)`
|
||||||
|
output += `\n\`\`\`\n`
|
||||||
|
|
||||||
|
browserInfo.value = output
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copyBrowserInfo() {
|
||||||
|
try {
|
||||||
|
await navigator.clipboard.writeText(browserInfo.value)
|
||||||
|
browserInfoCopied.value = true
|
||||||
|
setTimeout(() => {
|
||||||
|
browserInfoCopied.value = false
|
||||||
|
}, 2000)
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Failed to copy browser info to clipboard:', err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
#
|
||||||
|
# Integration Test Config: pageTitle
|
||||||
|
#
|
||||||
|
|
||||||
|
listenAddressSingleHTTPFrontend: 0.0.0.0:1337
|
||||||
|
|
||||||
|
logLevel: "DEBUG"
|
||||||
|
checkForUpdates: false
|
||||||
|
|
||||||
|
pageTitle: "Custom Test Title"
|
||||||
|
|
||||||
|
actions:
|
||||||
|
- title: Ping example.com
|
||||||
|
shell: ping example.com -c 1
|
||||||
|
icon: ping
|
||||||
|
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
import { describe, it, before, after } from 'mocha'
|
||||||
|
import { expect } from 'chai'
|
||||||
|
import { By } from 'selenium-webdriver'
|
||||||
|
import {
|
||||||
|
getRootAndWait,
|
||||||
|
takeScreenshotOnFailure,
|
||||||
|
} from '../../lib/elements.js'
|
||||||
|
|
||||||
|
describe('config: pageTitle', function () {
|
||||||
|
before(async function () {
|
||||||
|
await runner.start('pageTitle')
|
||||||
|
})
|
||||||
|
|
||||||
|
after(async () => {
|
||||||
|
await runner.stop()
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
takeScreenshotOnFailure(this.currentTest, webdriver);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Init API returns custom pageTitle from config', async function () {
|
||||||
|
await getRootAndWait()
|
||||||
|
|
||||||
|
// Check that the Init API response (available via window.initResponse) contains pageTitle
|
||||||
|
// This is how the frontend accesses it, so it's the most reliable way to test
|
||||||
|
const initResponse = await webdriver.executeScript('return window.initResponse')
|
||||||
|
|
||||||
|
expect(initResponse).to.not.be.null
|
||||||
|
expect(initResponse).to.have.own.property('pageTitle')
|
||||||
|
expect(initResponse.pageTitle).to.equal('Custom Test Title')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Header displays custom pageTitle from init response', async function () {
|
||||||
|
await getRootAndWait()
|
||||||
|
|
||||||
|
// Check that the pageTitle from init response is used in the header
|
||||||
|
// First verify the init response has the correct pageTitle
|
||||||
|
const pageTitle = await webdriver.executeScript('return window.initResponse?.pageTitle')
|
||||||
|
expect(pageTitle).to.equal('Custom Test Title')
|
||||||
|
|
||||||
|
// The Header component from picocrank should render the title prop
|
||||||
|
// Check for the title in the header element
|
||||||
|
const header = await webdriver.findElement(By.tagName('header'))
|
||||||
|
const headerText = await header.getText()
|
||||||
|
|
||||||
|
// The header should contain the custom page title
|
||||||
|
expect(headerText).to.include('Custom Test Title')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
@ -3,6 +3,23 @@
|
||||||
"messages": {
|
"messages": {
|
||||||
"de-DE": {
|
"de-DE": {
|
||||||
"connected": "Verbunden",
|
"connected": "Verbunden",
|
||||||
|
"diagnostics.browser-info": "Browser-Informationen",
|
||||||
|
"diagnostics.browser-info-description": "Dieser Abschnitt ermöglicht es Ihnen, einen detaillierten Bericht über Ihre Browser-Informationen zu erstellen. Dies kann bei der Fehlerbehebung von browser-spezifischen Problemen hilfreich sein.",
|
||||||
|
"diagnostics.copied": "Kopiert!",
|
||||||
|
"diagnostics.copy-to-clipboard": "In Zwischenablage kopieren",
|
||||||
|
"diagnostics.found-config": "Konfiguration gefunden",
|
||||||
|
"diagnostics.found-key": "Schlüssel gefunden",
|
||||||
|
"diagnostics.generate-browser-info": "Browser-Informationen erstellen",
|
||||||
|
"diagnostics.generate-sos-report": "SOS-Bericht erstellen",
|
||||||
|
"diagnostics.get-support": "Unterstützung erhalten",
|
||||||
|
"diagnostics.get-support-description": "Wenn Sie Probleme mit OliveTin haben und eine Support-Anfrage stellen möchten, wäre es sehr hilfreich, einen sosreport von dieser Seite einzufügen.",
|
||||||
|
"diagnostics.sos-report": "SOS-Bericht",
|
||||||
|
"diagnostics.sos-report-description": "Dieser Abschnitt ermöglicht es Ihnen, einen detaillierten Bericht über Ihre Konfiguration und Umgebung zu erstellen. Es ist eine gute Idee, dies bei einer Support-Anfrage einzufügen.",
|
||||||
|
"diagnostics.sos-report-docs": "sosreport Dokumentation",
|
||||||
|
"diagnostics.ssh": "SSH",
|
||||||
|
"diagnostics.unknown": "Unbekannt",
|
||||||
|
"diagnostics.useragent-data-error": "Fehler beim Abrufen von userAgentData",
|
||||||
|
"diagnostics.where-to-find-help": "Wo Sie Hilfe finden",
|
||||||
"docs": "Dokumentation",
|
"docs": "Dokumentation",
|
||||||
"language-dialog.browser-languages": "Browser-Sprachen",
|
"language-dialog.browser-languages": "Browser-Sprachen",
|
||||||
"language-dialog.close": "Schließen",
|
"language-dialog.close": "Schließen",
|
||||||
|
|
@ -32,6 +49,23 @@
|
||||||
},
|
},
|
||||||
"en": {
|
"en": {
|
||||||
"connected": "Connected",
|
"connected": "Connected",
|
||||||
|
"diagnostics.browser-info": "Browser Info",
|
||||||
|
"diagnostics.browser-info-description": "This section allows you to generate a detailed report of your browser information. This can be helpful when troubleshooting browser-specific issues.",
|
||||||
|
"diagnostics.copied": "Copied!",
|
||||||
|
"diagnostics.copy-to-clipboard": "Copy to Clipboard",
|
||||||
|
"diagnostics.found-config": "Found Config",
|
||||||
|
"diagnostics.found-key": "Found Key",
|
||||||
|
"diagnostics.generate-browser-info": "Generate Browser Info",
|
||||||
|
"diagnostics.generate-sos-report": "Generate SOS Report",
|
||||||
|
"diagnostics.get-support": "Get support",
|
||||||
|
"diagnostics.get-support-description": "If you are having problems with OliveTin and want to raise a support request, it would be very helpful to include a sosreport from this page.",
|
||||||
|
"diagnostics.sos-report": "SOS Report",
|
||||||
|
"diagnostics.sos-report-description": "This section allows you to generate a detailed report of your configuration and environment. It is a good idea to include this when raising a support request.",
|
||||||
|
"diagnostics.sos-report-docs": "sosreport Documentation",
|
||||||
|
"diagnostics.ssh": "SSH",
|
||||||
|
"diagnostics.unknown": "Unknown",
|
||||||
|
"diagnostics.useragent-data-error": "Error retrieving userAgentData",
|
||||||
|
"diagnostics.where-to-find-help": "Where to find help",
|
||||||
"docs": "Documentation",
|
"docs": "Documentation",
|
||||||
"language-dialog.browser-languages": "Browser languages",
|
"language-dialog.browser-languages": "Browser languages",
|
||||||
"language-dialog.close": "Close",
|
"language-dialog.close": "Close",
|
||||||
|
|
@ -61,6 +95,23 @@
|
||||||
},
|
},
|
||||||
"es-ES": {
|
"es-ES": {
|
||||||
"connected": "Conectado",
|
"connected": "Conectado",
|
||||||
|
"diagnostics.browser-info": "Información del navegador",
|
||||||
|
"diagnostics.browser-info-description": "Esta sección le permite generar un informe detallado de su información del navegador. Esto puede ser útil al solucionar problemas específicos del navegador.",
|
||||||
|
"diagnostics.copied": "¡Copiado!",
|
||||||
|
"diagnostics.copy-to-clipboard": "Copiar al portapapeles",
|
||||||
|
"diagnostics.found-config": "Configuración encontrada",
|
||||||
|
"diagnostics.found-key": "Clave encontrada",
|
||||||
|
"diagnostics.generate-browser-info": "Generar información del navegador",
|
||||||
|
"diagnostics.generate-sos-report": "Generar informe SOS",
|
||||||
|
"diagnostics.get-support": "Obtener soporte",
|
||||||
|
"diagnostics.get-support-description": "Si tiene problemas con OliveTin y desea presentar una solicitud de soporte, sería muy útil incluir un sosreport de esta página.",
|
||||||
|
"diagnostics.sos-report": "Informe SOS",
|
||||||
|
"diagnostics.sos-report-description": "Esta sección le permite generar un informe detallado de su configuración y entorno. Es una buena idea incluir esto al presentar una solicitud de soporte.",
|
||||||
|
"diagnostics.sos-report-docs": "Documentación de sosreport",
|
||||||
|
"diagnostics.ssh": "SSH",
|
||||||
|
"diagnostics.unknown": "Desconocido",
|
||||||
|
"diagnostics.useragent-data-error": "Error al recuperar userAgentData",
|
||||||
|
"diagnostics.where-to-find-help": "Dónde encontrar ayuda",
|
||||||
"docs": "Documentación",
|
"docs": "Documentación",
|
||||||
"language-dialog.browser-languages": "Idiomas del navegador",
|
"language-dialog.browser-languages": "Idiomas del navegador",
|
||||||
"language-dialog.close": "Cerrar",
|
"language-dialog.close": "Cerrar",
|
||||||
|
|
@ -90,6 +141,23 @@
|
||||||
},
|
},
|
||||||
"it-IT": {
|
"it-IT": {
|
||||||
"connected": "Connesso",
|
"connected": "Connesso",
|
||||||
|
"diagnostics.browser-info": "Informazioni del browser",
|
||||||
|
"diagnostics.browser-info-description": "Questa sezione ti consente di generare un rapporto dettagliato delle informazioni del tuo browser. Questo può essere utile durante la risoluzione dei problemi specifici del browser.",
|
||||||
|
"diagnostics.copied": "Copiato!",
|
||||||
|
"diagnostics.copy-to-clipboard": "Copia negli appunti",
|
||||||
|
"diagnostics.found-config": "Configurazione trovata",
|
||||||
|
"diagnostics.found-key": "Chiave trovata",
|
||||||
|
"diagnostics.generate-browser-info": "Genera informazioni del browser",
|
||||||
|
"diagnostics.generate-sos-report": "Genera rapporto SOS",
|
||||||
|
"diagnostics.get-support": "Ottenere supporto",
|
||||||
|
"diagnostics.get-support-description": "Se hai problemi con OliveTin e vuoi presentare una richiesta di supporto, sarebbe molto utile includere un sosreport da questa pagina.",
|
||||||
|
"diagnostics.sos-report": "Rapporto SOS",
|
||||||
|
"diagnostics.sos-report-description": "Questa sezione ti consente di generare un rapporto dettagliato della tua configurazione e ambiente. È una buona idea includere questo quando si presenta una richiesta di supporto.",
|
||||||
|
"diagnostics.sos-report-docs": "Documentazione sosreport",
|
||||||
|
"diagnostics.ssh": "SSH",
|
||||||
|
"diagnostics.unknown": "Sconosciuto",
|
||||||
|
"diagnostics.useragent-data-error": "Errore nel recupero di userAgentData",
|
||||||
|
"diagnostics.where-to-find-help": "Dove trovare aiuto",
|
||||||
"docs": "Documentazione",
|
"docs": "Documentazione",
|
||||||
"language-dialog.browser-languages": "Lingue del browser",
|
"language-dialog.browser-languages": "Lingue del browser",
|
||||||
"language-dialog.close": "Chiudi",
|
"language-dialog.close": "Chiudi",
|
||||||
|
|
@ -119,6 +187,23 @@
|
||||||
},
|
},
|
||||||
"zh-Hans-CN": {
|
"zh-Hans-CN": {
|
||||||
"connected": "已连接",
|
"connected": "已连接",
|
||||||
|
"diagnostics.browser-info": "浏览器信息",
|
||||||
|
"diagnostics.browser-info-description": "此部分允许您生成浏览器信息的详细报告。这在排查浏览器特定问题时很有帮助。",
|
||||||
|
"diagnostics.copied": "已复制!",
|
||||||
|
"diagnostics.copy-to-clipboard": "复制到剪贴板",
|
||||||
|
"diagnostics.found-config": "找到配置",
|
||||||
|
"diagnostics.found-key": "找到密钥",
|
||||||
|
"diagnostics.generate-browser-info": "生成浏览器信息",
|
||||||
|
"diagnostics.generate-sos-report": "生成 SOS 报告",
|
||||||
|
"diagnostics.get-support": "获取支持",
|
||||||
|
"diagnostics.get-support-description": "如果您在使用 OliveTin 时遇到问题并希望提交支持请求,从本页面包含 sosreport 将非常有帮助。",
|
||||||
|
"diagnostics.sos-report": "SOS 报告",
|
||||||
|
"diagnostics.sos-report-description": "此部分允许您生成配置和环境的详细报告。在提交支持请求时包含此信息是个好主意。",
|
||||||
|
"diagnostics.sos-report-docs": "sosreport 文档",
|
||||||
|
"diagnostics.ssh": "SSH",
|
||||||
|
"diagnostics.unknown": "未知",
|
||||||
|
"diagnostics.useragent-data-error": "检索 userAgentData 时出错",
|
||||||
|
"diagnostics.where-to-find-help": "在哪里找到帮助",
|
||||||
"docs": "文档",
|
"docs": "文档",
|
||||||
"language-dialog.browser-languages": "浏览器语言",
|
"language-dialog.browser-languages": "浏览器语言",
|
||||||
"language-dialog.close": "关闭",
|
"language-dialog.close": "关闭",
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,23 @@ translations:
|
||||||
logs.exit-code: Ausführungscode
|
logs.exit-code: Ausführungscode
|
||||||
logs.completed: Abgeschlossen
|
logs.completed: Abgeschlossen
|
||||||
logs.clear-filter: Suchfilter löschen
|
logs.clear-filter: Suchfilter löschen
|
||||||
|
diagnostics.get-support: Unterstützung erhalten
|
||||||
|
diagnostics.get-support-description: Wenn Sie Probleme mit OliveTin haben und eine Support-Anfrage stellen möchten, wäre es sehr hilfreich, einen sosreport von dieser Seite einzufügen.
|
||||||
|
diagnostics.where-to-find-help: Wo Sie Hilfe finden
|
||||||
|
diagnostics.ssh: SSH
|
||||||
|
diagnostics.found-key: Schlüssel gefunden
|
||||||
|
diagnostics.found-config: Konfiguration gefunden
|
||||||
|
diagnostics.sos-report: SOS-Bericht
|
||||||
|
diagnostics.sos-report-description: Dieser Abschnitt ermöglicht es Ihnen, einen detaillierten Bericht über Ihre Konfiguration und Umgebung zu erstellen. Es ist eine gute Idee, dies bei einer Support-Anfrage einzufügen.
|
||||||
|
diagnostics.sos-report-docs: sosreport Dokumentation
|
||||||
|
diagnostics.generate-sos-report: SOS-Bericht erstellen
|
||||||
|
diagnostics.browser-info: Browser-Informationen
|
||||||
|
diagnostics.browser-info-description: Dieser Abschnitt ermöglicht es Ihnen, einen detaillierten Bericht über Ihre Browser-Informationen zu erstellen. Dies kann bei der Fehlerbehebung von browser-spezifischen Problemen hilfreich sein.
|
||||||
|
diagnostics.generate-browser-info: Browser-Informationen erstellen
|
||||||
|
diagnostics.copy-to-clipboard: In Zwischenablage kopieren
|
||||||
|
diagnostics.copied: Kopiert!
|
||||||
|
diagnostics.unknown: Unbekannt
|
||||||
|
diagnostics.useragent-data-error: Fehler beim Abrufen von userAgentData
|
||||||
return-to-index: Zurück zur Startseite
|
return-to-index: Zurück zur Startseite
|
||||||
search-filter: Filter aktuelle Seite
|
search-filter: Filter aktuelle Seite
|
||||||
language-dialog.title: Sprache auswählen
|
language-dialog.title: Sprache auswählen
|
||||||
|
|
|
||||||
17
lang/en.yaml
17
lang/en.yaml
|
|
@ -21,6 +21,23 @@ translations:
|
||||||
logs.exit-code: Exit code
|
logs.exit-code: Exit code
|
||||||
logs.completed: Completed
|
logs.completed: Completed
|
||||||
logs.clear-filter: Clear search filter
|
logs.clear-filter: Clear search filter
|
||||||
|
diagnostics.get-support: Get support
|
||||||
|
diagnostics.get-support-description: If you are having problems with OliveTin and want to raise a support request, it would be very helpful to include a sosreport from this page.
|
||||||
|
diagnostics.where-to-find-help: Where to find help
|
||||||
|
diagnostics.ssh: SSH
|
||||||
|
diagnostics.found-key: Found Key
|
||||||
|
diagnostics.found-config: Found Config
|
||||||
|
diagnostics.sos-report: SOS Report
|
||||||
|
diagnostics.sos-report-description: This section allows you to generate a detailed report of your configuration and environment. It is a good idea to include this when raising a support request.
|
||||||
|
diagnostics.sos-report-docs: sosreport Documentation
|
||||||
|
diagnostics.generate-sos-report: Generate SOS Report
|
||||||
|
diagnostics.browser-info: Browser Info
|
||||||
|
diagnostics.browser-info-description: This section allows you to generate a detailed report of your browser information. This can be helpful when troubleshooting browser-specific issues.
|
||||||
|
diagnostics.generate-browser-info: Generate Browser Info
|
||||||
|
diagnostics.copy-to-clipboard: Copy to Clipboard
|
||||||
|
diagnostics.copied: Copied!
|
||||||
|
diagnostics.unknown: Unknown
|
||||||
|
diagnostics.useragent-data-error: Error retrieving userAgentData
|
||||||
return-to-index: Return to index
|
return-to-index: Return to index
|
||||||
search-filter: Filter current page
|
search-filter: Filter current page
|
||||||
language-dialog.title: Select Language
|
language-dialog.title: Select Language
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,23 @@ translations:
|
||||||
logs.exit-code: Código de salida
|
logs.exit-code: Código de salida
|
||||||
logs.completed: Completado
|
logs.completed: Completado
|
||||||
logs.clear-filter: Limpiar filtro de búsqueda
|
logs.clear-filter: Limpiar filtro de búsqueda
|
||||||
|
diagnostics.get-support: Obtener soporte
|
||||||
|
diagnostics.get-support-description: Si tiene problemas con OliveTin y desea presentar una solicitud de soporte, sería muy útil incluir un sosreport de esta página.
|
||||||
|
diagnostics.where-to-find-help: Dónde encontrar ayuda
|
||||||
|
diagnostics.ssh: SSH
|
||||||
|
diagnostics.found-key: Clave encontrada
|
||||||
|
diagnostics.found-config: Configuración encontrada
|
||||||
|
diagnostics.sos-report: Informe SOS
|
||||||
|
diagnostics.sos-report-description: Esta sección le permite generar un informe detallado de su configuración y entorno. Es una buena idea incluir esto al presentar una solicitud de soporte.
|
||||||
|
diagnostics.sos-report-docs: Documentación de sosreport
|
||||||
|
diagnostics.generate-sos-report: Generar informe SOS
|
||||||
|
diagnostics.browser-info: Información del navegador
|
||||||
|
diagnostics.browser-info-description: Esta sección le permite generar un informe detallado de su información del navegador. Esto puede ser útil al solucionar problemas específicos del navegador.
|
||||||
|
diagnostics.generate-browser-info: Generar información del navegador
|
||||||
|
diagnostics.copy-to-clipboard: Copiar al portapapeles
|
||||||
|
diagnostics.copied: ¡Copiado!
|
||||||
|
diagnostics.unknown: Desconocido
|
||||||
|
diagnostics.useragent-data-error: Error al recuperar userAgentData
|
||||||
return-to-index: Volver a la página principal
|
return-to-index: Volver a la página principal
|
||||||
search-filter: Filtrar página actual
|
search-filter: Filtrar página actual
|
||||||
language-dialog.title: Seleccionar idioma
|
language-dialog.title: Seleccionar idioma
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,23 @@ translations:
|
||||||
logs.exit-code: Codice di uscita
|
logs.exit-code: Codice di uscita
|
||||||
logs.completed: Completato
|
logs.completed: Completato
|
||||||
logs.clear-filter: Cancella filtro di ricerca
|
logs.clear-filter: Cancella filtro di ricerca
|
||||||
|
diagnostics.get-support: Ottenere supporto
|
||||||
|
diagnostics.get-support-description: Se hai problemi con OliveTin e vuoi presentare una richiesta di supporto, sarebbe molto utile includere un sosreport da questa pagina.
|
||||||
|
diagnostics.where-to-find-help: Dove trovare aiuto
|
||||||
|
diagnostics.ssh: SSH
|
||||||
|
diagnostics.found-key: Chiave trovata
|
||||||
|
diagnostics.found-config: Configurazione trovata
|
||||||
|
diagnostics.sos-report: Rapporto SOS
|
||||||
|
diagnostics.sos-report-description: Questa sezione ti consente di generare un rapporto dettagliato della tua configurazione e ambiente. È una buona idea includere questo quando si presenta una richiesta di supporto.
|
||||||
|
diagnostics.sos-report-docs: Documentazione sosreport
|
||||||
|
diagnostics.generate-sos-report: Genera rapporto SOS
|
||||||
|
diagnostics.browser-info: Informazioni del browser
|
||||||
|
diagnostics.browser-info-description: Questa sezione ti consente di generare un rapporto dettagliato delle informazioni del tuo browser. Questo può essere utile durante la risoluzione dei problemi specifici del browser.
|
||||||
|
diagnostics.generate-browser-info: Genera informazioni del browser
|
||||||
|
diagnostics.copy-to-clipboard: Copia negli appunti
|
||||||
|
diagnostics.copied: Copiato!
|
||||||
|
diagnostics.unknown: Sconosciuto
|
||||||
|
diagnostics.useragent-data-error: Errore nel recupero di userAgentData
|
||||||
return-to-index: Torna alla pagina principale
|
return-to-index: Torna alla pagina principale
|
||||||
search-filter: Filtra la pagina corrente
|
search-filter: Filtra la pagina corrente
|
||||||
language-dialog.title: Seleziona lingua
|
language-dialog.title: Seleziona lingua
|
||||||
|
|
|
||||||
|
|
@ -26,4 +26,21 @@ translations:
|
||||||
logs.blocked: 阻塞
|
logs.blocked: 阻塞
|
||||||
logs.exit-code: 退出代码
|
logs.exit-code: 退出代码
|
||||||
logs.completed: 完成
|
logs.completed: 完成
|
||||||
logs.clear-filter: 清除搜索筛选器
|
logs.clear-filter: 清除搜索筛选器
|
||||||
|
diagnostics.get-support: 获取支持
|
||||||
|
diagnostics.get-support-description: 如果您在使用 OliveTin 时遇到问题并希望提交支持请求,从本页面包含 sosreport 将非常有帮助。
|
||||||
|
diagnostics.where-to-find-help: 在哪里找到帮助
|
||||||
|
diagnostics.ssh: SSH
|
||||||
|
diagnostics.found-key: 找到密钥
|
||||||
|
diagnostics.found-config: 找到配置
|
||||||
|
diagnostics.sos-report: SOS 报告
|
||||||
|
diagnostics.sos-report-description: 此部分允许您生成配置和环境的详细报告。在提交支持请求时包含此信息是个好主意。
|
||||||
|
diagnostics.sos-report-docs: sosreport 文档
|
||||||
|
diagnostics.generate-sos-report: 生成 SOS 报告
|
||||||
|
diagnostics.browser-info: 浏览器信息
|
||||||
|
diagnostics.browser-info-description: 此部分允许您生成浏览器信息的详细报告。这在排查浏览器特定问题时很有帮助。
|
||||||
|
diagnostics.generate-browser-info: 生成浏览器信息
|
||||||
|
diagnostics.copy-to-clipboard: 复制到剪贴板
|
||||||
|
diagnostics.copied: 已复制!
|
||||||
|
diagnostics.unknown: 未知
|
||||||
|
diagnostics.useragent-data-error: 检索 userAgentData 时出错
|
||||||
Loading…
Reference in New Issue